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

{ **** UBPFD *********** by delphibase.endimus.com ****

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

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

Список добавлятся в ComboBox. После этого можно выбирать нужный порт.

Зависимости: Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, ComCtrls

 

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;

Добавить комментарий