网络类资料收集

Delphi 7:操作串口(ComPort)

2020-07-27  本文已影响0人  酸奶不错

一、串口的简介

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

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

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

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

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

二、串口与USB

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

USB设备有以下优点:

相较于USB,串口已经是一种古老的技术了,而且PC上已经很少见到串口了,但为什么有了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应用集合

上一篇下一篇

猜你喜欢

热点阅读