Help! Как автоматом определять доступные системе com-порты?
От: fiatik  
Дата: 28.11.03 17:13
Оценка:
Как в Delphi4 под Win98 при запуске программы определить доступные системе com-порты и их граничные параметры?
Help! Второй день не могу ниче найти ни в инете, ни в Programmer's Reference. Была ж вроде такая API...

29.11.03 11:57: Перенесено модератором из 'Delphi & Builder' — H_D
Re: Help! Как автоматом определять доступные системе com-пор
От: Колобок В бане Россия www.kolobok.ru
Дата: 28.11.03 17:19
Оценка:
Здравствуйте, fiatik, Вы писали:

F>Как в Delphi4 под Win98 при запуске программы определить доступные системе com-порты и их граничные параметры?

F>Help! Второй день не могу ниче найти ни в инете, ни в Programmer's Reference. Была ж вроде такая API...

посмотри CreateFile там помоему можно задавать 'COM1' 'COM2' 'COM3' 'COM4'...наверняка если нету вернет ошибку.
Эх, cкоро на свободу. Сидеть осталось 28 дней.
Я в бане, а чего больше никто не моется ?
Re[2]: Help! Как автоматом определять доступные системе com-
От: fiatik  
Дата: 28.11.03 18:49
Оценка:
Здравствуйте, Колобок В бане, Вы писали:

КВБ>Здравствуйте, fiatik, Вы писали:

КВБ>посмотри CreateFile там помоему можно задавать 'COM1' 'COM2' 'COM3' 'COM4'...наверняка если нету вернет ошибку.

Спасиб, конечно..
Но перебором как-то некрасиво.
Да и портов мот быть в общем случае до десятка.
Re: Help! Как автоматом определять доступные системе com-пор
От: fiatik  
Дата: 28.11.03 19:03
Оценка:
Еще советовали реестр читать, но я с ним никогда не работал, чс говоря.
Да и сдается, видел лет пять назад пример, где это делали простой API. Правда, под Win95.
В принципе, если хотя бы считать имена com-портов, то их параметры уже определить мона через GetCommProperties.
Re: Help! Как автоматом определять доступные системе com-пор
От: Leonid Troyanovsky  
Дата: 29.11.03 07:30
Оценка: 3 (2)
Здравствуйте, fiatik, Вы писали:

F>Как в Delphi4 под Win98 при запуске программы определить доступные системе com-порты и их граничные параметры?

F>Help! Второй день не могу ниче найти ни в инете, ни в Programmer's Reference. Была ж вроде такая API...

By Андрей А. Лобанов <loba@nersa.ee>

program devlist; {$apptype console}
uses windows, sysutils;
const BufSize = 1024;
var
  Buf_DevList: Array[0..BufSize] of Char;
  DevName: PChar;
begin
  if QueryDosDevice(nil, Buf_DevList, BufSize) = 0 then Exit;
  DevName := Buf_DevList;
  while DevName^ <> #00 do
  begin
    if (StrLIComp('COM', DevName, 3) = 0) then writeln(DevName);
    DevName := StrEnd(DevName)+1;
  end;
end.


--
С уважением, LVT
--
С уважением, LVT
Re[2]: Help! Как автоматом определять доступные системе com-
От: barry  
Дата: 29.11.03 09:03
Оценка:
Здравствуйте, Колобок В
КВБ>посмотри CreateFile там помоему можно задавать 'COM1' 'COM2' 'COM3' 'COM4'...наверняка если нету вернет ошибку.

Ошибку вернет и если COM в данный момент используется (занят). Наверное все-таки лучше читать реестр. Да и вопрос сам надо бы поточнее сформулировать...
— свободные для использования порты?
— все физические порты?
— все порты включая виртуальные (логические)? Драйаером устройства можно ведь проэмулировать порт.
Re[3]: Help! Как автоматом определять доступные системе com-
От: fiatik  
Дата: 01.12.03 08:34
Оценка:
Здравствуйте, barry, Вы писали:
B>Ошибку вернет и если COM в данный момент используется (занят). Наверное все-таки лучше читать реестр. Да и вопрос сам надо бы поточнее сформулировать...
B>- свободные для использования порты?
B>- все физические порты?
B>- все порты включая виртуальные (логические)? Драйаером устройства можно ведь проэмулировать порт.

Сорри. В данном частном случае меня интересуют физические порты. Но, если сразу определять, какие заняты — ваще неплохо.
А где найти информацию про то, как читать реестр? Пока ни разу не приходилось.
Re[2]: Help! Как автоматом определять доступные системе com-
От: fiatik  
Дата: 03.12.03 11:00
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:
LT>
LT>program devlist; {$apptype console}
LT>uses windows, sysutils;
LT>const BufSize = 1024;
LT>var
LT>  Buf_DevList: Array[0..BufSize] of Char;
LT>  DevName: PChar;
LT>begin
LT>  if QueryDosDevice(nil, Buf_DevList, BufSize) = 0 then Exit;
LT>  DevName := Buf_DevList;
LT>  while DevName^ <> #00 do
LT>  begin
LT>    if (StrLIComp('COM', DevName, 3) = 0) then writeln(DevName);
LT>    DevName := StrEnd(DevName)+1;
LT>  end;
LT>end.
LT>


Спасибо
Тока вот чей-то у меня QueryDosDevice упорно возвращает ноль
Впрочем, наверно, недостаточно поколупался
Еще раз спасибо
Re[3]: Help! Как автоматом определять доступные системе com-
От: Leonid Troyanovsky  
Дата: 03.12.03 11:45
Оценка:
Здравствуйте, fiatik, Вы писали:

F>Тока вот чей-то у меня QueryDosDevice упорно возвращает ноль


Виноват, она NT only здесь

--
С уважением, LVT
--
С уважением, LVT
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.