0

我有一个 USB 到 RS232 适配器,我用它从条形码阅读器获取长输入(28 个字符)。在我的电脑上一切正常。

我将我的 c# 应用程序安装在另一台 RS232 串行端口连接到其 PCI-E 的计算机上,当我接收到来自条形码阅读器的输入时,它将它分成两部分!

我怎么知道?因为我DataReceived在我的 c# 应用程序上有一个事件处理程序,它被调用了 2 次,每次我得到一部分输入。

RS232 PCI-E 端口由 Oxford Semiconductor Inc. 制造。

操作系统是 Windows 7。

我假设这是硬件问题,而不是我的应用程序中的问题。也许需要更改一些设置、缓冲区大小或类似的东西,但我找不到类似的东西。

先谢谢了!

4

1 回答 1

3

不,这是你的申请。您不应该期望所有数据都立即可用;你在第一台机器上很幸运。你需要打电话Read(),直到你得到你所期望的一切。

UART、驱动程序等方面的差异可能导致窗口多次引发该事件,具体取决于时间和其他因素。

这些方面的东西:

char buf[28];
int offset = 0;
int nread;
while (offset < buf.Length) {
    nread = comPort.Read(buf, offset, buf.Length - offset);
    offset += nread;
}
于 2012-12-28T19:02:05.587 回答