如何检查POS打印机状态

时间:2020-09-09 04:05:00

标签: c# xamarin.forms bluetooth escpos

当前,我正在使用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形式开发此应用程序。

谢谢。

1 个答案:

答案 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 读取器缓冲区的第一个字节,因为将只报告一个字节。