【问题标题】:Zebra CPCL PCX command puts printer into receiving mode indefinitelyZebra CPCL PCX 命令将打印机无限期地置于接收模式
【发布时间】:2022-04-06 02:19:06
【问题描述】:

尝试通过 Brother Print SDK 使用 CPCL 线路模式打印到 Brother RJ-4230B 打印机。

当我使用driver.sendRawData(bytes) 发送这些字节时,打印机卡在“正在接收”:

! 0 200 200 2596 1
PW 575
TONE 0
SPEED 3
ON-FEED IGNORE
NO-PACE
BAR-SENSE
PCX 190 12 
����
FORM
PRINT

���� 表示测试 PCX 图像的 4 个字节。我还需要以类似方式发送其他图片。

这种方法似乎与手册和我在网上找到的示例一致,但它不起作用。这是 PCX 命令的手册页:

命令字符串为:

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}\r\nFORM\r\nPRINT\r\n 在转换为字节之前。

我也试过没有FORM:

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}\r\nPRINT\r\n"

并且在 PCX 命令行上没有 \r\n

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 {pcx image data bytes}\r\nPRINT\r\n"

此外,使用 STARTPCX.LBL 和/或 ENDPCX.LBL 的各种组合:

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}\r\nENDPCX.LBL\r\nPRINT\r\n

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}ENDPCX.LBL\r\nPRINT\r\n

STARTPCX.LBL\r\n! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n!{pcx image data bytes}\r\nENDPCX.LBL\r\nPRINT\r\n

STARTPCX.LBL\r\n! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 \r\n{pcx image data bytes}ENDPCX.LBL\r\nPRINT\r\n

! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nSTARTPCX.LBL\r\nPCX 190 12 \r\n{pcx image data bytes}ENDPCX.LBL\r\nPRINT\r\n

如何让打印机识别内联数据发送结束?

【问题讨论】:

    标签: java android zebra-printers pcx brother-print-sdk


    【解决方案1】:

    COMMAND LINE CONVERSION OF PCX FILES FOR ZPL PRINTERS
    ZPL 中的 PCX 上传将例如。成为~DYR:ARROW,B,X,268,,(有东西要测试)。
    Camero Printer Command Language (CPCL) 参考也似乎相关。确保bytes 确实是单色的。在示例中,大小268 基本上会提前告诉它何时上传完成 - 就像 HTTP 服务器可能会在下载之前报告内容长度。

    当传递的内容长度大于实际长度时,它可能会在 EOF 处继续等待。

    或者,对于direct printing of PCX file(虽然受支持),该命令将例如。是:

    ! 0 200 200 500 1
    PCX 0 30
    

    可能会将 Brother 与 Zebra 混淆,但 CPCL(参见参考手册)都是一样的。
    \r\n 结尾的行是 DOS;另一种选择是\n(不确定哪个适用于 CPCL)。
    免责声明:我只知道 QL 系列,不知道 RJ 系列 - 并且没有测试硬件。

    【讨论】:

    • 我正在尝试直接打印,如我的帖子中所示。我正在发送位图文件的字节,这可能是问题所在。有关如何将位图转换为 PCX 文件的任何建议?
    • 看看 PCX 甚至是什么......看起来,在 PCX 部分中,\r\n 似乎是合理的......“偏移量 3 处每个平面场的每像素位”必须是1 和“偏移 65 处的平面场数”必须是 1 ...这意味着“单色”;文件头是0x0a...“图像数据在头之后(从偏移量0x80开始)”。
    • 我的应用程序中捕获了位图文件,需要使用 CPCL 发送到 Brother 打印机。 Zebra SDK 可以接受位图,并且可以将打印机上的图像存储在闪存中。但是,Brother 打印机 SDK 不将图像保存到打印机,也不支持将图像上传到打印机的 CISDF* 命令。所以我坚持直接打印。如何将位图字节转换为 CPCL 期望的格式?
    • 所需的 PCX byte[] 看起来像这样 - 并且如前所述,可能只支持单色 PCX(在编写文件头时,可能不必检查头,但使用兼容值):stackoverflow.com/questions/21035662/…
    • 我需要一个关于如何将位图转换为 PCX 的明确答案,以便我可以通过直接打印命令(例如 PCX {x} {y} {data})将 PCX 字节发送到打印机。
    【解决方案2】:

    问题原来是我正在发送位图的字节,而需要将位图转换为 PCX 文件并发送这些字节。另外,请确保不要将 \r\n 放在 PCX 命令和字节流之间。

    ! 0 200 200 2596 1\r\nPW 575\r\nTONE 0\r\nSPEED 3\r\nON-FEED IGNORE\r\nNO-PACE\r\nBAR-SENSE\r\nPCX 190 12 {pcx image data bytes}\r\nPRINT\r\n"
    

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 1970-01-01
      • 2011-03-04
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多