读书人

DELPHI单片机通讯有关问题

发布时间: 2012-03-29 12:53:13 作者: rapoo

DELPHI单片机通讯问题.
前期开发的上位机软件,用的SPCOMM,一个串口通过485转换器接了多台下位机设备,上位机发送指令命令下位机传数据,因为程序越来越大,执行问题越来越多,想将其中的发送单独做为一个线程,接收单为一个线程,处理单为一个线程,请教各位高手有什么优秀方案或例程没.小弟先谢谢了.这算不算一个多线程处理呀.经验不够,只好请各位帮忙了.
看完要回呀!!!!

[解决办法]
>>发送单独做为一个线程,接收单为一个线程,处理单为一个线程。
线程有利有弊,不是越多越好。需要处理临界区和同步问题。
[解决办法]
线程又不是越多越好,我觉得能不用线程最好别用,万一哪条线程死了,电脑就挂在那了,可以选择用集合类型,
然后固定好一个上位机只带动几台下位机

const
maxLen = 100;

type
aaa = record
comm1 : tcomm;
procedure ...
....
flag : Boolean;
end;

var
bbb : array[0..maxlen-1] of aaa;

[解决办法]
实时性要求不高的话,最好不要用多线程。一个线程发送和接收数据,另一个线程处理数据,必然涉及到线程同步的问题,要是线程同步做得不好,死都不知道怎么死的。
[解决办法]
485是啥玩意? 半双工总线啊,所以同一线程序收发即可,你用一发一收自找麻烦

你现在程序慢是你485收发代码中有延时等待等操作? 简单点加 Application.ProcessMessage 就OK了,

当然能开一线程就很好,基本上也用不上临界与信号等东东
[解决办法]
spcomm的接收事件是自己用线程处理的,不用再建接收线程
[解决办法]
SPCOMM本来就是线程模式的呢

读书人网 >.NET

热点推荐