gpt4 book ai didi

printing - 通过蓝牙或 USB 与打印机设备通信并控制打印机设备

转载 作者:行者123 更新时间:2023-12-02 21:32:03 24 4
gpt4 key购买 nike

该设备是标签打印机。它可以通过蓝牙和USB连接。我想象它正在运行某种Linux,因为它有一个相当复杂的界面/屏幕,但我不确定。事实上,这是我想确定的事情。但是我的目标是获得一个外壳,或者某种“有意义的”连接,通过它我可以发送命令/数据,从而触发打印机的打印事件,而无需使用制造商的软件

通过 USB 连接到 ubuntu 中的设备会创建 /dev/usb/lp0。我尝试使用 python 的 serial 模块连接到此,但它无法连接到串行端口。

通过蓝牙,我也能够进行连接,使用 hcitool scan 获取设备的 MAC 地址,然后使用 rfcomm 进行连接(使用 this 方法)。这创建了 /dev/rfcomm0,我可以使用 python 连接到它并向其发送数据。

是否可以模仿制造商软件通常通过 USB/蓝牙发送的数据来在没有软件的情况下进行打印?我认为通过“嗅探”通过蓝牙发送的数据来实现这一点是可能的正常的打印命令是由制造商的软件发送的(尽管我认为它没有理由看起来对人类来说是可以理解的)。

如果这种模仿是可能的,我想知道简单地通过蓝牙发送等效数据是否会导致打印事件。到目前为止,我没有理由相信该数据我通过蓝牙连接发送的信息未被接收,但我尚未从蓝牙连接获得任何类型的响应(数据或物理)。

任何有关我如何实现总体目标的建议/建议将不胜感激

最佳答案

这当然是可能的(很抱歉六年后才得到答案,但希望这能帮助以后有需要的人)。我也有类似的问题,我是这样解决的。

我有一台 MHT-P80F 热敏打印机。我在设置中发现它支持一个名为 TSPL 的协议(protocol)。这些是您需要发送到打印机并告诉它进行原始文本打印甚至位图打印的指令。

您需要做的就是构造正确的字节流(主要是人类可读的 ASCII)并将其发送到 /dev/usb/lp0 。我还没有通过蓝牙测试它,但我认为它应该是类似的。

例如,如果您想打印出“Hello World”,这些说明就足够了:

CLS
SIZE 80mm,50mm
GAP 5mm,0mm
HOME
TEXT 0,0,"0",0,1,1,"Hello World"
PRINT 1

每行由 "\n" 分隔.

说明(更多内容可以通过搜索 TSPL 找到):

  • CLS告诉打印机清除所有先前的暂存命令。
  • SIZE告诉打印机每个标签的尺寸(宽度、高度)。
  • 间隙每个标签之间有 5 毫米的空间(不含纸张)。
  • 主页(重新)找到纸卷以进行新打印。
  • 打印开始打印1份。

请注意,这些说明适用于离散标签的使用。对于整个纸卷来说可能会有所不同。不同打印机上的 TSPL 实现可能有所不同,因此您可以进行一些尝试。

通常,如果您可以打印位图,那么您几乎可以打印任何文档(例如,在 Python 中使用 PIL 或在 Node.js 中使用 Jimp 预先生成图像)。因此,这是最有用的 BITMAP 命令:

BITMAP 16,24,40,256,0,<BYTE STREAM>

哪里

  • 16:位图的起始(最左边)X 坐标
  • 24:位图的起始(最上面)Y 坐标
  • 40:位图的宽度,单位为BYTES(见下文)
  • 256:位图的高度,以DOTS为单位
  • 0:打印模式,0 覆盖该区域中的任何内容

<BYTESTREAM>是该图像的二进制数据(黑/白),从左到右,从上到下。

位图宽度以字节为单位,因此每个字节代表图像中的 8 个水平连续点。最高位 7 最左边,最低位 0 最右边。因此,如果像示例中我们在此参数中写入 40,则图像的宽度将为 40x8=320 点。

相反,位图高度以点为单位。

大多数此类热敏打印机的 DPI 为 203。这是一个值得研究的有趣起点:203/25.4 = 7.99 ,或四舍五入为 8。因此对于打印机来说,每 8 个点等于 1 毫米。在上面的示例中,X=16 和 Y=24(均为点)对应于起始位置 X=2mm 和 Y=3mm。

最后,您通常不需要反转该图像的颜色。在BITMAP命令中,一位中的1表示正确的白色或非打印点,0表示黑色或加热的点。

关于printing - 通过蓝牙或 USB 与打印机设备通信并控制打印机设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34307459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com