You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Windows PowerShell发送ESC/POS命令至Epson TM20ii打印异常求助

解决ESC/POS指令通过Out-Printer发送被打印成文本的问题

问题根源

Out-Printer的作用是将文本内容传递给打印机驱动,驱动会负责把文本转换成打印机能识别的格式(比如处理字体、换行、页边距等)。但ESC/POS是打印机的二进制控制指令(比如LF对应的是ASCII码0x0A),直接发送字符串"LF"会被驱动当成普通文本,自然就打印出这两个字符了——不管是Epson官方驱动还是通用文本驱动,都是为处理普通文本设计的,不会解析这类字符串形式的指令。

正确解决方案:绕过驱动,直接发送二进制指令

要让打印机执行ESC/POS命令,必须直接把指令对应的二进制字节发送到打印机的硬件端口(串口、USB转串口、网络端口),完全绕过驱动的文本处理逻辑。下面是几种常见场景的实现方式:

1. 串口/USB转串口打印机

先在设备管理器里确认打印机对应的串口(比如COM3),然后用PowerShell直接操作串口发送字节:

# 定义LF指令对应的二进制字节(0x0A)
$lfCommand = [byte]0x0A

# 初始化串口连接(参数根据打印机设置调整,波特率一般是9600)
$serialPort = New-Object System.IO.Ports.SerialPort("COM3", 9600, "None", 8, "One")
$serialPort.Open()

# 发送指令
$serialPort.Write([byte[]]($lfCommand), 0, 1)

# 关闭连接
$serialPort.Close()

2. 网络打印机(IP连接)

大多数网络打印机支持通过9100端口接收原始ESC/POS指令,用Socket直接发送:

# 打印机的IP和端口(默认9100)
$printerIp = "192.168.1.100"
$printerPort = 9100

# 定义LF指令的二进制字节
$lfCommand = [byte]0x0A

# 建立TCP连接并发送指令
$tcpClient = New-Object System.Net.Sockets.TcpClient($printerIp, $printerPort)
$stream = $tcpClient.GetStream()
$stream.Write([byte[]]($lfCommand), 0, 1)

# 关闭连接
$stream.Close()
$tcpClient.Close()

3. 组合文本与控制指令

如果需要打印文本同时执行控制命令(比如打印完内容后走纸两行),可以把文本转换成ASCII字节,再和控制指令的字节拼接后发送:

# 要打印的文本(转成ASCII字节)
$receiptText = "感谢您的购买!`r`n订单号:20240520001"
$textBytes = [System.Text.Encoding]::ASCII.GetBytes($receiptText)

# 控制指令:走纸两行(两个0x0A字节)
$feedLines = [byte[]](0x0A, 0x0A)

# 拼接完整指令
$fullCommand = $textBytes + $feedLines

# 发送到网络打印机
$tcpClient = New-Object System.Net.Sockets.TcpClient("192.168.1.100", 9100)
$stream = $tcpClient.GetStream()
$stream.Write($fullCommand, 0, $fullCommand.Length)
$stream.Close()
$tcpClient.Close()

额外注意事项

  • 确认打印机的端口参数(波特率、奇偶校验等)和代码里的设置一致,否则可能出现指令不执行或乱码。
  • 如果你用的是USB直连打印机,有些型号需要先安装虚拟串口驱动,才能用串口方式发送指令;或者可以使用Windows的RawPrinterHelper类(需要调用.NET API)直接发送到USB打印机的原始队列。

内容的提问来源于stack exchange,提问作者Ibber Chochem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:53:47