3.1. SMPort
プリンターとの通信を行うためのクラスです。
プロパティ
名称
説明
endCheckedBlock メソッドのタイムアウト値(ミリ秒指定)
用紙保持制御のタイムアウト時間を設定します。
メソッド
名称
説明
プリンターと通信するためのポートをオープンします。
プリンターと通信するためのポートをクローズします。
デバイスと接続可能なプリンターを検索します。
プリンターにデータを書き込みます。
プリンターからデータを読み込みます。
プリンターのステータスを取得します。
印刷終了監視を開始します。
印刷終了監視を終了します。
指定されたBluetoothプリンターとのコネクションを切断します。
プリンターのモデル名とファームウェアバージョンを取得します。
ポートをオープンしたときのportNameを取得します。
ポートをオープンしたときのportSettingsを取得します。
内部制御およびAPIのタイムアウト値(ミリ秒指定)を取得します。
指定されたBluetooth/Bluetooth Low EnergyプリンターのiOSデバイスとの接続状態を取得します。
StarIOライブラリのバージョン番号を取得します。
モデル:SMPort クラス
モデル/エミュレーション |
mC-Print2 | mC-Print3 | mC-Label3 | mPOP | FVP10 | TSP100IV | TSP100IV SK | TSP100IIIW | TSP100IIIBI | TSP100IIIU | TSP100ECO | TSP100U | TSP100GT | TSP100LAN | TSP650II | TSP650IISK | TSP700II | TSP800II | SM-S210i | SM-S220i | SM-S230i | SM-T300i/T300 | SM-T400i | BSC10II | BSC10 | SM-L200 | SM-L300 | SP700 | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
StarPRNT | StarPRNT | StarPRNT | StarPRNT | StarLine | StarPRNT | StarPRNT | StarGraphic | StarGraphic | StarGraphic | StarGraphic | StarGraphic | StarGraphic | StarGraphic | StarLine | StarLine | StarLine | StarLine | StarPRNT | EscPosMobile | StarPRNT | EscPosMobile | StarPRNT | EscPosMobile | StarPRNT | EscPosMobile | StarPRNT | EscPosMobile | StarPRNT | EscPos | StarPRNT | StarPRNT | StarDotImpact | |
getPort |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
releasePort |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
searchPrinter |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
writePort |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
readPort |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
getParsedStatus |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
beginCheckedBlock |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔[1] | ✔ | ✔ | ✔ | ✔[1] | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
endCheckedBlock |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔[1] | ✔ | ✔ | ✔ | ✔[1] | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
disconnect |
- | - | - | ✔[5] | ✔ | - | - | - | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | ✔ |
holdPrintTimeoutMillis |
- | - | ✔ | - | - | - | ✔ | - | - | - | - | - | - | - | - | ✔ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
getFirmwareInformation |
✔ | ✔ | ✔ | ✔ | ✔[2] | ✔ | ✔ | ✔[2][3] | ✔[2][3] | ✔[2][3] | ✔[2][3] | ✔[2][3] | ✔[2][3] | ✔[2][3] | ✔[2] | ✔[2] | ✔[2] | ✔[2] | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔[2] |
portName |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
portSettings |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
timeoutMillis |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
connected |
✔ | ✔ | ✔ | ✔ | ✔ | - | - | - | ✔ | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | - | - | ✔ | ✔ | ✔ |
StarIOVersion |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
[1] | SM-S220i はファームウェアバージョン 2.1 未満、SM-T300 はファームウェアバージョン 2.4 未満では印刷データ送信完了の確認はできますが、印刷終了監視はできません。 |
[2] | Apple AirMac シリーズを使用する場合、USBモデルは空文字を返します。 |
[3] | TSP100IIIU, TSP100U, TSP100GT, TSP100ECO の場合、モデル名は TSP100 になります。TSP100U, TSP100GT, TSP100ECO, TSP100LAN はファームウェアバージョンを取得できません。TSP100IIILAN, TSP100IIIW, TSP100IIIU はライブラリバージョン 2.2.7 以降が必要です。 |
[5] | POP10CBIでは利用できません。 |
3.1.1. 印刷処理フロー
次の印刷処理フローの手順に沿って印刷を行う方法を示します。
実装例
unsigned char command[] = {0x41, 0x42, 0x43, 0x44, 0x1B, 0x7A, 0x00, 0x1B, 0x64, 0x02}; StarPrinterStatus_2 printerStatus; SMPort *port = nil; while (YES) { NSError *error = nil; // Open port port = [SMPort getPort: "BT:Star Micronics" :@"" :10000 :&error]; if (port == nil) { break; /* Some error occurred. */ } // Start to check the completion of printing [port beginCheckedBlock:&printerStatus :2 :&error]; if (error != nil) { break; /* Some error occurred. */ } if (printerStatus.offline == SM_TRUE) { break; // The printer is offline. } uint32_t total = 0; while (total < (uint32_t) commands.length) { // Send print data uint32_t written = [port writePort:command :total : sizeof(command) - total :&error]; if (error != nil) { break; /* Some error occurred. */ } total += written; } // Stop to check the completion of printing [port endCheckedBlock:&printerStatus :2 :&error]; if (error != nil) { break; /* Some error occurred. */ } if (printerStatus.offline == SM_TRUE) { break; // The printer is offline. } // Success break; } if (port != nil) { // Close port [SMPort releasePort:port]; port = nil; }
Communication.mを参照ください
3.1.2. endCheckedBlockTimeoutMillis
endCheckedBlock メソッドのタイムアウト時間を指定します。(単位:ミリ秒)
印刷に時間がかかる場合、この値を大きくする事で endCheckedBlock メソッドの印刷完了待ち時間を伸ばす事ができます。
宣言
@property (assign, readwrite, nonatomic) u_int32_t endCheckedBlockTimeoutMillis;
重要
endCheckedBlock メソッドのタイムアウト時間の初期値は、getPort メソッドの引数で指定したタイムアウト時間と同じになります。指定した時間が10秒未満の場合、タイムアウトは10秒になります。
また、getPort メソッドのportSettingsパラメータで"データタイムアウト機能の設定"を使用する場合、本メソッドで設定するタイムアウト時間には、データタイムアウト機能の指定時間より3秒以上長くなるように設定してください。 3秒未満に設定した場合、内部制御により自動的に3秒長くなるように設定されます。
3.1.3. holdPrintTimeoutMillis
added in version 2.8.0
用紙保持制御のタイムアウト時間を示します。(単位:ミリ秒)
宣言
@property(assign, readwrite, nonatomic) u_int32_t holdPrintTimeoutMillis;
3.1.4. getPort
added in version 2.6.0
プリンターと通信するためのポートをオープンします。
宣言
+ (SMPort *)getPort:(NSString *)portName :(NSString *)portSettings :(u_int32_t)ioTimeoutMillis :(NSError **)error;
引数
名称
説明
型
portName
プリンターと通信するためのポートを特定する文字列
NSString *
portSettings
プリンターとの接続設定情報
NSString *
ioTimeoutMillis
内部制御および各APIのタイムアウト時間
u_int32_t
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError **
戻り値
説明
型
SMPort オブジェクトポートオープンに失敗した場合、または既にオープン済みの場合は、nil
が返されます
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生したとき
SMStarIOResultCodeInUseError
プリンターから接続拒否されたとき(他ホストが接続中など)
印刷の手順については 印刷処理フロー を参照ください。
portName 引数
インターフェイス |
portName |
説明 |
例 |
ライブラリバージョン |
---|---|---|---|---|
Bluetooth | BT:iOS Port Name | iOSポート名で指定する場合 |
"BT:Star Micronics" | 2.2.3+ |
BT:Serial Number[1] | プリンターのシリアルナンバーで指定する場合 |
"BT:2580217090400032" | 2.4.0+ | |
BT:BD Address[2] | Bluetoothデバイスアドレスで指定する場合 |
"BT:00:12:F3:1E:2B:72" | 2.4.0+ | |
Bluetooth Low Energy | BLE:Device Name | Bluetoothデバイス名で指定する場合 |
"BLE:STAR L200-00001" | 2.2.3+ |
BLE:BD Address | Bluetoothデバイスアドレスで指定する場合 |
"BLE:00:11:62:00:00:00" | 2.2.3+ | |
Ethernet/Wireless LAN | TCP:IP Address | IPアドレスで指定する場合 |
"TCP:192.168.1.100" | 2.2.3+ |
USB[3] | USB:Device Name | iOSポート名で指定する場合 |
"USB:TSP100" | 2.2.3+ |
USB:Serial Number | プリンターのシリアルナンバーで指定する場合 |
"USB:2580217090400032" | 2.4.0+ | |
USB/Bluetooth/LAN | AutoSwitch: | インターフェイス自動切り替え機能 を使用する場合 |
"AutoSwitch:" | 2.8.0+ |
[1] | mC-Print3/mC-Print2/mC-Label3/mPOPのみ対応です。 |
[2] | TSP100IIIBIのみ対応です。 |
[3] | iOSデバイスとmPOPをUSB接続する場合、 |
重要
Bluetooth, USB(Lightning)両対応モデルでは、BluetoothとUSBは区別されず、同じ挙動となります。Bluetooth接続中にLightningケーブル接続を行うと、自動的にBluetoothは切断されLightning経由の通信となりますが、この時portNameを "BT:"
から "USB:"
に変更する必要はありません。
インターフェイス自動切り替え機能
プリンターへ接続するためのポートを自動で検出する機能です。以下の優先順位で接続できるポートを検出します
USB
Bluetooth
LAN
本機能を使用するための手順は以下の通りです。
iOSデバイス とプリンターをBluetoothもしくはLANで接続できる環境を構築
iOSデバイス とプリンターのBluetoothペアリングを行う
iOSデバイス とプリンターを同じネットワーク(同一セグメント)に接続する
iOSデバイス とプリンターをUSBで接続
portNameに"AutoSwitch:"を指定し、本メソッドを実行
iOSデバイス とプリンターとのUSB接続が正常である場合は、3の手順に成功します。失敗した場合は iOSデバイス とプリンターのUSB接続をご確認の上、再度3の手順をやり直してください。
以降、引き続きportNameに"AutoSwitch:"を指定することで、 iOSデバイス とプリンターがUSBで接続されていない場合でも自動で他のインターフェイスと接続されます。
使用するプリンターを変更する場合は、1の手順からやり直してください。
本機能の使用が推奨されるケースは以下の通りです。
USBを含む複数のインターフェイスを使用可能な環境を構築することができる
運用中に接続先インターフェイスが頻繁に変更される場合
プログラム上で接続先ポートを意識したくない場合
重要
プリンターのUSBシリアルナンバー設定は有効に設定してください。
接続先プリンター以外のプリンターとのUSB接続、またBluetoothペアリング設定をしないようにしてください。
LANインターフェイスを使用する場合は、UDP通信ポート22222を使用できる環境を構築してください。
警告
本機能を使用することにより、ポートを直接指定するよりも印字開始までの時間が遅くなるなどの場合があります。
本機能をサポートするモデルは以下の通りです。
モデル
ファームウェアバージョン
mC-Print2 1.0+ mC-Print3 1.0+ mC-Label3 1.0+ 警告
MCP20/MCP30は除く
portSetting 引数
portSettings文字列は、以下のフォーマットで指定してください。
各モデルで適用すべき識別子 + セミコロン(';')区切りのオプション指定文字列
各モデルで適用すべき識別子は下表のとおりです。
モデル
エミュレーション
識別子
mC-Print2 StarPRNT "" mC-Print3 StarPRNT "" mC-Label3 StarPRNT "" mPOP StarPRNT "" FVP10 StarLine "" TSP100IV StarPRNT "" TSP100IV SK StarPRNT "" TSP100IIIW StarGraphic "" TSP100IIIBI StarGraphic "" TSP100IIIU StarGraphic "" TSP100IIU+ StarGraphic "" TSP100ECO StarGraphic "" TSP100U StarGraphic "" TSP100GT StarGraphic "" TSP100LAN StarGraphic "" TSP650II StarLine "" TSP650IISK StarLine "" TSP700II StarLine "" TSP800II StarLine "" SM-S210i StarPRNT "Portable" EscPosMobile "Portable;escpos" or "mini" SM-S220i StarPRNT "Portable" EscPosMobile "Portable;escpos" or "mini" SM-S230i StarPRNT "Portable" EscPosMobile "Portable;escpos" or "mini" SM-T300i/T300 StarPRNT "Portable" EscPosMobile "Portable;escpos" or "mini" SM-T400i StarPRNT "Portable" EscPosMobile "Portable;escpos" or "mini" BSC10II StarPRNT "" BSC10 EscPos "escpos" SM-L200 StarPRNT "Portable" SM-L300 StarPRNT "Portable" SP700 StarDotImpact "" オプション指定文字列は下表のとおりです。
インターフェイス
オプション指定文字列
説明
例
ライブラリバージョン
Bluetooth d[数値]
データタイムアウト機能のタイムアウト値設定を行います。
データタイムアウト機能をサポートするモデルで本オプションを指定しない場合は、データタイムアウト機能は有効で、タイムアウト値は3秒に設定されます。
タイムアウト時間の指定方法は、以下のとおりです。
[数値]に1から255を指定した場合:[数値]に指定した時間(単位:秒)
[数値]に0を指定した場合:データタイムアウトを無効にする
上記以外の場合:3秒
"d10" 2.2.3+ Ethernet/Wireless LAN l[数値](Lの小文字)
対象のプリンターが他ホストから使用中の場合に接続をリトライします。
リトライ時間の指定方法は、以下のとおりです。
"l10000" 2.4.0+ [ポート番号]
ポート番号(AirMac使用時のみ)
"9100" 2.2.3+ データタイムアウト機能
データタイムアウト機能とは、印刷中に指定した時間プリンターに対してデータが送られなかった場合に、残りの印字データを無視する機能です。この機能により、データ送信中にBluetooth接続が切断された場合に、次回の印刷が不正な内容になることを防ぐことができます。このオプションをサポートするモデルは以下のとおりです。モデル
ファームウェアバージョン
mC-Print2
1.0+
mC-Print3
1.0+
mC-Label3
1.0+
mPOP
1.0+
FVP10
2.0+
TSP100IIIBI
1.0+
TSP650II
2.0+
TSP650IISK
1.0+
TSP700II
5.0+
TSP800II
2.0+
portSettingsの引数指定例
プリンター接続環境
指定すべきportSettings
TSP650IIをデフォルト設定で使用する
""
mC-Print3をEthernetインターフェイスで、リトライ有効で使用する
";l10000"
SM-L200をデフォルトで使用する
"Portable"
TSP650IIのBluetoothインターフェイスで、印刷中に10秒間データが送られなかった場合にデータキャンセル機能を動作させる
";d10"
ioTimeoutMillis 引数
ioTimeoutMillis引数は、ミリ秒のタイムアウト値で、内部制御とAPIでの通信に使用されるものです。 このパラメーターは、APIが制限された時間内で完了することを保証しますが、 正確なタイムアウトの長さを保証するものではありません。
指定した時間が10秒未満の場合、タイムアウトは10秒になります。
portSettingsパラメーターで[データタイムアウト機能のタイムアウト値設定]を行う場合、 ioTimeoutMillis引数の値をデータタイムアウト機能のタイムアウト値の指定時間より3秒以上長くなるように設定してください。 3秒未満に設定した場合、内部制御により endCheckedBlock メソッドのタイムアウト時間は自動的に3秒長くなるように設定されます。
Apple AirMacシリーズのプリンター共有機能をご使用の場合
portNameには、AirMac シリーズのIPアドレスを指定してください。
例):
TCP:192.168.1.2
portSettingsには、ポート番号を指定します。
9100
〜9109
"を順に指定し、接続に成功した値をご使用ください。
SM-Lシリーズの注意事項
iOSデバイス でBluetooth Low Energyにて通信する場合、プリンターとの接続に時間がかかることがあります。 接続に失敗した場合は、接続が成功するまでリトライを行ってください。
また、接続時間を短縮したい場合は、プリンターとの接続が常に維持されるようアプリケーションを設計してください。
ただし、接続中のプリンターは他のアプリケーション、および他の iOSデバイス から検出することができなくなります。
3.1.5. releasePort
プリンターと通信するためのポートをクローズします。
宣言
+ (void) releasePort:(SMPort *)port;
引数
戻り値
なし
印刷の手順については 印刷処理フロー を参照ください。
警告
getPortを実行した後は、必ずreleasePortしてから次のgetPortを行ってください。
releasePortをせずに次のgetPortを行うと、 nil
が返されます。
3.1.6. searchPrinter
added in version 2.6.0
Starプリンターを検索し、検索結果を返します。
宣言
+ (NSArray *)searchPrinter:(NSString *)target :(NSError **)error;
引数
名称
説明
型
target
すべてのインターフェイスタイプ:"ALL:"
Bluetoothの場合:"BT:"
Bluetooth Low Energyの場合:"BLE:"
Ethernet/Wireless LANの場合:"TCP:"
USBの場合:"USB:"
NSString *
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError *
戻り値
説明
型
スター精密製プリンターの検索結果取得できる情報につきましては、 PortInfo クラスをご参照ください。NSArray *
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生した
実装例
NSArray *portInfoArray; NSError *error = nil; portInfoArray = [SMPort searchPrinter:@"ALL:" :&error]; if (error != nil) { // Some error occurred. } if (portInfoArray == nil) { return; } for (PortInfo *portInfo in portInfoArray) { NSLog(@"Port Name: %@", portInfo.portName); NSLog(@"MAC Address: %@", portInfo.macAddress); NSLog(@"Model Name: %@", portInfo.modelName); }
SearchPortViewController.mをご参照ください。
重要
本メソッドはデバイスを確実に検出することを保証するものではありません。
BluetoothとUSB(Lightning)の両方に対応するモデルでは、BluetoothとUSBは区別されません。実際の接続方法にかかわらず、target未指定あるいは
"BT:"
を指定した場合はBluetoothプリンター、"USB:"
を指定した場合はUSBプリンターとして検出されます。Bluetooth Low Energyインターフェイスを利用する場合、初めてsearchPrinterメソッドでプリンター情報を取得した際、portNameが
"BLE:"
となることがあります。この場合、一旦 getPort メソッドでプリンターに接続してください。以降、正しいデバイス名を取得および使用できるようになります。iOSデバイスとmPOPをUSB接続している場合、mPOPはBluetooth接続(例:
"BT:mPOP"
)として検出されます。そのため、targetには"BT:"
もしくは"All:"
を指定してください。
3.1.7. writePort
プリンターにデータを書き込みます。
宣言
- (u_int32_t)writePort:(u_int8_t const *)writeBuffer :(u_int32_t)offset :(u_int32_t)size :(NSError **)error;
引数
名称
説明
型
writeBuffer
書き込みたいデータを格納するbyte配列
u_int8_t const *
offset
writeBufferのどの位置から書き込み始めるかを指定するインデックス
u_int32_t
size
書き込むbyte数
u_int32_t
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError **
戻り値
説明
型
Bluetooth/Ethernet/Wireless LAN/USB インターフェイス実際に書き込まれたバイト数データが全て書き込めなかった時でも、本メソッドは成功します。アプリケーションは期待されるデータが全て読み取れるまで、本メソッドを複数回呼び出す必要があります。または、しきい値に達するまで再試行をするようにします。Bluetooth Low Energyインターフェイス成功時には、送信データのサイズが返ります。失敗時は0が返ります。u_int32_t
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生した
印刷の手順については 印刷処理フロー を参照ください。
3.1.8. readPort
プリンターからデータを読み込みます。 プリンターからRaw byteを読み込む必要がある場合のみ、本メソッドをご使用ください。
宣言
- (u_int32_t)readPort:(u_int8_t *)readBuffer :(u_int32_t)offset :(u_int32_t)size :(NSError **)error;
引数
名称
説明
型
readBuffer
データが読み込まれるbyte配列
u_int8_t *
offset
readBufferにデータを書き込み始めるインデックス
u_int32_t
size
読み込むbyte数
u_int32_t
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError **
戻り値
説明
型
実際に読み込まれたバイト数データを全て受信できなかった場合でも、本メソッドは成功します。アプリケーションは、期待するデータが全て受信できるまで本メソッドを複数回呼び出すか、しきい値に達するまで再試行する必要があります。u_int32_t
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生した
重要
StarIO.framework v2.4.0(StarPRNT SDK v5.6.0)より、LANプリンター使用時のreadPortの挙動が以下のように変更されています。
- readPort実行時に受信すべきデータが存在しなかった場合
v2.3.3以前:
PortException
をスローします。v2.4.0以降:
0
を返します。
3.1.9. getParsedStatus
プリンターのステータスを取得します。
宣言
- (NSUInteger)getParsedStatus:(void *)starPrinterStatus :(u_int32_t)level :(NSError **)error;
引数
名称
説明
型
starPrinterStatus
現在のプリンターステータスが格納されます。取得できるステータスの種類は、 StarPrinterStatus 構造体をご参照ください。void *
level
StarPrinterStatus構造体のレベル(0, 1, 2の指定が可能ですが、通常は2を指定します。)u_int32_t
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError **
戻り値
説明
型
成功時:1
失敗時:0
NSUInteger
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生した
実装例
StarPrinterStatus_2 printerStatus; NSError *error = nil; [port getParsedStatus: &printerStatus : 2 : &error]; if (error != nil) { // Some error occurred. } if (printerStatus.offline == SM_TRUE) { if (printerStatus.coverOpen == SM_TRUE) { // Cover is open. } else if (printerStatus.receiptPaperEmpty == SM_TRUE) { // Receipt paper is empty. } else { // The printer is offline. } } else { // The printer is online. }
DeviceStatusViewController.mを参照ください
3.1.10. beginCheckedBlock
endCheckedBlock メソッドとセットで使用し、印刷終了を監視します。
最後まで正しく印刷されたか確認したい場合、印刷データ送信の直前に本メソッドを、 印刷データ送信の直後に endCheckedBlock メソッドをそれぞれ実行します。
用紙保持制御を行う場合、本メソッドは用紙が抜き取られるまでブロックし、抜き取られると制御を返します。 holdPrintTimeoutMillis で指定したタイムアウト時間内に用紙が抜き取られない場合、エラーとなります。
宣言
- (NSUInteger)beginCheckedBlock:(void *)starPrinterStatus :(u_int32_t)level :(NSError **)error;
引数
名称
説明
型
starPrinterStatus
StarPrinterStatus構造体へのポインタ(StarPrinterStatus, StarPrinterStatus_1, StarPrinterStatus_2の指定が可能ですが、通常はStarPrinterStatus_2を指定します。)本メソッドの実行に成功した場合、現在のプリンターステータスが格納されます。void *
level
StarPrinterStatus構造体のレベル(0, 1, 2の指定が可能ですが、通常は2を指定します。)u_int32_t
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError **
戻り値
説明
型
成功時:1
失敗時:0
NSUInteger
エラーコード
値
説明
ライブラリバージョン
SMStarIOResultCodePaperPresentError
用紙保持制御のタイムアウトが発生した
2.8.0+
SMStarIOResultCodeFailedError
何らかのエラーが発生した
2.2.3+
実装例
beginCheckedBlock / endCheckedBlock による印刷終了監視処理の手順は、印刷処理フロー を参照ください。
3.1.11. endCheckedBlock
beginCheckedBlock メソッドとセットで使用し、印刷終了の監視を行います。
プリンターの状態を監視し、送信した印刷データの印刷が正常に完了する、印刷途中にプリンターの状態がオフラインになる、 endCheckedBlockTimeoutMillis で指定したタイムアウトが経過しエラーが発生すると、 制御を返します。印刷データ以外を送信した場合は、そのコマンドがプリンターで処理されると制御を返します。
宣言
- (NSUInteger)endCheckedBlock:(void *)starPrinterStatus :(u_int32_t)level :(NSError **)error;
引数
名称
説明
型
starPrinterStatus
StarPrinterStatus構造体へのポインタ(StarPrinterStatus, StarPrinterStatus_1, StarPrinterStatus_2の指定が可能ですが、通常はStarPrinterStatus_2を指定します。)本メソッドの実行に成功した場合、現在のプリンターステータスが格納されます。void *
level
StarPrinterStatus構造体のレベル(0, 1, 2の指定が可能ですが、通常は2を指定します。)u_int32_t
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError **
戻り値
説明
型
成功時:1
失敗時:0
NSUInteger
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生した
実装例
beginCheckedBlock / endCheckedBlock による印刷終了監視処理の手順は、印刷処理フロー を参照ください。
3.1.12. disconnect
指定されたBluetoothプリンターとのコネクションを切断します。
コネクションの切断後、Bluetoothデバイスは再び他の iOSデバイス から接続することができるようになります。
宣言
- (BOOL)disconnect:(NSError **)error;
引数
名称
説明
型
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError *
戻り値
説明
型
切断成功・切断失敗本メソッドは、以下の場合に失敗となります。* getPortで指定したタイムアウト時間内に切断が完了しなかった場合* 接続先プリンターが切断機能に非対応の場合(モバイルプリンター等)Ethernetデバイスに対しては何も行いません。Ethernetデバイスに対して実行した場合は常に YES を返します。BOOL
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生した
3.1.13. getFirmwareInformation
プリンターのモデル名とファームウェアバージョンを取得します。
宣言
- (NSDictionary *)getFirmwareInformation:(NSError **)error;
引数
名称
説明
型
error
エラー発生時にはエラー情報が格納されます。codeプロパティにエラーコードがセットされています。NSError *
戻り値
説明
型
ファームウェア情報取得結果のNSDictionary戻り値のDictionaryのキーに@"ModelName"
を設定することでモデル名を、@"FirmwareVersion"
を設定することでファームウェアのバージョンを取得できます。NSDictionary *
エラーコード
値
説明
SMStarIOResultCodeFailedError
何らかのエラーが発生した
3.1.14. portName
getPort メソッドで指定したportNameを取得します。
宣言
- (NSString *) portName;
3.1.15. portSettings
getPort メソッドで指定したportSettingsを取得します。
宣言
- (NSString *) portSettings;
3.1.16. timeoutMillis
getPort メソッドで指定したtimeoutMillisを取得します。
宣言
- (u_int32_t) timeoutMillis;
3.1.17. connected
プリンターがデバイスと接続されていれば YES を、未接続の場合は NO を返します。
宣言
- (BOOL) connected;
重要
Bluetooth/Bluetooth Low Energyインターフェイスのみ対応しています。 非対応のインターフェイスでは、常に YES を返します。
iOSデバイスの制限により、 Bluetooth/Bluetooth Low Energy通信が切断されてから本プロパティに反映されるまで5秒程度かかります。
3.1.18. StarIOVersion
StarIOライブラリのバージョンを取得します。
宣言
+ (NSString *)StarIOVersion;
引数
なし
戻り値
説明
型
StarIOライブラリのバージョン文字列
NSString *