我正在尝试从正在嗅探标准收据打印机的COM端口读取数据。我正在使用MSDN中有关docs中发现的SerialPort.DataReceived
事件的示例。
我正在获取数据,但字符混乱。如何将其转换为可读文本?它是二进制编码的吗?能否请您提供有关此类串行端口编程的见解?
我在互联网上搜索了数小时,试图弄清楚如何使文本更具可读性,但是我在A和B之间缺少一些概念。
我读过某个地方,可能是协议不匹配。有没有办法检测到这一点?
更新1
我正在StackOverflow的thread I found处尝试新的东西(我使用的是Update 1),我不确定现在要看的是什么,但是我再也找不到奇怪的字符了:
那么如何从这里获取可读的文本?
更新2
我还是有些困惑。
private static void port_OnReceiveDatazz(object sender,
SerialDataReceivedEventArgs e)
{
SerialPort spL = (SerialPort)sender;
byte[] buf = new byte[spL.BytesToRead];
Console.WriteLine("DATA RECEIVED!");
spL.Read(buf, 0, buf.Length);
Console.WriteLine(Convert.ToBase64String(buf));
foreach (Byte b in buf)
{
//Console.Write(b.ToString());
}
Console.WriteLine();
}
最佳答案
是的,您得到了很多字节,如果您注意,则会得到ascii号。 5 0、6 5等是数据的标题。
首先,您需要了解协议,但是如果您想“阅读”该协议,则必须将其转换,而不是使用ToString进行转换,则需要使用:
Convert.ToBase64String(bytes)