我有一个USB转RS232适配器,我用它来从条形码阅读器获取长输入(28个字符)。 我的电脑一切正常。
我将c#应用程序安装在其PCI-E连接到其PCI-E的其他计算机上,当我收到条形码阅读器的输入时,它将它分成两部分!
我怎么知道?因为我在我的c#应用程序上有DataReceived
的事件处理程序,并且它被调用了2次,每次我都得到一部分输入。
RS232 PCI-E端口是Oxford Semiconductor Inc.的制造商。
操作系统是Windows 7。
我认为这是一个硬件问题而不是我的应用程序中的问题..可能有一些设置要改变,缓冲区大小或类似的东西但我找不到类似的东西。
先谢谢!
答案 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;
}