Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Определяет наличие СОМ портов

Delphi , Файловая система , Порты



Автор: Михаил
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Данная процедура позволяет определить наличие доступных СОМ-портов.
Список добавлятся в ComboBox. После этого можно выбирать нужный порт.

Зависимости: Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, ComCtrls

Автор:       Михаил, mikhail.sazonov@niitp.ru, Москва
Copyright:   Сазонов Михаил
Дата:        2 октября 2003 г.
***************************************************** }

unit SetComPort;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, dfsStatusBar, ExtCtrls, StdCtrls, ImgList, Buttons,
  ToolWin;

type
  TForm1 = class(TForm)
    StrNP: TRichEdit;
    dfsStatusBar1: TdfsStatusBar;
    ImageList1: TImageList;
    CoolBar1: TCoolBar;
    Panel1: TPanel;
    LoadNP: TBitBtn;
    Auto: TCheckBox;
    SetRegim: TRadioGroup;
    GroupBox1: TGroupBox;
    ComPort: TComboBox;
    BaudRate: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Parity: TComboBox;
    ByteSize: TComboBox;
    StopBits: TComboBox;
    CloseItem: TBitBtn;
    procedure InquiryPort(Sender: TObject); {опрос существующих портов}
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure CloseItemClick(Sender: TObject);
    procedure ComPortChange(Sender: TObject);
    procedure BaudRateChange(Sender: TObject);
    procedure ParityChange(Sender: TObject);
    procedure ByteSizeChange(Sender: TObject);
    procedure StopBitsChange(Sender: TObject);
    procedure SetRegimClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    FHandl: THandle; {дескриптор порта}
    DCB: TDCB; {ссылка на структуру настройки порта}
    PortName: string; {имя порта, для дальнейшей работы}
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.InquiryPort(Sender: TObject);
var
  i: integer;
begin {опрос существующих портов}
  for i := 0 to 31 do {цикл опроса}
  begin {пробуем получить дескриптор порта}
    FHandl := CreateFile(PChar('COM' + IntToStr(i + 1)),
      GENERIC_READ or GENERIC_WRITE,
      0,
      nil,
      OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
    if FHandl <> INVALID_HANDLE_VALUE then {если порт есть то добавить в список}
      ComPort.Items.Add('COM' + IntToStr(i + 1));
    CloseHandle(FHandl); {закрыть дескриптор}
  end;
end;

..........

Программный код на Delphi, который определяет наличие портов COM и заполняет комбобокс их именами. Вот подробное описание кода:

Интерфейс Секция интерфейса объявляет модуль SetComPort, использующий различные модули из Windows API (например, Windows, Messages, SysUtils) а также некоторые модули, специфические для Delphi.

Определение формы Определение формы (TForm1) ประกлает несколько компонентов:

  • RichEdit-контроль (StrNP)
  • Статусная строка (dfsStatusBar1)
  • Изображение списка (ImageList1)
  • CoolBar (CoolBar1)
  • Панель (Panel1)
  • Некоторые кнопки и чекбоксы (например, LoadNP, Auto, SetRegim, CloseItem)

Процедуры В форме объявлены несколько процедур:

  • InquiryPort: Эта процедура отвечает за определение наличия портов COM. Она итерирует через диапазон возможных номеров портов COM (0-31) и пытается создать файловый handle для каждого порта с помощью функции CreateFile. Если порт найден, его имя добавляется в комбобокс ComPort.
  • FormCreate: Эта процедура вызывается при создании формы, но ее реализация не показана в этом коде.
  • FormClose: Эта процедура вызывается при закрытии формы и обрабатывает закрытие действия.
  • Некоторые другие процедуры (например, CloseItemClick, ComPortChange, BaudRateChange) объявлены, но их реализация не показана.

Переменные Объявлены следующие переменные:

  • FHandl: handle к порту COM
  • DCB: ссылка на структуру DCB (которая представляет собой устройство для сериальной связи)
  • PortName: строка, представляющая имя выбранного порта COM

Имплементация Секция реализации определяет процедуру InquiryPort, которая итерирует через диапазон возможных номеров портов COM и пытается создать файловый handle для каждого порта. Если порт найден, его имя добавляется в комбобокс ComPort.

В целом, этот код appears to be designed to provide a simple way to determine the presence of COM ports on a Windows system and populate a dropdown list with their names.

Данная статья описывает процедуру определения наличия доступных СОМ-портов и добавления их в список в ComboBox.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Порты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-17 21:07:19/0.011837959289551/0