⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delphi+mscomm.txt

📁 Delphi+MSComm控件串口收发程序
💻 TXT
字号:
//Delphi+MSComm控件串口收发程序  
//HotPower@126.com 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  if MSComm1.PortOpen then MSComm1.PortOpen := false;//关闭端口 
  MSComm1.CommPort := 2;//设置端口2 
  MSComm1.InBufferSize := 256;//设置接收缓冲区为256个字节 
  MSComm1.OutBufferSize := 256;//设置发送缓冲区为256个字节 
  MSComm1.Settings := '9600,n,8,1';//9600波特率,无校验,8位数据位,1位停止位 
  MSComm1.InputLen := 0;//读取缓冲区全部内容(32个字节) 
  MSComm1.InBufferCount := 0;// 清除接收缓冲区 
  MSComm1.OutBufferCount:=0;// 清除发送缓冲区 
  MSComm1.RThreshold := 32;//设置接收32个字节产生OnComm 事件 
//  MSComm1.InputMode := comInputModeText;//文本方式 
  MSComm1.InputMode := comInputModeBinary;//二进制方式 
  MSComm1.PortOpen := true;//打开端口 
end; 

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); 
begin 
  if MSComm1.PortOpen then MSComm1.PortOpen := false;;//关闭端口 
end; 

procedure TForm1.MSComm1Comm(Sender: TObject); 
var 
  buffer: Olevariant;//MSComm1.InputMode = comInputModeBinary 
  str: string;//MSComm1.InputMode = comInputModeText 
  i: integer; 
begin 
  case MSComm1.CommEvent of 
    comEvReceive: //串行接收事件处理 
      begin 
        if MSComm1.InputMode = comInputModeText then //字符方式读取 
          str := MSComm1.Input//读出后会自动清除接收缓冲区,str[1]~str[32] 
        else //二进制方式读取 
          buffer := MSComm1.Input;//读出后会自动清除接收缓冲区,buffer[0]~buffer[31] 
        Edit3.Text := ''; 
        for i := 0 to MSComm1.RThreshold - 1 do //32字节Hex转换 
        begin 
          if MSComm1.InputMode = comInputModeText then //单行字符转换 
            Edit3.Text := Edit3.Text + inttohex(byte(str[i + 1]), 2) + ' ' 
          else //单行二进制数据转换 
            Edit3.Text := Edit3.Text + inttohex(buffer[i], 2) + ' '; 
        end; 
        Memo2.Lines.Add(Edit3.Text);//加入一行显示 
      end; 
  end; 
end; 

procedure TForm1.BitBtn1Click(Sender: TObject); 
var 
  i: integer; 
begin 
  Edit4.Text := ''; 
  for i := 0 to 31 do 
  begin 
    MSComm1.Output := char(i);//发送一个字符 
    Edit4.Text := Edit4.Text + inttohex(i, 2);//以十六进制字符显示 
  end; 
  Memo1.Lines.Add(Edit4.Text);//加入一行显示 

end; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -