使用ACTIVEX和DELPHI开发串口通讯

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

于Delphi中没有串口控件可用,所以首先需要把ActiveX控件MSCOMM加到元件选项板上。这是一个非常好的控件它不仅能对串口进行操作,而且还可以对Modem进行控制。下面结合一个具体的实例来说明如何用MSCOMM控件开发出串口通信程序。

创建一个Communication.dpr工程,把窗体的Name属性变为CommForm,将标题改为The Communication Test,选择File/Save As将新的窗体存储为CommFrm.pas。

其相应代码如下:

变量说明

var

CommForm: TCommForm;

ss :string;

savef,readf :file of char;

i,j :longint;

初始化

procedure TCommForm.FormCreate(Sender: TObject);

begin

mscomm.commport:=1;

mscomm.settings:='9600,n,8,1';

mscomm.inputlen:=1;

mscomm.inbuffercount:=0;

mscomm.portopen:=true;

ss:='';

i:=0;

j:=0;

assignfile(savef,'save1');

rewrite(savef);

assignfile(readf,'read1');

reset(readf);

end;

设置确定

procedure TCommForm.btnConfirmClick(Sender: TObject);

begin

if mscomm.portopen then

mscomm.portopen:=false;

mscomm.commport:=strtoint(edtCommport.text);

mscomm.settings:=edtCommsetting.Text;

end;

传输事件

procedure TCommForm.MSCommComm(Sender: TObject);

var

filenrc :char;

buffer :variant;

s1:string;

c :char;

begin

case mscomm.commEvent of

comEvSend:

begin

while not(eof(readf)) do

begin

read(readf,filenrc);

mscomm.output:=filenrc;

j:=j+1;

lblDisplay.caption:=inttostr(j);

if mscomm.outbuffercount>=2 then

break;

end;

end;

comEvReceive:

begin

buffer:=mscomm.Input;

s1:=buffer;

c:=s1[1];

ss:=ss+c;

i:=i+1;

lblDisplay.caption:=c+inttostr(i);

write(savef,c);

if (c=chr(10))or(c=chr(13)) then

begin

lblDisplay.caption:='cr'+inttostr(i);

memDisplay.lines.add(ss);

ss:='';

end;

end;

end;

end;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航