带有 TSPL 命令的蓝牙打印机

问题描述 投票:0回答:2

我们将开发一个从蓝牙打印机打印发票的应用程序。但我们必须发送 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 dart printing bluetooth tspl
2个回答
2
投票

幸运的是,我现在正在研究热敏打印机,并且在为自己的问题寻找答案时看到了这个问题。我正在使用

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);

}

解释一下我写的内容:

  • tarih 变量代表 DateTime.now().toString() 但简而言之
  • fiyat 变量代表价格,它是一个带有 toStringAsFixed(2) 的双精度值
  • 最后我创建了列表以将字节发送到热敏打印机

connectedDevice
变量是我在执行此函数之前连接的设备。

最后,建议您在Google中搜索“THERMAL BARCODE PRINTER编程手册”,针对不同场景创建自己的TSPL代码。


0
投票

那么,你能给出一个使用 TSPL 命令打印它的示例代码吗?我也有同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.