Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.07;
Скачать: CL | DM;

Вниз

Определение доступных COM портов?   Найти похожие ветки 

 
Сергей Кокоулин   (2008-10-22 21:19) [0]

Как Определить сие? Если можно на примере!


 
YurikGL ©   (2008-10-23 07:40) [1]

Выдернул из какого-то старого проекта

 ComboBox1.Items.Clear;
 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 {если порт есть то добавить в список}
     ComboBox1.Items.Add("COM" + IntToStr(i + 1));
   CloseHandle(FHandl); {закрыть дескриптор}
 end;
 if ComboBox1.Items.Count=0 then begin
   Button1.Enabled:=false;
   ComboBox1.Items.Add("none");
   ShowMessage("В системе Com-портов не найдено.");
                                 end;
 ComboBox1.ItemIndex:=0;


 
Slym ©   (2008-10-23 08:14) [2]

YurikGL ©   (23.10.08 7:40) [1]
а если порт занят? то его и всписке небудет


 
brother ©   (2008-10-23 08:30) [3]

будет... тк GENERIC_READ or GENERIC_WRITE, то в любом случае, что либо произойдет


 
YurikGL ©   (2008-10-23 08:41) [4]


> а если порт занят? то его и всписке небудет

Честно - не помню. Вроде бы действительно не было у меня занятых портов.


 
brother ©   (2008-10-23 08:51) [5]

код отработал нормально на занятом порте...


 
Поросенок Винни-Пух ©   (2008-10-23 09:34) [6]

попробуй с помощью его найти com10.....com31


 
wal ©   (2008-10-23 09:35) [7]

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM


 
tesseract ©   (2008-10-23 10:53) [8]

Так должно работать :

procedure GetComList;
var reg:Tregistry;
   i:integer;
begin
ComList:=TStringList.Create;
Reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey("hardware\devicemap\serialcomm",  false);
reg.GetValueNames(ComList);
 for i:=0 to comList.Count-1 do
  comList[i]:=reg.ReadString(comList[i]);
finally
reg.Free;
end;
end;


 
Сергей Кокоулин   (2008-10-23 18:33) [9]

Спасибо, а как при опросе портов, сделать вывод мессаги о недоступности того или иного порта?


 
YurikGL ©   (2008-10-23 21:16) [10]


> Спасибо, а как при опросе портов, сделать вывод мессаги
> о недоступности того или иного порта?

В смысле, порт занят, или такого порта вообще нет?


 
tesseract ©   (2008-10-24 10:33) [11]


>  сделать вывод мессаги о недоступности того или иного порта?


ой ёёё

ComHandle=CreateFile();

if COMHandle=INVALID_HANDLE_VALUE then ShowMessage("не-не-не-не Дэвид Блэйн!");


 
Сергей Кокоулин   (2008-10-25 18:24) [12]


> В смысле, порт занят


Программа по умолчанию должна просканировать СОМ1 и СОМ2 и при Определении что тот или иной порт занят другим приложением, вывести Конкретную мессагу.

Типа того:

ShowMessage("МуПрограмма :) обнаружила, что порты СОМ: " + IntToStr(i) + " заняты другой Программой. Закройте её для освобождения порта(ов)!");


 
Германн ©   (2008-10-25 19:46) [13]

2 Сергей Кокоулин   (25.10.08 18:24) [12]
Тогда после [11] поможет вызов GetLastError.



Страницы: 1 вся ветка

Текущий архив: 2008.12.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
15-1223229279
TUser
2008-10-05 21:54
2008.12.07
Проспект имени Путина


15-1223149610
Внук
2008-10-04 23:46
2008.12.07
Хоть и не пятница


1-1194952417
OlegM
2007-11-13 14:13
2008.12.07
Как отключить правую кнопку мыши в программе


2-1225088549
AlekseyB
2008-10-27 09:22
2008.12.07
Текстовый файл


2-1225219523
vik2008
2008-10-28 21:45
2008.12.07
Замена слов