Receiving EAOutputStream Error With Zebra iOS and Link-OS SDK

Article ID: 02083920

Details


 

Symptoms

When using the Link-OS SDK to communicate with Bluetooth printers, the following error may be seen:

"EAOutputStream.m:-[EAOutputStream write:maxLength:] - 282 failed to write because stream does not have space available."

Applies To

Link-OS SDK developed for ZPL compatible printers
Excludes 2824 Series, 2844 Series, S4M (E53), 888 Series, MZ Series, ZQ110, EM220, EM220II, and Kiosk

Cause or Overview

This error is seen due to an application using the Link-OS SDK from the GUI thread.

Solution

Ensure that you have installed the latest version of the **Link-OS SDK from our website: Read More>>
**Note: The Link-OS SDK page references specific models but the SDK supports all current ZPL and CPCL compatible printers. Link-OS specific features are only supported by the listed Link-OS printers

In order to use the Link-OS SDK outside of the GUI thread and resolve the error, use iOS's Grand Central Dispatch (GCD). Included with the SDK is documentation for how to use GCD. This can be found in the following location on Windows machines: 

C:\Program Files\Zebra Technologies\link_os_sdk\iOS\v1.2.7587\doc\html\interface_mfi_bt_printer_connection.html

When using Mac OS X, this documentation will be found in the following location (where "userName" is your username):

/Users/userName/Applications/link_os_sdk/iOS/v1.2.7587/doc/html/interface_mfi_bt_printer_connection.html
 
Under the "Detailed Description" section, you will find a sample function called "sampleWithGCD" that will demonstrate how to use the SDK with GCD.
 
It is also important to remember the following with your iOS application:
  • This will only work with Zebra printers which have the Made For iPod/iPhone certification
  • You need to include the External Accessory framework in your project to be able to use this class
  • You need to include the Zebra printer protocol string "com.zebra.rawport" in your info.plist file under "Supported external accessory protocols"
  • You need to Set the key "Required Background modes" to "App Communicates with an accessory" in your app's plist file