ESC POS蓝牙打印机清除缓冲区

时间:2018-10-08 14:06:30

标签: javascript java thermal-printer escpos

我正在使用React Native来构建打印票证的应用程序。我已经成功使用Zjiang公司的蓝牙打印机5802和5802-LD进行了打印。 有一个我不知道确切来源的问题,但是当Java方法不等待打印机实际打印而只是写命令指令时,这导致我最终一次发送所有打印命令的问题。 有时这会导致打印机缺纸,我想清除缓冲区而不是继续打印。

在这里您可以找到编程手册,在76mm第20页的末尾有ESC @命令,该命令应清除缓冲区并再次初始化打印机(但仍没有)(我的打印机是58mm,但是参考ESC @命令)。命令手册具有以下说明: http://www.zjiang.com/en/init.php/service/manual enter image description here

enter image description here

在其网站上的Android Studio上也有几款Android APK准备就绪: http://www.zjiang.com/en/init.php/service/driver enter image description here  我在他们的示例中发现了相同的命令: enter image description here

当我需要实际初始化打印时,它似乎可以工作,但之后却不能像手册中的描述那样工作。有没有人对那些蓝牙ESC / POS打印机有想法或经验,以知道我应该如何进行?

1 个答案:

答案 0 :(得分:2)

自您发布以来已经有很长时间了,但这可能会帮助某人挣扎。

我用ionic 3框架开发了一个小型移动应用程序。我的主要问题之一是打印服务。

最终用户需要打印收据。 我所做的是制作一个uint8Array()并合并其中的所有小数数据。我也尝试过使用缓冲区。

一次发送所有数据时出现问题。打印机在同一时间停止。我分解了变量并计算了它们的字节大小,看是否有什么问题,但是什么都没发生。

我试图将最终变量数据分解为较小的var,并使用ESC @进行初始化,但这也没有用。

在互联网上搜索某些“专家”说,您可以ESC @的完整软件包4kbytes。我还尝试用不超过4kb的空字符填充其余数组,并尝试初始化但什么也没做。

最后,我做了一个非常“猴子”的解决方案,对此我感到I愧。

我通过较小的uintarray进行了seTimout循环

setTimeout(() => {
    this.btSerial.write(uint8Array)
      .then(dataz => {
        console.log("WRITE SUCCESS", dataz);
      });
  }, 100 + n *100)

当然有效。

我认为问题是,Android可以每隔几毫秒通过蓝牙以本地方式发送字节,但我不确定。

希望我能帮上忙。

Ps ..

不要尝试开发使用跨平台框架中本机事物的移动应用程序。您最终将总是尝试学习和编写程序包以进行本地通信。