我正在通过串行端口将秤连接到计算机。我检查值 SerialPort.BytesToRead 当它在循环内达到 0 时。但是,即使 BytesToRead 不等于 0,循环也会退出。我无法发布屏幕截图,因为我是新用户,但通过调试我可以看到 BytesToRead 实际上不是 0。
这导致我的数据没有被完全读取。我尝试过不同的表达方式,例如,_port.BytesToRead > 0
但结果是一样的。即使将 BytesToRead 的值分配给变量也会给出 0。没有循环,ReadExisting 不会返回从秤发送的所有数据,所以我真的别无选择。ReadLine 也不起作用。那么为什么 BytesToRead 总是 0 呢?
private void PortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
{
var input = string.Empty;
// Reads the data one by one until it reaches the end
do
{
input += _port.ReadExisting();
} while (_port.BytesToRead != 0);
_scaleConfig = GenerateConfig(input);
if (ObjectReceived != null)
ObjectReceived(this, _scaleConfig);
}
}