请问怎么把一个正常的串口收发变成多线程的

shanyang1 2010-04-12 06:25:02
有一个vc工程里面,在主线程下有串口收发函数read(参数)和write(参数)
现在发现串口读写太占资源了,每次执行到串口读写的时候,鼠标都没法动
想改成在另外一个线程里面做读写的工作,不希望改动read和write函数本身的参数,另外串口创建,初始化在主线程进行
有什么办法可以么?
...全文
153 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
citroen_kimi 2010-04-23
  • 打赏
  • 举报
回复
串口操作用单件模式封装就行。
用户 昵称 2010-04-17
  • 打赏
  • 举报
回复
俺将读数据放到线程里。
zxdlms 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vc1000 的回复:]
可以将你的监视串口与读数据放一个线程里,数据量大的话处理数据另开一线程,发送数据开一个线程
[/Quote]

同意。
如果发送数据不频繁,且发送的数据量不大,也可以直接在主线程中完成。如果要发送大量数据,则要开一个写线程,然后你的write函数向写线程发送写消息就可以了,倒是不用改变什么。

read函数如果改成多线程的话,估计得做更改了。数据的接收得具体问题具体分析,一般都是串口监视线程等到有数据后读取数据,然后发消息给主线程,主线程再根据具体需要处理数据。
vc1000 2010-04-16
  • 打赏
  • 举报
回复
你的界面线程应该只负责显示,响应鼠标消息等;我上面的三个线程都是指的工作者线程
vc1000 2010-04-16
  • 打赏
  • 举报
回复
可以将你的监视串口与读数据放一个线程里,数据量大的话处理数据另开一线程,发送数据开一个线程
wenfengsoftware 2010-04-14
  • 打赏
  • 举报
回复
这个要看什么原因导致太占资源。如果是因为接受的数据太大, 那么就分多次接受。每次接受时,sleep(50)
一下可能会好些。 你即使放到另外一个线程内, 同样的事情还是要做的呀, 那么就会同样多的占用资源。
而且可能会占用更多, 因为你又开了一个线程。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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