プリンターを検索する
StarDeviceDiscoveryManagerを使って、非同期にプリンター検索を行います。
検索を開始すると見つかった順にイベントが発生し、 StarPrinterインスタンスを即時取得することができます。
Memo
StarPrinterインスタンスは、プリンタと通信するために必要な機能を提供するインスタンスです。
StarPrinterインスタンスを取得するには、検索を含み二通りの方法があります。
- 検索によって取得する方法 (このページの手順8)
- StarPrinterクラスのイニシャライザにinterfaceTypeとidentifierを渡して生成する方法
このStarPrinterインスタンスを使って、印刷データをプリンターに送信したり、POS周辺機器の制御を行ったりすることができます。
1検索を行うために使用するStarDeviceDiscoveryManager型の変数を用意します。
class ViewController: UIViewController, StarDeviceDiscoveryManagerDelegate { private var manager: StarDeviceDiscoveryManager? = nil
2検索するインターフェイスを選択します。検索したいInterfaceTypeの配列を生成してください。
func startDiscovery() { var interfaceTypeArray : [InterfaceType] = [InterfaceType.lan, InterfaceType.bluetooth]
3手順2で生成した配列を引数にして、StarDeviceDiscoveryManagerのインスタンスを取得します。
do { try manager = StarDeviceDiscoveryManagerFactory.create(interfaceTypes: interfaceTypeArray)
4検索を実行する時間を設定します。
manager?.discoveryTime = 10000
5 delegateプロパティに StarDeviceDiscoveryManagerDelegateプロトコルの実装(手順8、手順9を参照)をセットします。
manager?.delegate = self
6検索を開始するためstartDiscoveryメソッドを呼び出します。
プリンターが見つかったときに手順
try manager?.startDiscovery()
7エラー時の処理を実装します。StarIO10Errorの値によりエラーを判別できます。
発生する可能性のあるエラーはStarDeviceDiscoveryManagerFactoryクラスの
createメソッド、
StarDeviceDiscoveryManagerクラスの
startDiscoveryメソッド のAPIリファレンスに記載されています。
} catch StarIO10Error.illegalDeviceState(message: let message, errorCode: let errorCode) { if errorCode == StarIO10ErrorCode.bluetoothUnavailable { // Example of error: Bluetooth capability of iOS device is disabled. // This may be due to the host device's Bluetooth being off. } } catch { print("Error: \(error)") }
8プリンターが見つかったときの処理を実装します。StarDeviceDiscoveryManagerDelegateプロトコルの manager(_ manager: StarDeviceDiscoveryManager, didFind printer: StarPrinter)メソッドをセットしてください。
func manager(_ manager: StarDeviceDiscoveryManager, didFind printer: StarPrinter) { print("Found printer: \(printer.connectionSettings.identifier).") }
9検索が終了したときの処理を実装します。StarDeviceDiscoveryManagerDelegateプロトコルの managerDidFinishDiscovery(_ manager: StarDeviceDiscoveryManager)メソッドをセットしてください。
func managerDidFinishDiscovery(_ manager: StarDeviceDiscoveryManager) { print("Discovery finished.") } }
サンプルコード
class ViewController: UIViewController, StarDeviceDiscoveryManagerDelegate {
private var manager: StarDeviceDiscoveryManager? = nil
func startDiscovery() {
var interfaceTypeArray : [InterfaceType] = [InterfaceType.lan, InterfaceType.bluetooth]
do {
try manager = StarDeviceDiscoveryManagerFactory.create(interfaceTypes: interfaceTypeArray)
manager?.discoveryTime = 10000
manager?.delegate = self
try manager?.startDiscovery()
} catch StarIO10Error.illegalDeviceState(message: let message, errorCode: let errorCode) {
if errorCode == StarIO10ErrorCode.bluetoothUnavailable {
// Example of error: Bluetooth capability of iOS device is disabled.
// This may be due to the host device's Bluetooth being off.
}
} catch let error {
print("Error: \(error)")
}
}
func manager(_ manager: StarDeviceDiscoveryManager, didFind printer: StarPrinter) {
print("Found printer: \(printer.connectionSettings.identifier).")
}
func managerDidFinishDiscovery(_ manager: StarDeviceDiscoveryManager) {
print("Discovery finished.")
}
}
StarDeviceDiscoveryManagerを使って、非同期にプリンター検索を行います。
検索を開始すると見つかった順にイベントが発生し、StarPrinterインスタンスを即時取得することができます。
Memo
StarPrinterインスタンスは、プリンタと通信するために必要な機能を提供するインスタンスです。
StarPrinterインスタンスを取得するには、検索を含み二通りの方法があります。
- 検索によって取得する方法 (このページの手順5)
- StarPrinterクラスのコンストラクタに interfaceTypeと identifierを渡して生成する方法
このStarPrinterインスタンスを使って、印刷データをプリンターに送信したり、POS周辺機器の制御を行ったりすることができます。
1検索を行うために使用するStarDeviceDiscoveryManager型の変数を用意します。
private var _manager: StarDeviceDiscoveryManager? = null
2検索するインターフェイスを選択します。検索したいInterfaceTypeのリストを生成してください。
private fun startDiscovery() { try { val interfaceTypes = listOf(InterfaceType.Lan, InterfaceType.Bluetooth)
3手順2で生成したリストを引数にして、StarDeviceDiscoveryManager のインスタンスを取得します。
_manager = StarDeviceDiscoveryManagerFactory.create( interfaceTypes, applicationContext )
4検索を実行する時間を設定します。
_manager?.discoveryTime = 10000
5プリンターが見つかったとき、検索が終了したときの処理を実装します。
callbackプロパティに
StarDeviceDiscoveryManager.Callbackインターフェイスの実装をセットしてください。
onPrinterFoundメソッドにプリンターが見つかったときの処理、onDiscoveryFinishedメソッドに検索が終了したときの処理を実装してください。
_manager?.callback = object : StarDeviceDiscoveryManager.Callback { override fun onPrinterFound(printer: StarPrinter) { Log.d("Discovery", "Found printer: ${printer.connectionSettings.identifier}.") } override fun onDiscoveryFinished() { Log.d("Discovery", "Discovery finished.") } }
6検索を開始するためstartDiscoveryメソッドを呼び出します。
プリンターが見つかったときに手順5で実装したonPrinterFoundメソッドが、
検索が終了したときにonDiscoveryFinishedメソッドが呼ばれます。
_manager?.startDiscovery()
7エラー時の処理を実装します。エラーの型によりエラー要因を判別できます。
発生する可能性のあるエラーはStarDeviceDiscoveryManagerFactoryクラスの
createメソッド、
StarDeviceDiscoveryManagerクラスのstartDiscoveryメソッドのAPIリファレンスに記載されています。
} catch (e: StarIO10IllegalHostDeviceStateException) { if (e.errorCode == StarIO10ErrorCode.BluetoothUnavailable) { // Example of error: Bluetooth capability of Android device is disabled. // This may be due to the Android device's Bluetooth being off. } } catch (e: Exception) { Log.d("Discovery", "Error: ${e}") } }
サンプルコード
private var _manager: StarDeviceDiscoveryManager? = null
private fun startDiscovery() {
try {
this._manager?.stopDiscovery()
_manager = StarDeviceDiscoveryManagerFactory.create(
interfaceTypes,
applicationContext
)
_manager?.discoveryTime = 10000
_manager?.callback = object : StarDeviceDiscoveryManager.Callback {
override fun onPrinterFound(printer: StarPrinter) {
Log.d("Discovery", "Found printer: ${printer.connectionSettings.identifier}.")
}
override fun onDiscoveryFinished() {
Log.d("Discovery", "Discovery finished.")
}
}
_manager?.startDiscovery()
} catch (e: StarIO10IllegalHostDeviceStateException) {
if (e.errorCode == StarIO10ErrorCode.BluetoothUnavailable) {
// Example of error: Bluetooth capability of Android device is disabled.
// This may be due to the Android device's Bluetooth being off.
}
} catch (e: Exception) {
Log.d("Discovery", "Error: ${e}")
}
}