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

标签 javascript java thermal-printer escpos

我正在使用 React Native 构建一个打印票证的应用程序。我已经成功使用浙江公司的蓝牙打印机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 打印机有想法或经验吗?我应该如何进行?

最佳答案

距离您发帖已有很长时间了,但这可能会帮助那些陷入困境的人。

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

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

我在一次发送所有数据时遇到了问题。打印机在同一点停止。我分解了变量并计算了它们的字节大小以查看是否有问题,但没有任何结果。

我尝试将最终变量数据分解为较小的变量并使用 ESC @ 进行初始化,但这也不起作用。

在互联网上搜索一些“大师”说你可以使用 4kbytes 的完整包ESC @。我还尝试用最多 4kb 的空字符填充剩余数组的其余部分,并尝试初始化,但什么也没有。

最后我做了一个非常“猴子”的解决方案,我为此感到羞耻。

我通过较小的 uintarrays 创建了一个 seTimout 循环

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

当然它有效了。

我认为问题是,android 可以每隔几毫秒用蓝牙本地发送字节,但我不确定。

希望我能帮上一点忙。

附注..

不要尝试开发在跨平台框架中使用 native 内容的移动应用程序。您最终将始终尝试学习和编写程序包以进行 native 通信..

关于javascript - ESC POS 蓝牙打印机清除缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52704083/

相关文章:

java - 如何解析一行的前6个字符串

c++ - 如何在 C++ (VS2010) 中设置超时读取 USB 端口?

javascript - jQuery AutoComplete 无法正确呈现

java - 我可以使用具有自定义属性名称的properties/yml 文件配置@FeignClient url 吗?

javascript - 为什么 _.difference 返回所有项目?

java - 如何将多个字符串变量放置在 3d 数组的一个坐标中?

android - 如何通过android应用程序将数据发送到蓝牙打印机?

python - Escpos Thermal ZJ-58 Python Code128 条码打印不显示任何内容

javascript - Puppeteer - waitForResponse() 超时,但 page.on ('response' ) 找到响应

javascript - 使用 mocha 测试客户端 js