程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 在delphi7中利用mscomm控件編程

在delphi7中利用mscomm控件編程

編輯:Delphi
Mscomm是微軟一個強大的串口通訊的控件,其強大,簡單的特點今我們不捨,在Delphi中我們也可以使用它。下面這些代碼是針對發送和接收為16進制處理的。
  var
    senddata:array[1..10] of char;
    reData:array of Variant;
    sendstr:string;
    restr:string;
    i:longint;
  begin
    mscomm1.CommPort := 1;                    //指定端口
    mscomm1.Settings := '9600,N,8,1';        //其它參數
    mscomm1.InBufferSize := 1024;             //接收緩沖區
    mscomm1.OutBufferSize := 1024;            //發送緩沖區
    mscomm1.InputMode := comInputModeBinary;  //接收模式
    mscomm1.InputLen := 0;                    //一次讀取所有數據
    mscomm1.SThreshold := 0;                  //一次發送所有數據
    mscomm1.InBufferCount := 0;               //清空讀取緩沖區
    mscomm1.OutBufferCount := 0;              //清空發送緩沖區
    mscomm1.PortOpen:=true;                     //打開端口
    MSComm1.RThreshold := 16;               //設置接收多少字節開產生oncomm事件
    senddata[1]:=chr($06);                          //要發送的數據
    senddata[2]:=chr($03);
    senddata[3]:=chr($00);
    senddata[4]:=chr($03);
    senddata[5]:=chr($10);
    sendstr:='';
    for i:=1 to 5 do
    sendstr:=sendstr + senddata[i];
    mscomm1.output:=sendstr;                       //發送數據
    i:=0;
    bzw:=false;
  
    repeat
       sleep(10);
      Application.ProcessMessages;
      i := i + 1;
      If i > 30000 Then
        begin
          showmessage('發送超時!');
          break;
        end;
    Until bzw = true;
    redata:=mscomm1.Input;       接收數據
    restr:='';
    for i:=0 to vararrayhighbound(redata,1) do
        restr:=restr + inttohex(redata[i],2)+' ';
    mscomm1.PortOpen:=false;
    flatmemo1.Text:=restr;
  end;
  //oncomm事件
  procedure TForm1.MSComm1Comm(Sender: TObject);
  begin
    case mscomm1.CommEvent of
      comEvReceive: bzw := true;
    end;
  end;

  最後,記事發布軟件時要帶上Mscomm32.ocx文件。

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