大家好,我想请教一下用spcomm 并发访问多个串口的问题,谢谢 ( 积分: 50 )

  • 主题发起人 主题发起人 ychj1978
  • 开始时间 开始时间
Y

ychj1978

Unregistered / Unconfirmed
GUEST, unregistred user!
我目前要做访问多个串口,要并发执行,我是不是要创建多个spcomm控件,如果是程序创建的,那关于接受事件ReceiveData 可以指定一个吗?因为代码都是一样的,有点我不明白的就是,他的接收事件是同步的还是异步的,或者说是只有一个接收事件处理完成后,在轮到下一个消息处理发生,还是同时发生。需要大家的帮助,谢谢。
代码:
 
spcom用起来感觉不错,你说的同时使用不同的串口是没问题的,只要增加一个spcom,参数不一样就行。

ReciveData的事件可以一样,但是你怎么处理 或者 怎么知道是哪个spcomm收到的内容?可能要大量使用 (sender as tspcomm)吧?有点罗索,不如分开来,将数据接收到不同的内存段,顺便作一下预处理,再去共同触发另外的相同的事件,比如放一个visable:=false的button,都去调用它的click,觉得这样维护方便。

另外,数据应该是异步的,事件就不知道。
 
谢谢jenhon朋友,我是通过程序创建spcomm,并设置spcomm的tag属性,用于确定是接收哪个spcomm,但是,我现在有点不明白的,就是这个共同指定的接收事件ReciveData,是spcomm1接收事件全部执行完以后,spcomm2才开始接收吗?就跟队列一样,是这样的情况吗?我测试过timer这个控件,虽然都是线程,但他都是把触发消息放到队列中,等第一个消息处理完后,才释放第二个消息进来处理,其他的都在等待;并不是都一起去执行。
 
我水平有限,没有很好的回答,帮你顶起来吧。

在我浅薄的理解,事件看成一个函数,如果在同一时间调用同一个函数,系统是怎么处理这些事情,我想同一时间应该只有一个进程在执行它,比如 button的click事件,如果事件处理得够久,在处理过程中,又被人按了一下的话,先发生的事件就会被强制中断,开始响应新的事件。

幸好你说的spcom通讯是异步的,也就是说,你使用其中一个在会话,另一个有中断发生,那么发生中断的com口数据会被保持,等你处理好先发生的这个,再去响应处理都不迟。
你在处理一个过程,你也知道有另一个有信号来了,那处理完一个要去查一下另一个的状态,感觉 中断 变成了 查询.....不是很好。
 
GSM短信远程抄表系统管理端源代码(pc控制手机模块收发GSM短信)
http://www.pgz8.cn/Software/Catalog93/4151.html

串口操作等,都是自己写的代码.不用现成控件的.你可以下载来看看,还有实现了pc控制手机模块收发gsm短信,函数都是自己写的。线程方式操作,提高效率。短信模块用的是西门子的。

可能对你有帮助.

下面是他的说明:

系统说明:GSM短信远程抄表系统管理端(原理:pc控制手机模块收发GSM短信)
作者:Cooling
QQ: 21156410
Email: 21156410@qq.com
主页:http://www.pgz8.cn
可以任意传播,但请保留以上信息,有任何问题,欢迎交流。谢谢
这是一个商业软件的demo部分,收发短信的部分函数,全部是站长2002年写的,不用现成控件,线程操作.或许对短信系统开发有帮助.当时没有实现中文短信的收发,这个系统中也不需要.所以如果哪位朋友有兴趣,可以完善下,如果你写好了,也希望能给我发来一个哦.谢谢

用户名密码都是admin,在界面上右键操作.
 
后退
顶部