多串口通信问题 ( 积分: 100 )

  • 主题发起人 主题发起人 wtj
  • 开始时间 开始时间
W

wtj

Unregistered / Unconfirmed
GUEST, unregistred user!
串口是不确定的,用API主动采集数据,怎么做?能给这方面的例子最好。
我的E—MAIL:wuchejie123@21cn.com
 
使用api不知道,是不是可以使用spcomm之类的,侦听串口就可以,如果有信息回来,采集数据就可以。
 
首先,确定计算机有几个串口!自己设置也好,自动查询系统配置也好。
其次,你的数据必须有识别的依据,你不能做成鼠标发送的也是你要采集的数据。
再次,就是你自己的编程思路了,你可以一次性把所有串口统统打开,然后做等数据,或者按一定时间轮询依次打开串口,若无数据发生,就关闭串口,再去打开下一个串口。

祝好运!
 
首先谢谢你们两位热情回答我的问题;我用的是API函数写的串口接收数据的。
我的串口数量确定是从数据库里来的,最多达到100个串口。我现在已经打开了所有的串口,用自定义接受消息,如:const WM_COMTYPE=WM_UER+1; 但一个串口有一条这样的消息。那么如果有N个串口我就要在程序里定义N个const WM_COMTYPE=WM_UER+N 个这样的消息,这样的程序架构肯定不行的。我现在找不到很好的方法啊,郁闷!!
 
把所有串口做到列表中,对每个串口进行循环。
for i := 0 to ComList.Count - 1 do
begin
{ 打开串口 }
OpenCom(TCom(ComList.Items));
{ 接收数据 }
RecieveData()....
{ 处理数据 }
.......
end;
 
发送WM_COMTYPE消息时在WPARAM或LPARAM参数中加上标识,比如6表示是COM6的消息,然后在接收到消息后再根据WPARAM或LPARAM区分。
 
有谁可以提供点菜系统的那种八口COM PCI卡
 
to 汾阳仲王
你能详细说一下:“在WPARAM或LPARAM参数中加上标识”,怎么加?加上后有什么方法接收到消息呢?我的接收方法是这样定义的:procedure rec(var message:Tmessage);message;WM_COMMNOTIFY; 其中const WM_COMMNOTIFY=WM_UER+1 这样的只接收到一个串口发来的消息,我要的是动态的方法接收多串口的数据消息。
 
这个问题我也想知道,如何知道那个用的是那一个口呢?如何让它们接到一个usb接口上呢?
 
发送消息我在线程里发送的,就是发送WM_COMMNOTIFY+1的消息,因为消息是常量的定义,所以决定我的接收方法是静态的。我就是想动态的发出不同的消息,用动态的方法根据不同的消息接收不同串口发来的数据?可是我不知道怎么做了。
 
没人回答啊,分少了吗,我可以另开贴呀!!!!
 

Similar threads

S
回复
0
查看
816
SUNSTONE的Delphi笔记
S
S
回复
0
查看
737
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部