Witam!
W jaki sposób można sprawdzić jakie są dostępne porty COM. Mam program do komunikacji przez RSa i używam w nim komponentu CiaComPort, wszystko działa pięknie (no prawie ;)) tylko chciałbym aby w ustawieniach był wybór możliwych portów.
Jeżeli ktoś ma jakiś pomysł to proszę o informacje.
Pozdrawiam
0
0
Żywcem wykrojone z komponentu CiaComport do delphi bo nie chciało mi się samemu kombinować.
procedure CiaEnumPorts(PortList: TStrings);
var
n, MaxPorts: integer;
Port: THandle;
PortName: string;
begin
if Win32PlatForm = VER_PLATFORM_WIN32_NT then
MaxPorts := 256
else { if VER_PLATFORM_WIN32_WINDOWS }
MaxPorts := 9;
for n := 1 to MaxPorts do
begin
PortName := '\\.\COM' + IntToStr(n);
Port := CreateFile(PChar(PortName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
if (Port <> INVALID_HANDLE_VALUE) or (GetLastError = ERROR_ACCESS_DENIED) then
PortList.Add(IntToStr(n));
CloseHandle(Port);
end;
end;
//------------------------------------------------------------------------------
procedure CiaEnumAccessiblePorts(PortList: TStrings);
var
n, MaxPorts: integer;
Port: THandle;
PortName: string;
begin
if Win32PlatForm = VER_PLATFORM_WIN32_NT then
MaxPorts := 256
else { if VER_PLATFORM_WIN32_WINDOWS }
MaxPorts := 9;
for n := 1 to MaxPorts do
begin
PortName := '\\.\COM' + IntToStr(n);
Port := CreateFile(PChar(PortName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
if (Port <> INVALID_HANDLE_VALUE) then
PortList.Add(IntToStr(n));
CloseHandle(Port);
end;
end;
// nota bene od razu wyszukałem w wyszukiwarce - Q
0
Pod NT jest jeszcze jedna bardzo użyteczna funkcja,
QueryDosDevice,
która zwraca wszystkie urządzenia dostępne w systemie.