【发布时间】:2017-03-22 18:33:47
【问题描述】:
您好,有人能告诉我们在串行端口上缓冲传入值的最佳方法是什么吗?因为我有一些值在写入文本框时被损坏的问题。我已经在以下问题中问过这个问题:Why do I get partly strange values from serial port in C# 有人告诉我这是因为我没有缓冲它们。当我将从串口获取的字符串写入文本文件时,我得到了这个:
12.5 g
12.5
g
12.5 g
12.
5 g
12.5 g
12.5 g
12.5 g
1
2.5 g
12.5 g
12.5 g
12.5 g
12.5 g
12.5 g
12.5 g
12.5 g
12.5 g
12.5 g
希望有人可以帮助我。
【问题讨论】:
-
我阅读了上一个问题,但您似乎不明白潜在的问题是什么。假设串口吐出“12.5g, 12.6g, 12.4g”,但你每次读入超过5个字符而不自知,所以你一次读入“12.5g, 1”,然后下一次读入在“2.6g,12”中。或类似的东西。您在文本框中写信可能与您的问题无关。
-
我认为问题出在此处:
int dataLength = _serialPort.BytesToRead; byte[] data = new byte[dataLength]; int nbrDataRead = _serialPort.Read(data, 0, dataLength); if (nbrDataRead == 0) return; string str = Encoding.UTF8.GetString(data);
标签: c# serial-port buffer