我想使用serialport.readline()因为它是一个阻塞调用,我得到的数据最后有 0x0D 0x0A (CR LF)。但是,我想要的是一个十六进制字符串而不是一个 Ascii 表示。
例如,我与之通信的设备正在发送像 {0xff,0xff,0x45,0x0D,0x0A} 这样的字节数组。我想在我的程序中简单地打印出来,就像这样:0xff,0xff,0x45。Readline() 会删除 LF 和 CR。
我想通过指定我想读取多少字节来使用serialport.read(buff[]...) 。但它并没有很好地工作,因为如果我读得太快,一半的数组将是 0x00,如果我读得太慢,com 端口就会溢出。我不想丢失任何字节。
我试图将从serialport.readline()得到的内容转换为字节数组,但我得到的十六进制字符串通常变成0x3f。代码是这样的:
var line = string.Join(",", mySerialPort.ReadLine().Select(c => ((Byte)c).ToString("X")).ToArray());
我改变了几次编码(ASCII,UTF8,UNICODE),但还是不行。
有什么方法可以将我从readline()获得的非 Ascii字符串转换为字节数组?