S
sxwy
Unregistered / Unconfirmed
GUEST, unregistred user!
一个MSCOMM可以操作多个串口,前提是打开使用之后要关闭.
相同的道理,一个串口可以管理多个串口通信设备(基于485通信),16台仪器也不多,效率低主要怕串口处理数据量过大(由于串口本身速率的关系),100台仪器,每次只发一个字节,上传一个字节(9600波特率)和一台仪器,发10000个节字,收10000个字节(9600波特率),哪一个时间长(还不包括对数据处理的时间).
我以前做过电力抄表管理软件,一次性可以控制多个客户端(电表),所有电表的数据都是一问一答上传到PC机,一般现在的电表或者仪器仪表都是主从应答式的,电脑没有发对应电表地址的命令,仪表就不返回数据.在波特率可以提高的情况下,完全有时间控制16台仪器仪表.如果控制不了,只能说程序上有问题.顺便提一下,在串口里不提倡用SLEEP之类的延时,因为用SLEEP延时无法交出控制权.这样有时从仪表传上来的数据,电脑串口无法及时响应.
按照协议做好公共调用函数之后,用一个FOR循环,就可以一次性读取全部16个仪器仪表的返回数据.不要动不动就搞多线程,线程开多了并不好管理.有利也有弊.
相同的道理,一个串口可以管理多个串口通信设备(基于485通信),16台仪器也不多,效率低主要怕串口处理数据量过大(由于串口本身速率的关系),100台仪器,每次只发一个字节,上传一个字节(9600波特率)和一台仪器,发10000个节字,收10000个字节(9600波特率),哪一个时间长(还不包括对数据处理的时间).
我以前做过电力抄表管理软件,一次性可以控制多个客户端(电表),所有电表的数据都是一问一答上传到PC机,一般现在的电表或者仪器仪表都是主从应答式的,电脑没有发对应电表地址的命令,仪表就不返回数据.在波特率可以提高的情况下,完全有时间控制16台仪器仪表.如果控制不了,只能说程序上有问题.顺便提一下,在串口里不提倡用SLEEP之类的延时,因为用SLEEP延时无法交出控制权.这样有时从仪表传上来的数据,电脑串口无法及时响应.
按照协议做好公共调用函数之后,用一个FOR循环,就可以一次性读取全部16个仪器仪表的返回数据.不要动不动就搞多线程,线程开多了并不好管理.有利也有弊.