美文网首页网络类资料收集
Delphi 7:操作串口(ComPort)

Delphi 7:操作串口(ComPort)

作者: 酸奶不错 | 来源:发表于2020-07-27 22:09 被阅读0次

    一、串口的简介

    串行接口Serial Interface),简称串口,即COM接口cluster communication port串行通讯端口),是采用串行通讯方式的扩展接口。

    一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯

    串口的出现是在1980年前后,初期一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备,它也可以应用于两台计算机(或设备)之间的互联及数据传输。

    串口的特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,但传送速率较慢,115kbps~230kbps。

    由于串口不支持热插拔及传输速率较低,部分新主板和大部分便携电脑已取消该接口,目前多用于工控和测量设备以及部分通信设备中。

    二、串口与USB

    USBUniversal Serial Bus 通用串行总线,是一个外部总线标准,诞生于1996年之后,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术。

    USB设备有以下优点:

    • 支持热拔插
    • 携带方便
    • 标准统一
    • 可以同时连接多个设备
    • 传输速率快

    相较于USB,串口已经是一种古老的技术了,而且PC上已经很少见到串口了,但为什么有了USB还要用串口呢?

    • 串口成本低,而且更主要的是,串口对开发者和使用者而言,不需要去专门开发和安装驱动,这样又省了软件成本。
    • 串口虽然速度慢,使用繁杂,但它的抗干扰能力是远远超过USB的,在同等高频干扰情况下,使用USB通讯的设备经常会死机卡住,但串口就不会。现在很多工业上还是会用串口,就是这个原因。
    • 在传输速度要求不高的情况下,很多设备还是会保留串口,只是串口用起来真的没USB的方便。

    三、查看电脑上的串口

    我的电脑上没有串口.png
    可以使用虚拟串口软件生成.png
    生成后的效果.png

    一般而言,一个串口只能被一个软件占用,其他软件就用不了这个串口了。

    使用这个虚拟串口软件生成的COM1、COM2,默认是相互连接的,从COM1发送数据,可以从COM2接收到;从COM2发送数据,可以从COM1接收到。我们可以通过这样的方式,来测试自己所写的软件。

    四、ComPort的使用

    Delphi 7 操作串口,我这里引用了第三方控件 ComPort:uses CPort

    所用控件示意图.jpg
    {获取当前设备所有串口号}
    procedure TFrm_Main.FormCreate(Sender: TObject);
    var
      PortList: TStrings;
      i: Integer;
    begin
      PortList:= TStringList.Create;
      EnumComPorts(PortList);    {获取所有串口号函数}
    
      for i:= 0 to PortList.Count - 1 do
      begin
        cbb_Ports.Items.Add(PortList.Strings[i]);
      end;
    
      PortList.Free;
    end;
    
    {打开指定端口号}
    procedure TFrm_Main.btn_OpenClick(Sender: TObject);
    begin
      if btn_Open.Caption = '打开串口' then
      begin
        if cbb_Ports.Text = '' then
        begin
          Application.MessageBox('请先选择一个串口号', '提示', MB_OK);
          Exit;
        end;
    
        ComPort.Port:= cbb_Ports.Text;
    
        try
          ComPort.Open;
        except
          Application.MessageBox('串口打开失败,可能被占用了', '提示', MB_OK);
          Exit;
        end;
    
        cbb_Ports.Enabled:= False;
        btn_Open.Caption:= '关闭串口';
      end else
      begin
        ComPort.Close;
    
        cbb_Ports.Enabled:= True;
        btn_Open.Caption:= '打开串口';
      end;
    end;
    
    {发送数据}
    procedure TFrm_Main.btn_SendClick(Sender: TObject);
    begin
      if ComPort.Connected then
        ComPort.WriteStr(memo_Send.Text)
      else
        Application.MessageBox('请先打开相应串口', '提示', MB_OK);
    end;
    
    {接收数据}
    procedure TFrm_Main.ComPortRxChar(Sender: TObject; Count: Integer);
    var
      str: string;
    begin
      str:= '';
      ComPort.ReadStr(str, Count);
      memo_Receive.Text:= str;
    end;
    
    {退出程序}
    procedure TFrm_Main.btn_ExitClick(Sender: TObject);
    begin
      Close;
    end;
    

    五、实际运行效果图

    我这里是将两个exe文件,分别运行了。


    实际运行效果图.gif

    参考资料: (百度百科)串行接口(简书)串口和USB的区别(博客园)CPort应用集合

    相关文章

      网友评论

        本文标题:Delphi 7:操作串口(ComPort)

        本文链接:https://www.haomeiwen.com/subject/hxazkktx.html