キャッシュドロアーを使う
キャッシュドロアーを開ける制御データを生成し、プリンターに送信します。
以下はサンプルコードの説明です。この手順を参考にキャッシュドロアーの制御を行ってください。
ページ下部にサンプルコードがあります。
1プリンターの接続先情報を作ります。
通信に使用するinterfaceTypeと、
接続先を指定するidentifierをセットしてください。
プリンターを検索するで接続先のプリンターを検索済みの場合、この実装は不要です。
手順2のprinter変数には、manager(_ manager: StarDeviceDiscoveryManager, didFind printer: StarPrinter)メソッドで取得したStarPrinterインスタンスをセットしてください。
let starConnectionSettings = StarConnectionSettings(interfaceType: .lan, identifier: “00:11:62:00:00:01”)
2プリンターの接続先情報を与えて、StarPrinterインスタンスを取得します。
let printer = StarPrinter(starConnectionSettings)
3キャッシュドロアーを開ける制御データを生成し、commands変数にセットします。
Memo
印刷とセットでキャッシュドロアーの制御を行いたい場合は 印刷データの生成:標準機能を参考に、DocumentBuilder に PrinterBuilderとDrawerBuilderを追加して印刷データを生成してください。
Task { do { let builder = StarXpandCommand.StarXpandCommandBuilder() _ = builder.addDocument(StarXpandCommand.DocumentBuilder.init() .addDrawer(StarXpandCommand.DrawerBuilder() .actionOpen(StarXpandCommand.Drawer.OpenParameter() .setChannel(.no1) ) ) ) let commands = builder.getCommands()
4プリンターに接続するためopenメソッドを呼び出します。
try await printer.open()
5印刷データの送信を行った後にプリンターとの接続を切断するためdeferブロックでcloseメソッドを呼び出します。
defer { Task { await printer.close() } }
6プリンターにキャッシュドロアーを開ける制御データを送信するためprintメソッドを呼び出します。
try await printer.print(command: command)
7エラー時の処理を実装します。StarIO10Errorの値によりエラーを判別できます。
発生する可能性のあるエラーはStarPrinterクラスのopenメソッド、
printメソッドのAPIリファレンスに記載されています。
} catch StarIO10Error.notFound(message: let message, errorCode: let errorCode) { // Printer not found. // This may be due to the printer not being turned on or incorrect connection information. } catch let error { print("Error: \(error)") } }
サンプルコード
let starConnectionSettings = StarConnectionSettings(interfaceType: .lan, identifier: “00:11:62:00:00:01”)
let printer = StarPrinter(starConnectionSettings)
Task {
do {
let builder = StarXpandCommand.StarXpandCommandBuilder()
_ = builder.addDocument(StarXpandCommand.DocumentBuilder.init()
.addDrawer(StarXpandCommand.DrawerBuilder()
.actionOpen(StarXpandCommand.Drawer.OpenParameter()
.setChannel(.no1)
)
)
)
let commands = builder.getCommands()
try await printer.open()
defer {
Task {
await printer.close()
}
}
try await printer.print(command: command)
} catch StarIO10Error.notFound(message: let message, errorCode: let errorCode) {
// Printer not found.
// This may be due to the printer not being turned on or incorrect connection information.
} catch let error {
print("Error: \(error)")
}
}
以下はサンプルコードの説明です。この手順を参考にキャッシュドロアーの制御を行ってください。
ページ下部にサンプルコードがあります。
1プリンターの接続先情報を作ります。
通信に使用するinterfaceTypeと、接続先を指定する
identifierをセットしてください。
プリンターを検索するで接続先のプリンターを検索済みの場合、この実装は不要です。
手順2のprinter変数には、onPrinterFoundメソッドで取得したStarPrinterインスタンスをセットしてください。
val settings = StarConnectionSettings(InterfaceType.Lan, “00:11:62:00:00:01”)
2プリンターの接続先情報を与えて、StarPrinterインスタンスを取得します。
val printer = StarPrinter(settings, applicationContext)
3キャッシュドロアーを開ける制御データを生成し、commands変数にセットします。
Memo
印刷とセットでキャッシュドロアーの制御を行いたい場合は 印刷データの生成:標準機能を参考に、DocumentBuilder に PrinterBuilderとDrawerBuilderを追加して印刷データを生成してください。
val job = SupervisorJob() val scope = CoroutineScope(Dispatchers.Default + job) scope.launch { try { val builder = StarXpandCommandBuilder() builder.addDocument( DocumentBuilder() .addDrawer( DrawerBuilder() .actionOpen(OpenParameter() .setChannel(Channel.No1) ) ) ) val commands = builder.getCommands()
4プリンターに接続するためopenAsyncメソッドを呼び出します。
printer.openAsync().await()
5プリンターに印刷データを送信するためprintAsyncメソッドを呼び出します。
printer.printAsync(commands).await()
6エラー時の処理を実装します。エラーの型によりエラー要因を判別できます。
発生する可能性のあるエラーはStarPrinterクラスのopenAsyncメソッド、
printAsyncメソッドのAPIリファレンスに記載されています。
} catch (e: StarIO10NotFoundException) { // Printer not found. // This may be due to the printer not being turned on or incorrect connection information. } catch (e: Exception) { Log.d("Printing", "Error: ${e}") } finally { printer.closeAsync().await() } }
サンプルコード
val settings = StarConnectionSettings(InterfaceType.Lan, “00:11:62:00:00:01”)
val printer = StarPrinter(settings, applicationContext)
val job = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + job)
scope.launch {
try {
val builder = StarXpandCommandBuilder()
builder.addDocument(
DocumentBuilder()
.addDrawer(
DrawerBuilder()
.actionOpen(OpenParameter()
.setChannel(Channel.No1)
)
)
)
val commands = builder2.getCommands()
printer.openAsync().await()
printer.printAsync(commands).await()
Log.d("Printing", "Success")
} catch (e: StarIO10NotFoundException) {
// Printer not found.
// This may be due to the printer not being turned on or incorrect connection information.
} catch (e: Exception) {
Log.d("Printing", "Error: ${e}")
} finally {
printer.closeAsync().await()
}
}