Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.007 c
8-1188395934
Dr. Andrew
2007-08-29 17:58
2008.12.07
Как изменить размер bitmap в памяти?


15-1223355983
igorm
2008-10-07 09:06
2008.12.07
ошибка чтения из файла


15-1223069414
Германн
2008-10-04 01:30
2008.12.07
Чёрт знает что печатается на принтере


3-1211208539
aleksej
2008-05-19 18:48
2008.12.07
колесо мыши и dbgrid


2-1225437375
Mozgan
2008-10-31 10:16
2008.12.07
Проблема с CheckListBox1DrawItem




   Наверх