13 条回复  ·  1470 次点击
hulalahei 楼主 初学 2025-6-12 13:15:47
@GeruzoniAnsasu 还有个问题,就是同步读数据堆积了,无法获取到实时的数据。
hifeng 初学 2025-6-12 13:26:17
类里面建个队列,ConcurrentQueue datas =new ConcurrentQueue(2000) 回调直接读 BytesToRead 到 buff, 添加到队列 datas.Enqueue(buff) 就返回; 另外一个线程去处理 datas;
hulalahei 楼主 初学 2025-6-12 13:27:59
@muyiluop #5 意思是把读和处理分开吗?我记得我试过只读数据,压根不处理,也会造成数据的积累。比如改成这样之后 int toRead = _serialPort.BytesToRead; if (toRead <= 0) return; var buffer = new byte[toRead]; // 最多读 10 字节 int numRead = _serialPort.Read(buffer, 0, buffer.Length); 正常是返回 5 字节,一开始会是正常 5 5 5 5 5 5 5 这样返回,后续就会变成 5 5 5 120 160,然后越来越大。
hulalahei 楼主 初学 2025-6-12 13:33:09
@hifeng 我试试
12
返回顶部