我的RS232串口拆分我发送的输入

时间:2012-12-28 19:00:19

标签: c# serial-port

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

我将c#应用程序安装在其PCI-E连接到其PCI-E的其他计算机上,当我收到条形码阅读器的输入时,它将它分成两部分!

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

RS232 PCI-E端口是Oxford Semiconductor Inc.的制造商。

操作系统是Windows 7。

我认为这是一个硬件问题而不是我的应用程序中的问题..可能有一些设置要改变,缓冲区大小或类似的东西但我找不到类似的东西。

先谢谢!

1 个答案:

答案 0 :(得分: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;
}