C# 串口收发异常,偶尔有某个收不到,断点计数都断不到,原因分析(1)

两盒软妹~` 提交于 2020-01-10 19:25:05

经了解:C#消息机制是消息流水线响应机,不能同时进行。

C#  数据更新是在Timer,分析:可能是在进行time任务时,不能进行invoke接收任务。之后我打算开个多线程试试或把接收中处理精简看看能不能收到。

private void Form1_Load(object sender, EventArgs e)
 {

........

 //定时器
            System.Timers.Timer aTimer = new System.Timers.Timer();
            aTimer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            aTimer.Interval = 3;
            aTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
            aTimer.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件;

..........

}

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
      ComStatusdeal();
}

//接收在

sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);

public void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)

{

            System.Threading.Thread.Sleep(50);//延时50ms完全接收数据
            //this.Invoke跨线程访问,辅助线程访问主线程控件
            this.Invoke((EventHandler)(delegate
            {
                tc.DataReceived_485();
            }));

}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!