3.1. SMPort

プリンターとの通信を行うためのクラスです。

  • メソッド

    名称

    説明

    getPort

    プリンターと通信するためのポートをオープンします。

    releasePort

    プリンターと通信するためのポートをクローズします。

    searchPrinter

    デバイスと接続可能なプリンターを検索します。

    writePort

    プリンターにデータを書き込みます。

    readPort

    プリンターからデータを読み込みます。

    getParsedStatus

    プリンターのステータスを取得します。

    beginCheckedBlock

    印刷終了監視を開始します。

    endCheckedBlock

    印刷終了監視を終了します。

    disconnect

    指定されたBluetoothプリンターとのコネクションを切断します。

    getFirmwareInformation

    プリンターのモデル名とファームウェアバージョンを取得します。

    portName

    ポートをオープンしたときのportNameを取得します。

    portSettings

    ポートをオープンしたときのportSettingsを取得します。

    timeoutMillis

    内部制御およびAPIのタイムアウト値(ミリ秒指定)を取得します。

    connected

    指定されたBluetooth/Bluetooth Low EnergyプリンターのiOSデバイスとの接続状態を取得します。

    StarIOVersion

    StarIOライブラリのバージョン番号を取得します。

  • モデル:SMPort クラス

モデル/エミュレーション

mC-Print2 mC-Print3 mC-Label3 mPOP FVP10 TSP100IV TSP100IV SK TSP100IIIW TSP100IIIBITSP100IIIU TSP100ECO TSP100U TSP100GTTSP100LAN TSP650II TSP650IISK TSP700II TSP800IISM-S210i SM-S220i SM-S230i SM-T300i/T300 SM-T400i 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 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. 印刷処理フロー

次の印刷処理フローの手順に沿って印刷を行う方法を示します。

../_images/port_flow.png
  • 実装例

    var command: [UInt8] = [0x41, 0x42, 0x43, 0x44, 0x1b, 0x7a, 0x00, 0x1b, 0x64, 0x02]
    
    while true {
        var port : SMPort
    
        do {
        // Open port
        port = try SMPort.getPort(portName: "BT:Star Micronics", portSettings: "", ioTimeoutMillis: 10000)
    
        defer {
            // Close port
            SMPort.release(port)
        }
    
        var printerStatus: StarPrinterStatus_2 = StarPrinterStatus_2()
    
        // Start to check the completion of printing
        try port.beginCheckedBlock(starPrinterStatus: &printerStatus, level: 2)
    
        if printerStatus.offline == sm_true {
            break    // The printer is offline.
        }
    
        var total: UInt32 = 0
    
        while total < UInt32(command.count) {
            var written: UInt32 = 0
    
            // Send print data
            try port.write(writeBuffer: command, offset: total, size: UInt32(command.count) - total, numberOfBytesWritten: &written)
    
            total += written
        }
    
        // Stop to check the completion of printing
        try port.endCheckedBlock(starPrinterStatus: &printerStatus, level: 2)
    
        if printerStatus.offline == sm_true {
            break    // The printer is offline.
        }
    
        // Success
        break
        }
        catch let error as NSError {
        break    // Some error occurred.
        }
    }
    

    Communication.swiftを参照ください

3.1.2. endCheckedBlockTimeoutMillis

endCheckedBlock メソッドのタイムアウト時間を指定します。(単位:ミリ秒)

印刷に時間がかかる場合、この値を大きくする事で endCheckedBlock メソッドの印刷完了待ち時間を伸ばす事ができます。

  • 宣言

    open var endCheckedBlockTimeoutMillis: UInt32
    

重要

endCheckedBlock メソッドのタイムアウト時間の初期値は、getPort メソッドの引数で指定したタイムアウト時間と同じになります。指定した時間が10秒未満の場合、タイムアウトは10秒になります。

また、getPort メソッドのportSettingsパラメータで"データタイムアウト機能の設定"を使用する場合、本メソッドで設定するタイムアウト時間には、データタイムアウト機能の指定時間より3秒以上長くなるように設定してください。 3秒未満に設定した場合、内部制御により自動的に3秒長くなるように設定されます。

3.1.3. holdPrintTimeoutMillis

added in version 2.8.0

用紙保持制御のタイムアウト時間を示します。(単位:ミリ秒)

  • 宣言

    open var holdPrintTimeoutMillis: UInt32
    

3.1.4. getPort

added in version 2.6.0

プリンターと通信するためのポートをオープンします。

  • 宣言

    open class func getPort(portName: String!, portSettings: String!, ioTimeoutMillis: UInt32) throws -> SMPort
    open class func getPort(_ portName: String!, _ portSettings: String!, _ ioTimeoutMillis: UInt32, _ error: NSErrorPointer) -> SMPort!
    
  • 引数

    名称

    説明

    portName

    プリンターと通信するためのポートを特定する文字列

    String

    portSettings

    プリンターとの接続設定情報

    String

    ioTimeoutMillis

    内部制御および各APIのタイムアウト時間

    UInt32

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    SMPort オブジェクト
    ポートオープンに失敗した場合、または既にオープン済みの場合は、 nil が返されます

    SMPort

  • エラーコード

    説明

    SMStarIOResultCodeFailedError

    何らかのエラーが発生したとき

    SMStarIOResultCodeInUseError

    プリンターから接続拒否されたとき(他ホストが接続中など)

印刷の手順については 印刷処理フロー を参照ください。

  1. 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接続する場合、"BT:" から始まるPortNameを使用してください。"USB:" から始まるPortNameは使用できません。

重要

Bluetooth, USB(Lightning)両対応モデルでは、BluetoothとUSBは区別されず、同じ挙動となります。Bluetooth接続中にLightningケーブル接続を行うと、自動的にBluetoothは切断されLightning経由の通信となりますが、この時portNameを "BT:" から "USB:" に変更する必要はありません。

  • インターフェイス自動切り替え機能

    プリンターへ接続するためのポートを自動で検出する機能です。以下の優先順位で接続できるポートを検出します

    1. USB

    2. Bluetooth

    3. LAN

    本機能を使用するための手順は以下の通りです。

    1. iOSデバイス とプリンターをBluetoothもしくはLANで接続できる環境を構築

      • iOSデバイス とプリンターのBluetoothペアリングを行う

      • iOSデバイス とプリンターを同じネットワーク(同一セグメント)に接続する

    2. iOSデバイス とプリンターをUSBで接続

    3. portNameに"AutoSwitch:"を指定し、本メソッドを実行

    4. iOSデバイス とプリンターとのUSB接続が正常である場合は、3の手順に成功します。失敗した場合は iOSデバイス とプリンターのUSB接続をご確認の上、再度3の手順をやり直してください。

    5. 以降、引き続き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は除く

  1. 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"
    BSC10 EscPos "escpos"
    SM-L200 StarPRNT "Portable"
    SM-L300 StarPRNT "Portable"
    SP700 StarDotImpact ""

    オプション指定文字列は下表のとおりです。

    インターフェイス

    オプション指定文字列

    説明

    ライブラリバージョン

    Bluetooth

    d[数値]

    データタイムアウト機能のタイムアウト値設定を行います。

    データタイムアウト機能をサポートするモデルで本オプションを指定しない場合は、データタイムアウト機能は有効で、タイムアウト値は3秒に設定されます。

    タイムアウト時間の指定方法は、以下のとおりです。

    1. [数値]に1から255を指定した場合:[数値]に指定した時間(単位:秒)

    2. [数値]に0を指定した場合:データタイムアウトを無効にする

    3. 上記以外の場合:3秒

    "d10"2.2.3+
    Ethernet/Wireless LAN

    l[数値](Lの小文字)

    対象のプリンターが他ホストから使用中の場合に接続をリトライします。

    リトライ時間の指定方法は、以下のとおりです。

    1. 数値を指定しない場合("l"のみ): getPort メソッドで指定したtimeout時間

    2. [数値]に0から300000を指定した場合:[数値]に指定した時間(単位:ミリ秒)

    3. [数値]に300001以上の値を指定した場合: getPort メソッドで指定したtimeout時間

    4. 上記以外の場合:リトライしない設定となります

    "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"

  1. ioTimeoutMillis 引数

    ioTimeoutMillis引数は、ミリ秒のタイムアウト値で、内部制御とAPIでの通信に使用されるものです。 このパラメーターは、APIが制限された時間内で完了することを保証しますが、 正確なタイムアウトの長さを保証するものではありません。

    指定した時間が10秒未満の場合、タイムアウトは10秒になります。

    portSettingsパラメーターで[データタイムアウト機能のタイムアウト値設定]を行う場合、 ioTimeoutMillis引数の値をデータタイムアウト機能のタイムアウト値の指定時間より3秒以上長くなるように設定してください。 3秒未満に設定した場合、内部制御により endCheckedBlock メソッドのタイムアウト時間は自動的に3秒長くなるように設定されます。

  1. Apple AirMacシリーズのプリンター共有機能をご使用の場合

    portNameには、AirMac シリーズのIPアドレスを指定してください。

    例): TCP:192.168.1.2

    portSettingsには、ポート番号を指定します。

    91009109 "を順に指定し、接続に成功した値をご使用ください。

  1. SM-Lシリーズの注意事項

    iOSデバイス でBluetooth Low Energyにて通信する場合、プリンターとの接続に時間がかかることがあります。 接続に失敗した場合は、接続が成功するまでリトライを行ってください。

    また、接続時間を短縮したい場合は、プリンターとの接続が常に維持されるようアプリケーションを設計してください。

    ただし、接続中のプリンターは他のアプリケーション、および他の iOSデバイス から検出することができなくなります。

3.1.5. releasePort

プリンターと通信するためのポートをクローズします。

  • 宣言

    open class func release(_ port: SMPort!)
    
  • 引数

    名称

    説明

    port

    以前に getPort メソッドにより作成された SMPort オブジェクト

    SMPort

  • 戻り値

    なし

印刷の手順については 印刷処理フロー を参照ください。

警告

getPortを実行した後は、必ずreleasePortしてから次のgetPortを行ってください。 releasePortをせずに次のgetPortを行うと、 nil が返されます。

3.1.6. searchPrinter

added in version 2.6.0

Starプリンターを検索し、検索結果を返します。

  • 宣言

    open class func searchPrinter(target: String!) throws -> [Any]
    open class func searchPrinter(_ target: String!, _ error: NSErrorPointer) -> [Any]!
    
  • 引数

    名称

    説明

    target

    すべてのインターフェイスタイプ: "ALL:"
    Bluetoothの場合: "BT:"
    Bluetooth Low Energyの場合: "BLE:"
    Ethernet/Wireless LANの場合: "TCP:"
    USBの場合: "USB:"

    String

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    スター精密製プリンターの検索結果
    取得できる情報につきましては、 PortInfo クラスをご参照ください。

    [Any]

  • エラーコード

    説明

    SMStarIOResultCodeFailedError

    何らかのエラーが発生した

  • 実装例

    var searchPrinterResult: [PortInfo]? = nil
    
    do {
        searchPrinterResult = try SMPort.searchPrinter(target: "ALL:") as? [PortInfo]
    }
    catch {
        // Some error occurred.
    }
    
    guard let portInfoArray: [PortInfo] = searchPrinterResult else {
        return
    }
    
    for portInfo: PortInfo in portInfoArray {
        print("Port Name: \(portInfo.portName ?? "")")
        print("MAC Address: \(portInfo.macAddress ?? "")")
        print("Model Name: \(portInfo.modelName ?? "")")
    }
    

    SearchPortViewController.swiftをご参照ください。

重要

  • 本メソッドはデバイスを確実に検出することを保証するものではありません。

  • 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

added in version 2.6.0

プリンターにデータを書き込みます。

  • 宣言

    open func write(writeBuffer: UnsafePointer<UInt8>!, offset: UInt32, size: UInt32, numberOfBytesWritten: UnsafeMutablePointer<UInt32>!) throws
    open func write(_ writeBuffer: UnsafePointer<UInt8>!, _ offSet: UInt32, _ size: UInt32, _ error: NSErrorPointer) -> UInt32
    
  • 引数

    名称

    説明

    writeBuffer

    書き込みたいデータを格納するbyte配列

    UnsafePointer<UInt8>

    offset

    writeBufferのどの位置から書き込み始めるかを指定するインデックス

    UInt32

    size

    書き込むbyte数

    UInt32

    numberOfBytesWritten

    Bluetooth/Ethernet/Wireless LAN/USB インターフェイス
    実際に書き込まれたバイト数
    データが全て書き込めなかった時でも、本メソッドは成功します。アプリケーションは期待されるデータが全て読み取れるまで、本メソッドを複数回呼び出す必要があります。または、しきい値に達するまで再試行をするようにします。

    Bluetooth Low Energyインターフェイス
    成功時には、送信データのサイズが返ります。失敗時は0が返ります。

    UnsafeMutablePointer<UInt32>

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    Bluetooth/Ethernet/Wireless LAN/USB インターフェイス
    実際に書き込まれたバイト数
    データが全て書き込めなかった時でも、本メソッドは成功します。アプリケーションは期待されるデータが全て読み取れるまで、本メソッドを複数回呼び出す必要があります。または、しきい値に達するまで再試行をするようにします。

    Bluetooth Low Energyインターフェイス
    成功時には、送信データのサイズが返ります。失敗時は0が返ります。

    UInt32

  • エラーコード

    説明

    SMStarIOResultCodeFailedError

    何らかのエラーが発生した

印刷の手順については 印刷処理フロー を参照ください。

3.1.8. readPort

added in version 2.6.0

プリンターからデータを読み込みます。 プリンターからRaw byteを読み込む必要がある場合のみ、本メソッドをご使用ください。

  • 宣言

    open func read(readBuffer: UnsafeMutablePointer<UInt8>!, offset: UInt32, size: UInt32, numberOfBytesRead: UnsafeMutablePointer<UInt32>!) throws
    open func read(_ readBuffer: UnsafeMutablePointer<UInt8>!, _ offSet: UInt32, _ size: UInt32, _ error: NSErrorPointer) -> UInt32
    
  • 引数

    名称

    説明

    readBuffer

    データが読み込まれるbyte配列

    UnsafeMutablePointer<UInt8>

    offset

    readBufferにデータを書き込み始めるインデックス

    UInt32

    size

    読み込むbyte数

    UInt32

    numberOfBytesRead

    実際に読み込まれたバイト数
    データが全て読み取れなかった時でも、本メソッドは成功します。アプリケーションは期待されるデータが全て読み取れるまで、本メソッドを複数回呼び出す必要があります。または、しきい値に達するまで再試行をするようにします。

    UnsafeMutablePointer<UInt32>

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    実際に読み込まれたバイト数
    データを全て受信できなかった場合でも、本メソッドは成功します。アプリケーションは、期待するデータが全て受信できるまで本メソッドを複数回呼び出すか、しきい値に達するまで再試行する必要があります。

    UInt32

  • エラーコード

    説明

    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

added in version 2.6.0

プリンターのステータスを取得します。

  • 宣言

    open func getParsedStatus(starPrinterStatus: UnsafeMutableRawPointer!, level: UInt32) throws
    open func getParsedStatus(_ starPrinterStatus: UnsafeMutableRawPointer!, _ level: UInt32, _ error: NSErrorPointer) -> UInt32
    
  • 引数

    名称

    説明

    starPrinterStatus

    現在のプリンターステータスが格納されます。
    取得できるステータスの種類は、 StarPrinterStatus 構造体をご参照ください。

    UnsafeMutableRawPointer

    level

    StarPrinterStatus構造体のレベル
    (0, 1, 2の指定が可能ですが、通常は2を指定します。)

    UInt32

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    成功時: 1
    失敗時: 0

    UInt32

  • エラーコード

    説明

    SMStarIOResultCodeFailedError

    何らかのエラーが発生した

  • 実装例

    var printerStatus: StarPrinterStatus_2 = StarPrinterStatus_2()
    
    do {
        try port.getParsedStatus(starPrinterStatus: &printerStatus, level: 2)
    }
    catch {
        // 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.swiftを参照ください

3.1.10. beginCheckedBlock

added in version 2.6.0

endCheckedBlock メソッドとセットで使用し、印刷終了を監視します。

最後まで正しく印刷されたか確認したい場合、印刷データ送信の直前に本メソッドを、 印刷データ送信の直後に endCheckedBlock メソッドをそれぞれ実行します。

用紙保持制御を行う場合、本メソッドは用紙が抜き取られるまでブロックし、抜き取られると制御を返します。 holdPrintTimeoutMillis で指定したタイムアウト時間内に用紙が抜き取られない場合、エラーとなります。

  • 宣言

    open func beginCheckedBlock(starPrinterStatus: UnsafeMutableRawPointer!, level: UInt32) throws
    open func beginCheckedBlock(_ starPrinterStatus: UnsafeMutableRawPointer!, _ level: UInt32, _ error: NSErrorPointer) -> UInt32
    
  • 引数

    名称

    説明

    starPrinterStatus

    StarPrinterStatus構造体へのポインタ
    (StarPrinterStatus, StarPrinterStatus_1, StarPrinterStatus_2の指定が可能ですが、通常はStarPrinterStatus_2を指定します。)
    本メソッドの実行に成功した場合、現在のプリンターステータスが格納されます。

    UnsafeMutableRawPointer

    level

    StarPrinterStatus構造体のレベル
    (0, 1, 2の指定が可能ですが、通常は2を指定します。)

    UInt32

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    成功時: 1
    失敗時: 0

    UInt32

  • エラーコード

    説明

    ライブラリバージョン

    SMStarIOResultCodePaperPresentError

    用紙保持制御のタイムアウトが発生した

    2.8.0+

    SMStarIOResultCodeFailedError

    何らかのエラーが発生した

    2.2.3+

  • 実装例

    beginCheckedBlock / endCheckedBlock による印刷終了監視処理の手順は、印刷処理フロー を参照ください。

3.1.11. endCheckedBlock

added in version 2.6.0

beginCheckedBlock メソッドとセットで使用し、印刷終了の監視を行います。

プリンターの状態を監視し、送信した印刷データの印刷が正常に完了する、印刷途中にプリンターの状態がオフラインになる、 endCheckedBlockTimeoutMillis で指定したタイムアウトが経過しエラーが発生すると、 制御を返します。印刷データ以外を送信した場合は、そのコマンドがプリンターで処理されると制御を返します。

  • 宣言

    open func endCheckedBlock(starPrinterStatus: UnsafeMutableRawPointer!, level: UInt32) throws
    open func endCheckedBlock(_ starPrinterStatus: UnsafeMutableRawPointer!, _ level: UInt32, _ error: NSErrorPointer) -> UInt32
    
  • 引数

    名称

    説明

    starPrinterStatus

    StarPrinterStatus構造体へのポインタ
    (StarPrinterStatus, StarPrinterStatus_1, StarPrinterStatus_2の指定が可能ですが、通常はStarPrinterStatus_2を指定します。)
    本メソッドの実行に成功した場合、現在のプリンターステータスが格納されます。

    UnsafeMutableRawPointer

    level

    StarPrinterStatus構造体のレベル
    (0, 1, 2の指定が可能ですが、通常は2を指定します。)

    UInt32

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSError **

  • 戻り値

    説明

    成功時: 1
    失敗時: 0

    UInt32

  • エラーコード

    説明

    SMStarIOResultCodeFailedError

    何らかのエラーが発生した

  • 実装例

    beginCheckedBlock / endCheckedBlock による印刷終了監視処理の手順は、印刷処理フロー を参照ください。

3.1.12. disconnect

added in version 2.6.0

指定されたBluetoothプリンターとのコネクションを切断します。

コネクションの切断後、Bluetoothデバイスは再び他の iOSデバイス から接続することができるようになります。

  • 宣言

    open func disconnectAccessory() throws
    open func disconnect(_ error: NSErrorPointer) -> Bool
    
  • 引数

    名称

    説明

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    切断成功・切断失敗

    本メソッドは、以下の場合に失敗となります。
    * getPortで指定したタイムアウト時間内に切断が完了しなかった場合
    * 接続先プリンターが切断機能に非対応の場合(モバイルプリンター等)

    Ethernetデバイスに対しては何も行いません。
    Ethernetデバイスに対して実行した場合は常に true を返します。

    Bool

  • エラーコード

    説明

    SMStarIOResultCodeFailedError

    何らかのエラーが発生した

3.1.13. getFirmwareInformation

added in version 2.6.0

プリンターのモデル名とファームウェアバージョンを取得します。

  • 宣言

    open func getFirmwareInformation() throws -> [AnyHashable: Any]
    open func getFirmwareInformation(_ error: NSErrorPointer) -> [AnyHashable: Any]!
    
  • 引数

    名称

    説明

    error

    エラー発生時にはエラー情報が格納されます。
    codeプロパティにエラーコードがセットされています。

    NSErrorPointer

  • 戻り値

    説明

    ファームウェア情報取得結果のDictionary

    戻り値のDictionaryのキーに "ModelName" を設定することでモデル名を、"FirmwareVersion" を設定することでファームウェアのバージョンを取得できます。

    [AnyHashable: Any]

  • エラーコード

    説明

    SMStarIOResultCodeFailedError

    何らかのエラーが発生した

3.1.14. portName

getPort メソッドで指定したportNameを取得します。

  • 宣言

    open func portName() -> String!
    

3.1.15. portSettings

getPort メソッドで指定したportSettingsを取得します。

  • 宣言

    open func portSettings() -> String!
    

3.1.16. timeoutMillis

getPort メソッドで指定したtimeoutMillisを取得します。

  • 宣言

    open func timeoutMillis() -> UInt32
    

3.1.17. connected

プリンターがデバイスと接続されていれば true を、未接続の場合は false を返します。

  • 宣言

    open func connected() -> Bool
    

重要

Bluetooth/Bluetooth Low Energyインターフェイスのみ対応しています。 非対応のインターフェイスでは、常に true を返します。

iOSデバイスの制限により、 Bluetooth/Bluetooth Low Energy通信が切断されてから本プロパティに反映されるまで5秒程度かかります。

3.1.18. StarIOVersion

StarIOライブラリのバージョンを取得します。

  • 宣言

    open class func starIOVersion() -> String!
    
  • 引数

    なし

  • 戻り値

    説明

    StarIOライブラリのバージョン文字列

    String