文本框中的串行读取数据

时间:2019-01-22 07:44:59

标签: c#

点击“按钮”,我向传感器发送命令(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都将挂起,我不知道自己在做什么错,我正确打开和关闭了串口, 那为什么我无法在文本框中显示串行读取的数据

1 个答案:

答案 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