日期:2014-05-17  浏览次数:20996 次

如何在serialport控件的dataReceived事件中将读取的数据更新到UI上,求助
大家好,小弟正在接触一个温度测量方面的项目,采集到的温度数据通过串口传递到上位机,我用的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;
                 }