如何检查 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 缓冲区的第一个字节,因为只会报告一个字节。
目前我正在使用 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 缓冲区的第一个字节,因为只会报告一个字节。