点击“按钮”,我向传感器发送命令(8字节数据)以向我发送数据, &我正在串行读取数据,我的传感器正在传输(9字节数据)&我已将此串行可用数据读入字符串。
byte[] query = new byte[8] { 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x0B };
string incoming;
serialPort1.Write(query, 0, query.Length);
incoming = serialPort1.ReadLine();
textBox1.Text = incoming;
但是,每当我单击按钮时,GUI都将挂起,我不知道自己在做什么错,我正确打开和关闭了串口, 那为什么我无法在文本框中显示串行读取的数据
答案 0 :(得分:0)
从注释中看,传感器似乎返回了9个字节。返回缓冲区的SerialPort方法是SerialPort.Read:
console.log(row.data())
如果这些字节包含文本,Encoding.ASCII.GetString(data)将使用ASCII代码页将它们转换为字符串。
但这是一种阻止方法。这意味着UI线程将阻塞,直到传感器返回数据。在大多数情况下,这应该不是问题。通过其SerialPort.BaseStream属性,可以将串行端口视为流。该属性的类型为var data=new byte[9];
var count=serialPort1.Read(byte,0,9);
,它提供了异步方法。
以下代码不会阻止:
Stream