waq127520 2019-11-20 09:27 采纳率: 0%
浏览 189

请问关于serialport的这段代码收到一个数据后应该触发的哪里

我有一段代码如下:

           SerialPort sp = new SerialPort();
           sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
            private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {//①
                ...
                //跨线程访问UI
                this.Dispatcher.Invoke(new Action(() =>
            { //②
                        ...
            }))
        }

现在通过串口传进来一个数据,以我的理解不是应该debug的时候到①这里吗,为什么实际debug时候是到②这里呢?求大神解惑

  • 写回答

1条回答 默认 最新

  • qq_39651385 2019-11-22 13:52
    关注
            //串口接收事件
            private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {   //断点1
    
                int n = serialPort1.BytesToRead;//端口缓冲区字节数
                byte[] byteRev = new byte[n]; //将端口缓冲区数据存入字节数组
                serialPort1.Read(byteRev, 0, n);
                string message = ""; //将字节数组存入程序缓冲区
                for (int i = 0; i < n; i++)
                {
                    message += byteRev[i].ToString("X2");
                }
    
                this.Invoke(new Action(delegate()
                {   //断点2
                    ListViewItem lvi = new ListViewItem();
                    lvi.Text = SearchSeq.ToString();
                    SearchSeq++;
                    lvi.SubItems.Add(getTime_L());
                    this.lv_device_search.Items.Add(lvi);
                }));
    
                handle += message;//断点3
    

    我写了一段代码,运行顺序是断点1=>断点2=>断点3

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料