首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么来自SerialPort的文本会分成几个部分?

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

Stack Overflow用户
提问于 2018-08-05 02:27:46
回答 2查看 64关注 0票数 1

我使用SerialPort接收来自手持Scanner.In加载项的文本,手持扫描仪使用usb端口与计算机连接,但其驱动程序将使其成为虚拟SerialPort。

因此,我使用这个代码来接收文本:

代码语言:javascript
复制
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

七八九0

有时,例如:

123456

七八九0

有时,例如:

12

34

567890

这有什么问题,为什么没有规则的文本被分割成几个?我怎么能让它结合在一起,而不再被分割?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-05 02:57:58

串行端口I/O可以看作是一个流接口,也就是说,您可能不会在一个回调中接收所有的数据。

当你看到:

代码语言:javascript
复制
12
34
567890

...I怀疑正在发生的情况是,您的回调被调用了三次,其中有3个Console.WriteLine调用。因此,您的输出看起来坏了。

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

票数 3
EN

Stack Overflow用户

发布于 2018-08-05 03:08:05

配置您的扫描器,每次扫描之后,它应该添加一个回车,然后得到如下结果

代码语言:javascript
复制
var result = serialPort.ReadLine();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51690971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档