怎么在serialport控件的dataReceived事件中将读取的数据更新到UI上
如何在serialport控件的dataReceived事件中将读取的数据更新到UI上,求助
大家好,小弟正在接触一个温度测量方面的项目,采集到的温度数据通过串口传递到上位机,我用的C#的serialport控件,在控件的dataReceived事件里处理接收到的数据(主要是将数处理后显示在波形控件和文本框中),程序运行后出现问题,波形控件一开始可以更新,读取几个数据后就停止不再更新。调试半天找不到问题,看到有网友说,invoke里面不宜放太多方法,是不是这出现什么问题了,有没有什么方法可以不用invoke,将数据分离出去处理呢,求解。多谢。以下是我的代码:
大家好,小弟正在接触一个温度测量方面的项目,采集到的温度数据通过串口传递到上位机,我用的C#的serialport控件,在控件的dataReceived事件里处理接收到的数据(主要是将数处理后显示在波形控件和文本框中),程序运行后出现问题,波形控件一开始可以更新,读取几个数据后就停止不再更新。调试半天找不到问题,看到有网友说,invoke里面不宜放太多方法,是不是这出现什么问题了,有没有什么方法可以不用invoke,将数据分离出去处理呢,求解。多谢。以下是我的代码:
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
isReceving = true;//当前正在接收数据
int Len = serialPort.BytesToRead;//获取缓冲区数据字节数
if ((Len < 1)||(Len != 7))// 数据包为7个字节
{
isReceving = false;//接收完成标志
return;
}
byte[] recData = new byte[Len];//新建字节数组,用以接收缓冲区数据
serialPort.Read(recData, 0, Len);//读取Len字节数据到recData数组
string recHex = string.Empty;//新建字符串变量
for (int i = 0; i < recData.Length; i++)
{
string strTemp = Convert.ToString(recData[i], 16);//转换成16进制字符
if (recData.Length < 2)
{
strTemp = '0' + strTemp;
}