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

基于ASP.NET WebForms通过IP使用ESC/P打印至Brother P-Touch

解决Brother P-Touch P95NW原始指令打印无响应问题

核心问题分析

你当前的代码错误地将十六进制格式的文本字符串(如"1B 69 61...")直接以ASCII编码发送给打印机。打印机收到的是'1'、'B'、空格这类字符,而非指令对应的原始十六进制字节(比如0x1B代表ESC控制符),这是打印机无响应的根本原因。

修正后的代码实现

需要先将十六进制字符串转换为对应的字节数组,再通过Socket发送:

Dim clientSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
clientSocket.Connect(New IPEndPoint(IPAddress.Parse(IP), 9100))

' 处理十六进制字符串:移除空格和连字符
Dim hexString As String = "1B 69 61 00 1B 40 1B 69-6C D0 02 1B 24 3C 00 1B" & _
                          "6B 00 1B 58 36 41 74 20-69 6F 75 72 20 73 69 64" & _
                          "65 0C"
hexString = hexString.Replace(" ", "").Replace("-", "")

' 将十六进制字符串转换为字节数组
Dim labelBytes As Byte() = New Byte(hexString.Length \ 2 - 1) {}
For i As Integer = 0 To labelBytes.Length - 1
    labelBytes(i) = Convert.ToByte(hexString.Substring(i * 2, 2), 16)
Next

' 发送字节数组
clientSocket.Send(labelBytes)
clientSocket.Close()

额外排查建议

  • 验证指令参数匹配标签规格:你使用的是0.94英寸宽的标签,需确认手册中对应的标签宽度指令参数(比如示例中的D0 02)是否与该规格匹配,避免因参数不兼容导致打印机静默丢弃指令。
  • 抓包对比指令差异:使用Wireshark抓取P-Touch Editor打印时发送的数据包,对比你代码发送的字节流,确认是否存在指令缺失、参数错误或结尾符问题。
  • 测试基础指令:先发送最简单的测试指令(如ESC @即0x1B 0x40,用于初始化打印机),验证打印机是否有响应,逐步排查指令有效性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:10:14