采用MSCOMM控件同时对两个串口通讯的问题(100分)

  • 主题发起人 主题发起人 tracing
  • 开始时间 开始时间
T

tracing

Unregistered / Unconfirmed
GUEST, unregistred user!
其中一个串口COM2采用Timer控件控制, 每一段时间发送一个指令, 接收到"OK"返回后再发送指令,
就这样不停的循环. 现在的问题是,当另一个串口COM1通讯时, COM2就再也接收不到"OK"信号,
而停止发指令. 等到COM1通讯完毕后, COM2 又开始循环.

本人分别写了两个程序, 分别控制两个串口. 同时运行时互相之间就没有干扰.
请问在单个程序中如何解决此问题?
 
定时发送后不能采取阻塞方式(循环),要返回采取异步方式等待回送
 
iie: 你不是要我采用ONCOMM_EVENT吧, 再说COM2是定时检测返回信号后, 再发送指令.
q_l: 我没有用过多线程, 请问在THread里可否直接调用其它Unit里的过程
而达到多线程的效果.
 
没问题呵,可以在COM2响应接收事件的代码中加入判断返回数据的合法性,
并发送指令
 
处理的怎么样,我现在要处理12个串口的数据,采用线程,那些协议也要够我改的了
 
用线程吧,我用线程实现了12个串口的控制。充分利用类的好去。
 
to Ridolph
我现在使用线程控制多个端口(多串口卡),但在运行时总出现内存地址读写错误.
您能告诉我怎样使用多线程的更好方法吗?谢谢.
qiangyao@pub.ln.cninfo.net
 
to Ridolph:
我现在写一个程序控制多个端口(6个),请问能告诉我您的方法吗?多谢多谢
pipi158@21cn.net
 
我的程序可以控制256个,呵
 
用两个MSCOMM看看
 
对胃口,关注
 
[:(][:(!][^][?][:D][:)]
 
同意“影子”的做法,简单
 
最好用ONCOMM_EVENT事件,可以省去线程同步及退出的问题。用好ONCOMM_EVENT其实很简单,
关键在于写好收数据的方法和发数据的方法就可以了。处理速度上根本不用担心。用MSCOMM
控制多个串口建议采用动态创建,对采用相同协议的串口指定相同的ONCOMM_EVENT事件方法。
 
改用spcomm吧,这个比mscomm好用多了,而且是多线程的,带源代码。
 
后退
顶部