Delphi7串口通讯实例(含Spcomm控件)

最近在用Delphi7做串口通信,但在网上找了很多代码,都是没有一个完整的实例,复制粘贴网上的代码运行就没有能通过的,可能是现在Delphi7在市场上用得不是很多,又或者说我是井底之蛙。因此,为了解决大部分初学者对串口通讯不怎么了解的郁闷,现将我做好的实例分享给大家参考参考,希望能给初学者予以帮助,如有不对的地方还请多多指教。本实例用到的控件是Spcomm,也包含在这个文件夹里面了,下面是部份截图和部份代码展示:





部分代码展示:

//打开、关闭串口
procedure TCommixForm.btnPortClick(Sender: TObject);
begin
  if btnPort.Caption = 'Open Port' then
  begin
    if ComPortAvailable(pchar(cbbPort.Text)) then
    begin
      cmPort.StopComm;
      cmPort.CommName := cbbPort.Text;
      cmPort.BaudRate := StrToInt(cbbBaudRate.Text);
      Commsize;
      cmPort.StartComm;
      btnPort.Caption := 'Close Port';
      cbbPort.Enabled := False;
      btnSend.Enabled := True;
    end
    else
    begin
      ShowMessage(cbbPort.Text + ' 打开失败,请检查串口!');
      cbbPort.Enabled := True;
      btnPort.Caption := 'Open Port';
      btnSend.Enabled := False;
    end;
  end
  else
  begin
    cmPort.StopComm;
    cbbPort.Enabled := True;
    btnPort.Caption := 'Open Port';
    btnSend.Enabled := False;
  end;
end;

//处理接收的数据
procedure TCommixForm.cmPortReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
var
  str, rbuf: string;
  i: Integer;
begin
  SetLength(rbuf, BufferLength);
  Move(Buffer^, PChar(rbuf)^, BufferLength);
  if rbShowHEX.Checked then
  begin
    rbuf := StrToHex(rbuf);
    str := '';
    for i := 0 to Length(rbuf) div 2 do
    begin
      //加个空格相对美观点  clBlue
      if i < 1 then
        str := str + Copy(rbuf, i * 2, 2);
      if i > 0 then
        str := str + ' ' + Copy(rbuf, i * 2 + 1, 2);
    end;
    rbuf := str;
  end;
  mmoShow.Font.Color := clBlue;
  mmoShow.Lines.Add(rbuf);
end;

// 发送数据
procedure TCommixForm.btnSendClick(Sender: TObject);
var
  sendInput, result: string;
  i: Integer;
begin
  sendInput := mmoInput.Text;
  if rbInputHEX.Checked then
  begin
    sendInput := StringReplace(mmoInput.Text, ' ', '', [rfReplaceAll, rfIgnoreCase]);
    for i := 1 to Length(sendInput) do
    begin
      if System.Odd(i) then
      begin
        result := result + Char(StrToIntDef('$' + Copy(sendInput, i, 2), 0))
      end;
    end;
    cmPort.WriteCommData(PChar(result), Length(sendInput) div 2);
  end
  else
  begin
    cmPort.WriteCommData(PChar(sendInput), Length(sendInput));
  end;
end;

 本实例我将上传至CSDN,有需要的朋友请自行下载!
下载地址:Delphi7串口通讯实例(含Spcomm控件).zip_delphi7串口-Delphi代码类资源-CSDN下载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值