W wtj Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-09 #1 串口是不确定的,用API主动采集数据,怎么做?能给这方面的例子最好。 我的E—MAIL:wuchejie123@21cn.com
壁 壁画 Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #2 使用api不知道,是不是可以使用spcomm之类的,侦听串口就可以,如果有信息回来,采集数据就可以。
C catbrother Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #3 首先,确定计算机有几个串口!自己设置也好,自动查询系统配置也好。 其次,你的数据必须有识别的依据,你不能做成鼠标发送的也是你要采集的数据。 再次,就是你自己的编程思路了,你可以一次性把所有串口统统打开,然后做等数据,或者按一定时间轮询依次打开串口,若无数据发生,就关闭串口,再去打开下一个串口。 祝好运!
首先,确定计算机有几个串口!自己设置也好,自动查询系统配置也好。 其次,你的数据必须有识别的依据,你不能做成鼠标发送的也是你要采集的数据。 再次,就是你自己的编程思路了,你可以一次性把所有串口统统打开,然后做等数据,或者按一定时间轮询依次打开串口,若无数据发生,就关闭串口,再去打开下一个串口。 祝好运!
W wtj Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #4 首先谢谢你们两位热情回答我的问题;我用的是API函数写的串口接收数据的。 我的串口数量确定是从数据库里来的,最多达到100个串口。我现在已经打开了所有的串口,用自定义接受消息,如:const WM_COMTYPE=WM_UER+1; 但一个串口有一条这样的消息。那么如果有N个串口我就要在程序里定义N个const WM_COMTYPE=WM_UER+N 个这样的消息,这样的程序架构肯定不行的。我现在找不到很好的方法啊,郁闷!!
首先谢谢你们两位热情回答我的问题;我用的是API函数写的串口接收数据的。 我的串口数量确定是从数据库里来的,最多达到100个串口。我现在已经打开了所有的串口,用自定义接受消息,如:const WM_COMTYPE=WM_UER+1; 但一个串口有一条这样的消息。那么如果有N个串口我就要在程序里定义N个const WM_COMTYPE=WM_UER+N 个这样的消息,这样的程序架构肯定不行的。我现在找不到很好的方法啊,郁闷!!
N nicai_wgl Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #5 把所有串口做到列表中,对每个串口进行循环。 for i := 0 to ComList.Count - 1 do begin { 打开串口 } OpenCom(TCom(ComList.Items)); { 接收数据 } RecieveData().... { 处理数据 } ....... end;
把所有串口做到列表中,对每个串口进行循环。 for i := 0 to ComList.Count - 1 do begin { 打开串口 } OpenCom(TCom(ComList.Items)); { 接收数据 } RecieveData().... { 处理数据 } ....... end;
汾 汾阳仲王 Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #6 发送WM_COMTYPE消息时在WPARAM或LPARAM参数中加上标识,比如6表示是COM6的消息,然后在接收到消息后再根据WPARAM或LPARAM区分。
W wtj Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #8 to 汾阳仲王 你能详细说一下:“在WPARAM或LPARAM参数中加上标识”,怎么加?加上后有什么方法接收到消息呢?我的接收方法是这样定义的:procedure rec(var message:Tmessage);message;WM_COMMNOTIFY; 其中const WM_COMMNOTIFY=WM_UER+1 这样的只接收到一个串口发来的消息,我要的是动态的方法接收多串口的数据消息。
to 汾阳仲王 你能详细说一下:“在WPARAM或LPARAM参数中加上标识”,怎么加?加上后有什么方法接收到消息呢?我的接收方法是这样定义的:procedure rec(var message:Tmessage);message;WM_COMMNOTIFY; 其中const WM_COMMNOTIFY=WM_UER+1 这样的只接收到一个串口发来的消息,我要的是动态的方法接收多串口的数据消息。
D delphigbg Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #9 这个问题我也想知道,如何知道那个用的是那一个口呢?如何让它们接到一个usb接口上呢?
W wtj Unregistered / Unconfirmed GUEST, unregistred user! 2007-02-10 #10 发送消息我在线程里发送的,就是发送WM_COMMNOTIFY+1的消息,因为消息是常量的定义,所以决定我的接收方法是静态的。我就是想动态的发出不同的消息,用动态的方法根据不同的消息接收不同串口发来的数据?可是我不知道怎么做了。
发送消息我在线程里发送的,就是发送WM_COMMNOTIFY+1的消息,因为消息是常量的定义,所以决定我的接收方法是静态的。我就是想动态的发出不同的消息,用动态的方法根据不同的消息接收不同串口发来的数据?可是我不知道怎么做了。