none
Winform开发的CAN通信上位机周期为10ms的报文,偶尔会掉帧,报文间隔三十多毫秒,请问怎么解决? RRS feed

  • 问题

  • Winform开发的CAN通信上位机周期为10ms的报文,大多数情况下报文周期是正常的,偶尔会掉帧,报文间隔三十多毫秒,请问怎么解决?

    CAN报文周期发信代码如下:

    private void worker_DoWork(object senderDoWorkEventArgs e)
            {
                while (true)
                {
                    Thread.Sleep(10); 
                    /* 送信函数*/
                    Judge_SendTaskBank();
                }
            }


    2021年1月20日 7:31

全部回复

  • Hi atao28,

    根据我的测试,我发现我的这边backgroundworker是正常工作的。鉴于你是偶尔会掉帧,我推荐你使用winform控件,timers控件可以实现相同的功能。

    具体的功能代码如下:

     private void button1_Click(object sender, EventArgs e)
            {
                timer1.Start();
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                Thread.Sleep(1000);
                /* 送信函数*/
                Judge_SendTaskBank();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                timer1.Interval = 10;
            }

    希望可以帮到你。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2021年1月21日 6:11
    版主
  • 谢谢您的回答,根据我的实践,timer依然会有掉帧现象。软件运行时,我点击窗口很大概率会造成掉帧现象, 不点击窗口也会偶尔有掉帧现象,我感觉是电脑卡顿造成的,但是不知道具体原因,所以无法解决问题。

    非常感谢您能耐心回答我的问题。

    2021年2月3日 1:11
  • Can通信,不是对方会一直发送吗?那你的线程睡眠了肯定掉帧啊。

    2021年2月9日 14:01