我正在使用React Native来构建打印票证的应用程序。我已经成功使用Zjiang公司的蓝牙打印机5802和5802-LD进行了打印。 有一个我不知道确切来源的问题,但是当Java方法不等待打印机实际打印而只是写命令指令时,这导致我最终一次发送所有打印命令的问题。 有时这会导致打印机缺纸,我想清除缓冲区而不是继续打印。
在这里您可以找到编程手册,在76mm第20页的末尾有ESC @命令,该命令应清除缓冲区并再次初始化打印机(但仍没有)(我的打印机是58mm,但是参考ESC @命令)。命令手册具有以下说明: http://www.zjiang.com/en/init.php/service/manual
在其网站上的Android Studio上也有几款Android APK准备就绪: http://www.zjiang.com/en/init.php/service/driver 我在他们的示例中发现了相同的命令:
当我需要实际初始化打印时,它似乎可以工作,但之后却不能像手册中的描述那样工作。有没有人对那些蓝牙ESC / POS打印机有想法或经验,以知道我应该如何进行?
答案 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 ..
不要尝试开发使用跨平台框架中本机事物的移动应用程序。您最终将总是尝试学习和编写程序包以进行本地通信。