【求助】使用mscomm控件,如果系统有2个以上的可用串口,如何判断当前自己的应用程序占用的是哪个串口?

killbill2012 2014-11-02 09:19:40
如果系统当前有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的设置是没问题的。
...全文
526 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
看那山瞧那水 2015-02-15
  • 打赏
  • 举报
回复
mscomm这个尽量不要用,麻烦
看那山瞧那水 2015-02-15
  • 打赏
  • 举报
回复
用cport吧
lyhoo163 2015-02-15
  • 打赏
  • 举报
回复
通过API识别,更加灵活可靠。
nippycn 2015-02-15
  • 打赏
  • 举报
回复
楼主解决了吗 个人对于通信编程这块比较关心
s11ss 2014-11-05
  • 打赏
  • 举报
回复
try..except

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧