gpt4 book ai didi

c# - 为什么来自 SerialPort 的文本会分成几个部分?

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:06 26 4
gpt4 key购买 nike

我使用 SerialPort 接收来自手持扫描仪的文本。此外,手持扫描仪使用 USB 端口与计算机连接,但其驱动程序会将其连接到虚拟串行端口。

所以我使用这段代码来接收文本:

SerialPort serialPort=new SerialPort("COM7");
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Console.WriteLine(serialPort.ReadExisting());
}

嗯,当我运行程序时,如果条码是“1234567890”,收到的文本会无规则地分成几部分。

如:
123
45
7890


有时如:
123456
7890


有时如:
12
34
567890


这有什么问题,为什么文本没有规则地分成几份?如何让它组合在一起而不是再分割?

PS:我试过不同品牌的手持式扫描仪,如Datalogic QD2430/Honeywell GHD1900,但这些问题仍然存在。

最佳答案

串行端口 I/O 可以被认为是一个流接口(interface),即您可能不会在单个回调中接收到所有数据。

当你看到:

12
34
567890

...我怀疑正在发生的事情是您的回调被 3 次 Console.WriteLine 调用调用了 3 次。因此,您的输出看起来很糟糕。

通常您需要读取所有字节直到到达某个终止符,这取决于设备。在此之前,您将需要缓冲接收到的数据。在此之前,根据应用的性质,您可能无法处理请求。

关于c# - 为什么来自 SerialPort 的文本会分成几个部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51690971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com