Определяет наличие СОМ портов
Автор: Михаил
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;
..........
|