我有一个USB转RS232适配器,我用它从条形码阅读器获取长输入(28个字符)。我的电脑一切正常。
我将我的c#应用程序安装在另一台有RS232串口连接到其PCI-E的计算机上,当我从条形码阅读器接收输入时,它将其分成两部分!
我怎么知道的?因为我在c#应用程序上有一个用于DataReceived
的事件处理程序,它被调用了2次,每次我都会得到输入的一部分。
PCI E端口由牛津半导体公司制造。
操作系统为Windows 7。
我假设这是硬件问题,而不是我的应用程序中的问题。也许要更改一些设置,缓冲区大小或类似的东西,但我找不到这样的东西。
在进阶时谢谢!
发布于 2012-12-29 03:02:06
不,这是你的应用程序。您不应该期望所有数据都能立即可用;您在第一台机器上就很幸运了。你需要调用Read()
,直到你得到你想要的一切。
UART、驱动程序等的差异可能会导致窗口多次引发该事件,这取决于时间和其他因素。
大致是这样的:
char buf[28];
int offset = 0;
int nread;
while (offset < buf.Length) {
nread = comPort.Read(buf, offset, buf.Length - offset);
offset += nread;
}
https://stackoverflow.com/questions/14074375
复制相似问题