串口的速度本来就很慢啊,不加Sleep接受不全是正常的吧。。
反正我是一直加延迟的~
反正我是一直加延迟的~
解决方案 »
- 想用C#做一个扫描特定特征码的程序 不知道需要用到哪些知识?
- 比较简单的问题 <a href>传送变量参数
- 有什么书是介绍如何写一个得体的 Winform 应用程序的?
- 式设计模式视频(C#讲解)
- 100分!开发心理测试软件的问题
- 动态配置水晶报表数据源的问题。错误信息:无效报表源
- 怎么释放资源得问题
- 请问.nsf 这个扩展名是什么类型的文件?
- 如何在屏幕上取词?就象金山词霸一样.
- 在c#中文BATE2版中,用什么方法可以将DataSet更新到数据库中???
- 没有实现IComparable,Sort函数为什么是编译时不检查错误,而是运行时检查错误?
- C# 异步机制的DLL,函数结果通过带参数的消息返回
加了Sleep更不正常,你用DataReceived 必须要用到串口间的数据协议,作个缓冲区
比如串口需要收到100个字节,但是第10个字节的时候触发了DataReceived事件,这时候只会读到10个字节,剩下的会在下一次触发事件时接收,而楼主用局部变量存放读取到的数据,所以只保存了最后一次读取到的数据,误以为数据接收不全可以定义个全局变量来存放接收到的数据,这样不至于每次被新接收到的数据覆盖掉string receiveStr = Builder.ToString();
receiveStr = receiveStr.Replace(" ", "");
//将接收字符串ODOA阶段,第一部分为发送指令,第二部分为接收到数据,第三部分为>(3e)
string[] receiveArr = receiveStr.Split(new string[] { "0D0A" }, StringSplitOptions.RemoveEmptyEntries);
将receiveStr定义成全局变量,每次接受到数据receiveStr+=Builder.ToString()