【求助】使用mscomm控件,如果系统有2个以上的可用串口,如何判断当前自己的应用程序占用的是哪个串口?
如果系统当前有com1、com2、com5、com7四个串口,如何判断我的外设是接的是哪一个?
我原先的思路是采用轮询,因为如果上位机发出字符‘T’,外设接收到后会回复字符串‘OK!’,但这样程序运行会出错。
同样的思路,用在spccom上一点问题都没有,但是现在我的XE2上安装spcomm一直有问题,只能用mscomm了,唉
==============主要程序如下
首先设置将1、2、5、7这4个可用端口号存放在字符串列表port中
for i:=0 to port.count-1 do begin
mscomm1.commport:=strroint(port[i]);//读取端口号
mscomm1.portopen:=true;//打开端口
mscomm1.output:=‘T’;
sleep(100);
mscomm1.portopen:=false;
end;
同时在MSComm1Comm事件中做检测,如后收到‘OK!’字符就表明当前串口是应用程序所占用的
procedure TForm1.MSComm1Comm(Sender: TObject);
var
buffer:string;
begin
if MSComm1.CommEvent = comEvReceive then begin
buffer:=mscomm1.input;
if buffer='OK!' then label1.caption:='当前程序占用的串口是'+inttostr(mscomm1.commport);
end;
end
===============================
请高手帮忙看下以上思路,按说应该没什么问题的,但是实际运行的时候根本检测不出来,问题出在哪里?RThreshold的设置是没问题的。