检查RS232(串口)是否接有设备(100分)

  • 主题发起人 主题发起人 liuguilg
  • 开始时间 开始时间
L

liuguilg

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥有空给兄弟解释一下下面的每句话的作用是什么,实在看不懂;

检查RS232(串口)是否接有设备


在RS232中有4个脚位可用来回应讯号给电脑分別为CTS,DSR,RING,RLSD当未接上设备时,脚位的电太皆为低电压,讯号传回OFF,很多设备都利用此四个脚位与电脑沟通,所以检查脚位电压就知道改COM上是否有设备存在
MS_CTS_ON,MS_DSR_ON,MS_RING_ON,MS_RLSD_ON
procedure TForm1.Button1Click(Sender: TObject);
var
cc:TCommConfig;
hComm:THandle;
Com:String;
lS:dword;
begin

Com:='COM2';
hComm:=CreateFile(Pchar(Com),Generic_read or Generic_write,0,nil,open_existing,0,0);
if GetCommModemStatus(hcomm,lS) then

begin

if(ls and MS_CTS_ON)=MS_CTS_ON then

begin

Button1.Caption:='CTSON'
end;

end;

closeHandle(hcomm);
end;

(作者 anykey)
end.

2.检查Handle所得到的值
procedure TForm1.Button1Click(Sender: TObject);
var
cc:TCommConfig;
hComm:THandle;
Com:String;
lS:dword;
begin

Com:='COM2';
hComm:=CreateFile(Pchar(Com),Generic_read or Generic_write,0,nil,open_existing,0,0);
if(hComm=invalid_Handle_value) then

begin

showmessage('通讯口错误);
end;

closeHandle(hcomm);
end;

----------------------------------------------
 
怎么没人来顶一下呢;
不懂,捧个场,凑个热闹也好嘛
 
CTS和DSR信号同时为低电平(SPACE)时表示串口与外设连接正常
 
你第一个是检查打开串口的状态。
你第二个只是检查能不能打开串口。
 
能给每句话给个注释吗
 
这几句话是什么意思,参数表示什么
hComm:=CreateFile(Pchar(Com),Generic_read or Generic_write,0,nil,open_existing,0,0);
if GetCommModemStatus(hcomm,lS) then

begin

if(ls and MS_CTS_ON)=MS_CTS_ON then
 
Windows API 把串口当成文件来打开、读写。hComm 是句柄
hComm:=CreateFile(
Pchar(Com),//串口名称
Generic_read or Generic_write,//允许读、写
0,
nil,
open_existing,//因为串口已经存在所有只能以 open_existing 方式打开
0,
0);
if GetCommModemStatus(hcomm,lS) then
//求 Modem 的 lS 状态
begin

if(ls and MS_CTS_ON)=MS_CTS_ON then
//如果 lS 状态是 MS_CTS_ON 就。。。
第一个是针对连接到串口的 Modem 而言的。
第二个是针对串口本身而言的,只要串口存在(无论是否接通设备)就不提示错误。
 
不懂, 不过也顶一下!
 
Modem 的 lS 状态 : IS 代表什么;
MS_CTS_ON: 代表什么;
GetCommModemStatus(hcomm,lS) 为真表示什么;
 
大家来捧场,来者都有分
 
CTS 在设备上需要将4和6两个引脚短接,另外使用com1和com2都可以打开,所以需要进行设备探测,最好与设备进行握手通讯。
 

Similar threads

后退
顶部