c# - ZPL:二进制 B64 和压缩 Z64 编码

标签 c# zpl zpl-ii

也许有人可以帮助我解决 Zebra ZPL 问题。 ZPL 手册并没有真正帮助我。
我想将二进制(使用 ZPL B64)和压缩的二进制(使用 ZPL Z64)图像数据传输到打印机。

我能够找到以下信息:

  • 使用 B64,数据以 Base64 格式编码。
  • 使用 Z64,数据首先用 LZ77 压缩,然后用 Base64 编码。
  • CRC 数字附加到两种编码。 (可能必须是 CRC-16)但是我没有计算出有效的 CRC 校验位!

  • 你们中有人这样做了吗?
  • LZ77算法使用哪些参数?
  • 使用哪个 CRC 以及哪个起始多项式?
  • 也许有人甚至有针对此问题的 C# 代码?

  • 非常感谢。

    最佳答案

    The ZPL manual doesn't really help me.



    告诉我怎么回事儿!
  • 手册中提到的“LZ77”算法其实就是ZLIB格式。我用过 http://zlib.net为了那个原因。
  • 手册中提到的“CRC”其实就是CRC16-CCITT。我使用的代码:http://sanity-free.com/133/crc_16_ccitt_in_csharp.html .

    为了正确计算它:
  • 使用 ZLIB 压缩图片位(图片必须是 PixelFormat.Format1bppIndexed ,最好使用 Bitmap.LockBits 访问图片位)。
  • 将压缩后的数据编码为 Base64。 不允许有空格或换行符。
  • 根据 ASCII 编码 ( System.Text.Encoding.ASCII.GetBytes(base64string) ) 将 Base64 字符串转换为字节数组。
  • 计算该字节数组的 CRC。 初始 CRC 值必须为零。
  • 关于c# - ZPL:二进制 B64 和压缩 Z64 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59319970/

    相关文章:

    c# - 调用 Get-MsolUser 不返回任何结果

    c# - 如何在不隐藏控件的情况下调整窗口大小

    c# - Automapper Project从子项访问父项

    c# - 用于打印条码标签的 Zebra Printer C# 代码

    zebra-printers - Zebra ZPL 命令调整条码大小以位于标签内

    c# - 在 InMemory 单元测试中运行存储过程

    c# - 为什么 Zebra QLn220 打印机在向其发送更新某些设置的命令后会忽略发送给它的前几条命令?

    java - Android 使用斑马打印机 imz320 打印阿拉伯语显示为反转字符

    php - jZebra - 原始命令入门