Форум: "Начинающим";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];
ВнизОпределение доступных 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c