如何检查 POS 打印机状态

How to check POS printer status

目前我正在使用 POS 打印机移动应用程序。我做过文字、图片和条形码或二维码的打印方式。现在我正在尝试使用 ESC/POS 命令检索打印机状态。下面我附上了检查打印状态的代码。


inStream = btSocket.InputStream;
outStream = btSocket.OutputStream;
                      
byte[] reader = new byte[1024];
                        
//Send command to printer
byte[] @try = "\x10\x04\x01".ToBytes();
outStream.Write(@try, 0, @try.Length);

//Read from printer
if (inStream.CanRead)
{
    //string stat_res = inStream.Read(reader).ToString();
    inStream.Read(reader, 0, reader.Length);
    string text = Encoding.UTF8.GetString(reader, 0, reader.Length);
    Debug.WriteLine($"Status res: {text}");
}

我已经测试了上面的代码,我收到了如下所述的输出。 以字符串形式输出为 up/down 箭头 [0:] Status res: ? 或整数形式 [0:] Status res: 1

我可以知道我在这里犯了什么错误吗?我已经提到了使用 python 或 java 开发并转换为 C# 的其他问题,但它仍然没有像我预期的那样产生正确的输出。我可以知道我在这里做错了什么吗?我正在使用 ESCPOS Nuget 将文本转换为字节形式。

我使用的打印机是Bixolon,型号是SPP-R410。我正在使用 ESC/POS 命令以 Xamarin 形式开发此应用程序。

谢谢。

SPP-R410 命令手册可在此处获取。
BIXOLON | Downloads :: mobile printer, portable printer...

照着看,第一个0x10是不需要的,只有0x04,0x01好像不错

由于要通知的状态应该是0x12:Online或0x1A:Offline,可能是没有通知到正确的数据,或者您的理解有误。

即使通知了正确的数据,两者都不是可打印的字符代码,所以即使执行Encoding.UTF8.GetString()处理,也无法掌握内容。
在这种情况下,你应该做的是 BitConverter.ToString().
或者,您可以 reader[0].ToString("X") 仅 reader 缓冲区的第一个字节,因为只会报告一个字节。