如何解决如何检查POS打印机状态
当前,我正在使用POS打印机移动应用程序。我已经完成了文本,图像和条形码或qrcode的打印方法。现在,我正在尝试使用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,@try.Length);
//Read from printer
if (inStream.CanRead)
{
//string stat_res = inStream.Read(reader).ToString();
inStream.Read(reader,reader.Length);
string text = Encoding.UTF8.GetString(reader,reader.Length);
Debug.WriteLine($"Status res: {text}");
}
我已经测试了上面的代码,并且收到了如下所述的输出。
以字符串形式输出为向上/向下箭头
[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")
git remote set-url origin https://url/new/remote/repository
git push
读取器缓冲区的第一个字节,因为将只报告一个字节。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。