KoboldCom-串口通讯组件

.Net 串口通讯开发,一般采用自带的System.IO.Ports下的SerialPort可以解决大多数开发场景。
以下介绍我的开发场景:

    1. 下位机以每20毫秒发送一包数据到上位机,每包大约byte[500]
    1. 上位机在接收到数据包后通过scichart在页面上绘制波形图
    1. 调试过程中发现波形有异常情况(下位机上传一个正弦曲线)。
    1. 最终发现数据有丢包情况,接收5000包大约有20+左右包丢失

最初实现方案

  • 1.SerialPort.DataReceived
  • 2.采用独立线程读取串口数据
  • 3.读取后立即放入FIFO集合ConcurrentQueue,其他解析线程再消费ConcurrentQueue

KoboldCom

image

具体👉️介绍。更换为KoboldCom通讯后,未再发现丢包情况(下位机发送数据时,采用了包序,可方便查看数据情况)

使用方法

Communicator communicator = new Communicator(new SerialPort(), new MyProtocols());//MyProtocols解析方案
 SerialPortSetting sps = new SerialPortSetting()
 {
     Baudrate=9600,
     Port= int.Parse(Regex.Match("com4", @"\d+").Value)
 };
var isOpen= communicator.Com.Open(sps);
 communicator.OnRawDataReceived += (data)=>
{
// data is byte[]
};
//todo 协议
posted @ 2025-10-17 13:17  [在河之洲]  阅读(3)  评论(0)    收藏  举报