首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# serialPort速度

C# serialPort速度
EN

Stack Overflow用户
提问于 2009-08-21 11:39:44
回答 1查看 6.9K关注 0票数 4

我正在开发一些基于串行通信的协议监控工具。

串行BaudRate=187,5kb我使用System.IO.Ports.SerialPort类。

该协议有4种帧。他们有1位,3位,6位,10-255位。我可以和他们一起工作,但是我收到它们太晚了,无法响应

一开始,我收到的第一个包装后,前。96毫秒(太晚了),它包含大约1000 B。这意味着20-50帧(太多,太晚)。后来,它的工作更加稳定,3-10字节,但它仍然太晚,因为它包含1-2帧。当然,1帧是可以的,但2已经太晚了。

你能告诉我如何处理它更可靠吗?我知道这是可能的。

Revision1:

我试过直截了当的方式:

代码语言:javascript
复制
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
       if (!serialPort1.IsOpen) return;
       this.BeginInvoke(new EventHandler(this.DataReceived));
}

和背景工人:还有..。新胎面(读)和..。总是一样的。太迟了太慢了。我必须返回到WinApi并导入一些内核32.dll函数吗?

第2版:这是代码使用的一部分:

代码语言:javascript
复制
int c = serialPort1.BytesToRead;
byte[] b = new byte[c];
serialPort1.Read(b, 0, c);

我想这是在SerialPort类中使用流的一些问题。或者是一些同步问题。

第三版:我不同时使用!我只是尝试了不同的方法。

看待MarekK

EN

回答 1

Stack Overflow用户

发布于 2010-01-10 02:14:43

也许您应该阅读这个第一,因为这个bug与DataReceived事件有关,该事件有时不会触发,而且它在Framework3.0/3.5中仍未修复。此外,在is 2008/NET3.5下,您应该阅读一些关于这张海报的这里,他在使用它时向微软报告了问题……我不能说这是真的,或者not...but是值得记住的东西,about...and微软确实对引入.NET版本2的.NET版本有一定的困难。

当时,我正在使用.NET 1.1,我遇到了使用VB6的ActiveX控件的版本的建议,根据互联网上的来源,它是最好的串行通信控件!

您最好使用第三方代码来处理串行通信,通常是在托管世界之外编写的串行通信,即使用大量p/调用的非托管通信。

我试过使用MSDN文章这里中的John版本,我确实发现这非常令人讨厌,因为没有办法异步地这样做,而且这是一次可怕的编码体验。

最后,我确实使用了弗兰森提供的一个,这比Hind的代码产生了更好的结果。

希望这能帮上忙最好的问好汤姆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1311459

复制
相关文章

相似问题

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