C#串口测速我在开发一些基于串口通信的某种协议的监控工具。SerialBaudRate=187,5kb我使用System.IO.Ports.SerialPort类。该协议中有4种类型的帧。它们有1Byte、3Bytes、6Bytes、10-255Bytes。我可以和他们一起工作,但我收到他们太晚了。一开始,我收到的第一个包裹是第一位的。96毫秒(为时已晚),它包含大约1000B。这意味着20-50帧(太多,太晚了)。后来它工作得更稳定,3-10字节,但现在为时已晚,因为它包含1-2帧。1帧当然可以,2帧就来不及了。你能指出我如何更可靠地处理它吗?我知道这是可能的。修订版1:我试过:privatevoidserialPort1_DataReceived(objectsender,SerialDataReceivedEventArgse){if(!serialPort1.IsOpen)return;this.BeginInvoke(newEventHandler(this.DataReceived));}andBackgroudworker:and...newTread(read)and...总是一样的。太晚了,太慢了。我是否必须返回WinApi并导入一些kernel32.dll函数?修订版2:这是Treading方式中使用的部分代码:intc=serialPort1.BytesToRead;字节[]b=新字节[c];serialPort1.Read(b,0,c);我认为这是在SerialPort类中使用流的一些问题。或者一些同步问题。修订版3:我不会同时使用两者!我只是尝试了不同的方法。关注MarekK也许你应该先阅读这篇文章,因为这个错误与DataReceived事件有关,它有时不会触发,并且在Framework3.0/3.5中仍未修复。此外,您应该在这里阅读一些关于此海报的内容,当他在VS2008/NET3.5下使用它时遇到问题时向Microsoft报告...我不知道这是不是真的...但值得注意...和??Microsoft确实在.NET版本2中引入了.NET版本。当时,我正在使用.NET1.1,我遇到了使用VB6的ActiveX控件附带的版本的建议,根据互联网上的消息来源,它是最好的串口通讯控件!您可能最好使用3rd方代码来处理串行通信,通常是在托管世界之外编写的,即具有大量p/invoke的非托管代码。我已经尝试使用JohnHind的版本,该版本在MSDN文章中找到,我发现它非常令人反感,因为没有办法异步执行它,而且这是一种糟糕的编码体验。我最终使用了Franson提供的代码,它比Hind的代码产生了更好的结果。希望这有帮助,最好的问候,汤姆。以上就是C#学习教程:C#串口极速分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
