Получаем доступные COM порты в Delphi
1) Для начала разместим компоненты на форме (2 компонента Buton и 1 Компонент StringList), примерно так:
2) Свойство Enabled у Button2 устанавливаем в false, в разделе var создаем глобальную переменную Phandle:Thandle;
3) Создаем обработчик событий на Button1, где прописываем следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Var i:Integer; begin for i:=0 to 10 do begin Phandle:=CreateFile(Pchar('COM'+intToStr(i+1)), Generic_Read or Generic_Write, 0, nil, open_existing, file_flag_overlapped,0); if Phandle<>invalid_handle_value then begin Listbox1.Items.Add('COM'+ IntToStr(i+1)); CloseHandle(Phandle); end; Button1.Enabled:=False; Button2.Enabled:=True; end; end; |
4) Создаем обработчик событий на Button2, и прописываем там:
1 2 3 4 5 |
begin ListBox1.Clear; Button1.Enabled:=True; Button2.Enabled:=False; end; |
Запускаем проект, жмем на Button1, и если вы все выполняли внимательно, то в нашем ListBox1 получим полный список СОМ портов, которые есть на вашем компьютере.
Вообще есть еще способ получения информации о портах из реестра, но опробовав его я убедился в его некорректности. На стационарной машине, где контроллер COM порта расположен на материнской плате, он работает, а когда вставляю в USB разъем конвертер USB/COM найти его в системе не удаётся.