Windows系统下如何通过命令提示符打印含ESC/pos指令的txt文件
你遇到的问题根源是:直接写入txt文件的\x1B这类内容是ESC/POS指令的文本转义表示,不是打印机要求的原始二进制控制字符,所以会被当成普通文本打印,而非触发对应功能。
操作步骤
1. 生成包含原始二进制ESC/POS指令的文件
不能直接在普通txt文件中输入文本形式的\x1B\x40这类转义序列,需要将其转换为对应的二进制字节存入文件,可使用以下两种Windows下的简便方法:
- 方法一:通过PowerShell生成二进制文件
打开PowerShell执行如下命令,可直接将你需要的指令转换为字节写入文件(示例为你给出的测试指令,可自行修改):
生成的文件后缀可以是# 构造ESC/POS指令字节数组 $esc_pos_bytes = [byte[]]@( 0x1B, 0x40, # 打印机初始化指令 0x1D, 0x28, 0x6B, 0x0D, 0x00, 0x30, 0x50, 0x30 ) + [System.Text.Encoding]::ASCII.GetBytes("TEST PRINT") + [byte[]]@( 0x1D, 0x28, 0x6B, 0x03, 0x00, 0x30, 0x51 ) # 写入二进制文件,路径可自行替换 [System.IO.File]::WriteAllBytes("C:\print_test.bin", $esc_pos_bytes).bin也可以是.txt,只要内容是二进制格式即可。 - 方法二:通过十六进制编辑器写入
如果你使用HxD等十六进制编辑工具,直接把ESC/POS指令对应的十六进制值写入文件即可,不要输入文本形式的转义序列。
2. 发送二进制文件到打印机打印
Windows自带的print命令默认会按文本模式处理文件,会自动修改换行符、转换编码,破坏原始二进制指令,推荐使用以下命令打印:
推荐方案:用
copy命令二进制模式传输
打开命令提示符执行如下命令:copy /b C:\print_test.bin COM1其中
/b参数指定按二进制模式传输文件,不会修改任何字节内容,可完整将原始指令发送给打印机。
注意:请把上述命令中的COM1替换为你实际的打印机虚拟端口号,可在设备管理器的「端口(COM和LPT)」分类下查看对应端口若要使用
print命令,需先调整配置
先打开打印机属性→端口→选中对应COM口→配置端口,将「流控制」设为「无」,「数据位」设为8,「奇偶校验」设为无,「停止位」设为1,再执行如下命令:print /d:COM1 /b C:\print_test.bin同样需要加
/b参数指定二进制打印模式。
内容的提问来源于stack exchange,提问作者M.Yogeshwaran
相关产品推荐
相关产品推荐

