程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 使用ACTIVEX和DELPHI開發串口通訊

使用ACTIVEX和DELPHI開發串口通訊

編輯:Delphi

  於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;
  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved