среда, 23 октября 2013 г.

Как получить список доступных COM портов на вашем компе?


   Недавно начал экспериментировать с COM портами в Delphi). Штука занимательная, возможно напишу об этом деле интересную статью, но пока хочу поделиться способом получения списка доступных для работы COM портов. Метод сильно расписывать не буду, код коротенький, так что в подробностях я надеюсь вы разберетесь сами).


 Итак приступим:

 1) Для начала разместим компоненты на форме (2 компонента Buton и 1 Компонент StringList), я допустим сделал это так:




2) Свойство Enabled у Button2 устанавливаем в false, в разделе var создаем глобальную переменную Phandle:Thandle;

3) Создаем обработчик событий на Button1, где прописываем следующее:

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, и прописываем там:

begin 
ListBox1.Clear; 
Button1.Enabled:=True; 
Button2.Enabled:=False; 
end; 

   Запускаем проект, жмем на Button1, и если вы все выполняли внимательно, то в нашем ListBox1 получим полный список СОМ портов, которые есть на вашем компьютере. Ну а для не внимательных прилагаю исходник). Вообще есть еще способ получения информации о портах из реестра, но опробовав его я убедился в его некорректности. На стационарной машине где контроллер COM порта расположен на материнке, он работает, а когда вставляю в USB разъем конвертер USB/COM найти его в системе не удается. А методом рассмотренным выше получается просканировать все и получить достоверные данные). 

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.