一台计算机上多个线程读写串口的问题(10分)

  • 主题发起人 bme_liuwei
  • 开始时间
B

bme_liuwei

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁,
我想通过上位机轮询 15 台下位机数据,通过串口(Modbus-RTU)协议通讯,
想通过多个线程分别轮询各个下位机,
由于串口是临界资源,这些线程需要通过同一个串口轮询,
结果调试时发现串口冲突严重
请问有什么解决方法?
谢谢
 

地质灾害

Unregistered / Unconfirmed
GUEST, unregistred user!
单独线程就足够了。
 
M

muhx

Unregistered / Unconfirmed
GUEST, unregistred user!
1.为串口设置一个临界区,只有一个线程在某个时间可以使用串口
2.结束一次收发操作之后加适当延时,比如Sleep(100)
瓶颈在串口上,使用多线程无法提高速度
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
同是时间只能有一个线程操作某一个串口
如果想提高速度,可以试着把设备接到不同的串口上
 
S

SupermanTm

Unregistered / Unconfirmed
GUEST, unregistred user!
建议用个 MCS-51 的单片机去做一个通讯中间件,负责 Modbus-RTU 方面的事务,并把采集的数据送回给PC(用软件模拟多一个串行发送口就可以了),这样更便于调试也更安全
 
W

wrf

Unregistered / Unconfirmed
GUEST, unregistred user!
楼上的方法好
 
H

heidianfeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我觉得muhx说的办法可以试一下
 
B

bme_liuwei

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢大家了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
581
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部