爱新觉罗二狗 2023-06-25 10:53 采纳率: 40%
浏览 17
已结题

关于#c的问题:使用串口收数据,可能因为分包时候对bufstr的操作吗(操作系统-windows)

使用串口收数据,接收端是这样写的,但是会丢帧,可能因为分包时候对bufstr的操作吗,怎么更好的写可以不丢包

                int count = Serial.Port.BytesToRead;
                byte[] buffer = new byte[count];
                Serial.Port.Read(buffer, 0, count);
                bufstr = bufstr + Encoding.ASCII.GetString(buffer);
                Console.WriteLine(bufstr);
                int i = bufstr.IndexOf("\r\n");
                while (i != -1)//粘连分包
                {
                    GetMessage(1, new string(bufstr.Take(i).ToArray()), null);//数据处理及显示
                    bufstr = new string(bufstr.Skip(i + 2).ToArray());
                    i = bufstr.IndexOf("\r\n");
                }
  • 写回答

3条回答 默认 最新

  • 於黾 2023-06-25 11:30
    关注

    维护一个全局变量list
    接收到之后先add进list里,然后判断list里有没有换行符,有就从头到尾的执行,并把处理过的数据remove掉
    你目前的代码,必须一次性接收到完整的数据,分两次来的时候会全部丢弃

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月3日
  • 已采纳回答 6月25日
  • 创建了问题 6月25日

悬赏问题

  • ¥20 python爬虫遇到空文本取不出来
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入