我们将开发一个从蓝牙打印机打印发票的应用程序。但我们必须发送 TSPL 命令,例如;
String bytes =
"SIZE 3,2"
"DIRECTION 1,0"
"GAP 0,0\n"
"REFERENCE 0,0"
"OFFSET 0mm"
"SET PEEL OFF"
"SET CUTTER OFF"
"SET PARTIAL_CUTTER OFF"
"SET TEAR ON"
"CLS"
"TEXT 10,100, \"ROMAN.TTF\",0,1,1,\" MALINCINSI \""
"TEXT 10,120, \"ROMAN.TTF\",0,1,1,\" MALINCINSI \""
"TEXT 10,150, \"ROMAN.TTF\",0,1,1,\" KDV: %18 \""
"TEXT 10,200, \"ROMAN.TTF\",0,3,2,\" 12.79 \""
"BARCODE 328,386,\"128M\",102,0,180,3,6,\"!10512345678\""
"TEXT 328, 250, \"ROMAN.TTF\",0,1,1,\"12345678\""
"PRINT 1,1"
;
我已经使用了
bluetooth_thermal_printer: ^0.0.6
和 esc_pos_utils 并且我已经发送了这样的命令;
final result = await BluetoothThermalPrinter.writeText(bytes);
但是蓝牙打印机永远不会在 TSPL 模式下打印此命令。
根据调试控制台结果显示是正确的。但打印机不打印任何东西。有没有任何方法或包可以从蓝牙打印机发送和打印 TSPL 命令。
幸运的是,我现在正在研究热敏打印机,并且在为自己的问题寻找答案时看到了这个问题。我正在使用
flutter_blue_plus
和 esc_pos_utils
库。我将分享一段代码来帮助您通过蓝牙连接将 TSPL 命令发送到热敏打印机。
printPriceChange(BluetoothDevice connectedDevice, double price){
final gen = Generator(PaperSize.mm58, await CapabilityProfile.load());
final printer = BluePrint();
// ...
// ... some codes to create tarih and fiyat variables
// ...
String bytes =
"SIZE 40 mm, 20 mm\nGAP 2 mm\nSET CUTTER 1\nCLS\nCODEPAGE 857\nTEXT 25, 100, \"1\", 0, 1, 1, \"F.T.T. $tarih\"\nTEXT 25, 50, \"2\", 0, 1, 1, \"$fiyat\"\nPRINT 1\n";
printer.add(gen.rawBytes(bytes.codeUnits));
await printer.printData(connectedDevice);
}
解释一下我写的内容:
connectedDevice
变量是我在执行此函数之前连接的设备。
最后,建议您在Google中搜索“THERMAL BARCODE PRINTER编程手册”,针对不同场景创建自己的TSPL代码。
那么,你能给出一个使用 TSPL 命令打印它的示例代码吗?我也有同样的问题。