当前,我正在使用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, 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}");
}
我已经测试了上面的代码,并且收到了如下所述的输出。
以字符串形式输出为向上/向下箭头
[0:] Status res: ?
或整数形式
[0:] Status res: 1
我可以知道我在这里犯了什么错误吗?我提到了其他使用python或java开发并转换为C#的问题,但它仍然无法产生预期的正确输出。我可以知道我做错了什么吗?我正在使用ESCPOS Nuget以便将文本转换为字节格式。
我正在使用Bixolon的打印机,型号为SPP-R410。我正在使用ESC / POS命令以Xamarin形式开发此应用程序。
谢谢。
答案 0 :(得分:1)
可在此处获得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
读取器缓冲区的第一个字节,因为将只报告一个字节。