请教:串口开发中的线程设计思路

dongguacha 2005-11-20 03:57:19
小弟正在做一个串口通讯的项目,在接收串口返回的数据时试图使用队列保存数据(串口数据不定时陆续返回),同时要对数据进行分解处理及写DB,因此考虑用两个线程(生产者与消费者)解决,思路如下:

定义一个队列的类,用来建立队列、提供“入列”和“出列”的方法和线程同步机制;
定义生产者和消费者类;

主线程中:

创建队列类的对象;
......
串口返回数据-》激发事件
{
读串口获取数据;
创建“入列”线程;
创建“出列”线程;
启动“入列”线程;
启动“出列”线程;
“入列”线程.Join();
“出列”线程.Join();
}

这样的设计思路是否周全,请有此类开发经验的高手襄助!谢谢!
...全文
257 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
icedreamboy 2006-06-06
  • 打赏
  • 举报
回复
如果只有一个串口的话两线程应该够了,如果是串口服务器的可以开多线程,使用线程池,其实用异步也挺好。
storm2003 2006-06-06
  • 打赏
  • 举报
回复
ding
kiwell 2006-06-06
  • 打赏
  • 举报
回复
mark
tyj023 2006-02-06
  • 打赏
  • 举报
回复
我用了3条线程:1、主线程(用于接收字符,放入字符缓冲区)2、数据桢分析线程(分析字符缓冲区,形成数据桢,将数据桢放入桢缓冲区)3、操作数据库线程(分析数据桢缓冲区,提取有用桢的数据字段,将数据存入数据库)。
tyj023 2006-02-06
  • 打赏
  • 举报
回复
本人刚学C#不久,也遇到同样的问题,数据采集程序一旦启动,cpu资源消耗严重!!!!!!!!!1
tyj023 2006-02-06
  • 打赏
  • 举报
回复
up
emp 2005-11-30
  • 打赏
  • 举报
回复
用2个线程
dongguacha 2005-11-30
  • 打赏
  • 举报
回复
UP
zgtt 2005-11-21
  • 打赏
  • 举报
回复
保证采集数据的线程始终处于可用状态,防止数据丢失
你的采集频率慢也要注意,如果高频采集时更要保证采集的线程的实时
dongguacha 2005-11-20
  • 打赏
  • 举报
回复
请问zgtt(闻涛) ,为什么不用Join()?
zgtt 2005-11-20
  • 打赏
  • 举报
回复
不要用 线程.Join();
zgtt 2005-11-20
  • 打赏
  • 举报
回复
比较合适的方式:
设置连个线程序,一个同步事件,一个线程只负责采集数据,采集到数据后就给同步事件发动信号,另一个程序启动后等待信号处理数据,受到事件信号后处理数据,处理完继续等待.
s5689412 2005-11-20
  • 打赏
  • 举报
回复
我刚才提到的那个实现在这里可以下载:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/PISAPICF.asp

是Compact Framework,不过应该对普通Framework也同样适用,请参考。
s5689412 2005-11-20
  • 打赏
  • 举报
回复
你是要自己实现COM口的读写吗?我以前在PDA上使用过COM口通信的程序,微软提供了一个实现,可惜找不到那里可以下载了,好像在GotDotNet上有。

另外在CodeProject上也有类似的东东,可以参考一下:
http://www.codeproject.com/dotnet/DotNetComPorts.asp

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧