有谁做过Win2K下多个串口(2个以上)同时连接Modem通讯的程序,希望告诉我一些经验(100分)

  • 主题发起人 speedyang
  • 开始时间
S

speedyang

Unregistered / Unconfirmed
GUEST, unregistred user!
我做多个串口同时连接Modem通讯的程序,用于采集远程终端(单片机系统)的数据,在只有一组Modem通讯时还可以(不常断线),
但是多个串口同时却经常断线,通讯协议采用“命令--应答”的方式
 
你可采用MSCOMM控件,通过事件方式检测MODEM的连接状态。当MODEM设置成Carrier
Detected模式时,当事件comEvCD产生时,检查CDHolding属性,如果为true,则MODEM
在线,false时为断线。当检测到断线时即刻重连。
在使用多个串口拨号通信时,创建多个MSCOMM实例,设置号通信参数,和响应事件,
再多个串口通信均可以没有问题。实际运用中我同时使用了16个串口,均没有问题。
流控制最好采用硬件控制。
 
写多串口的程序用“命令-应答”方式应该没有什么问题啊,不清楚你怎么写的,不好多说
你是不用多线程了?
 
Modem通讯主要用于采集异地终端的记录(异地终端为单片机系统),有单片机系统向PC机拨号
建立连接后,PC为主,单片机系统为从,采用PC机发命令,单片机系统应答答命令的模式进行通讯

我用的是CPort264通讯控件,拨号,建立连接,都没有问题,主要问题在通讯过程中,经常断线
建立连接后的通讯时间为2分钟时,断线的概率为20%问题非常难跟踪,偶尔跟踪到,发现接收的数据包不完整。

 
建议从几个方面排除问题:
1.线路质量是否好,做对比实验即可知道。
2.MODEM设置是否正确。
3.是否有程序在某种条件下主动挂机的可能。
4.接收到数据包不完整可能为你的单片机程序接收处理有问题,接收数据处理函数响应速度
不够快,导致接收缓冲很容易满,对此可以考虑降低发送端发送数据的数度;如有可能的话
采用一些流量控制的:如硬件流控制或软件流控制,如单片机程序端实现流控制有困难,
则把通信速率降低看能否起作用。
 
可用Apro组件解决此问题!
 
顶部