Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Вниз

Как работать с модемом и СОМ портами, точнее как... 


Dennis S   (2001-11-06 10:45) [0]

Вопрос в следующем:
Есть модем (стоит в одном из портов - СОМ2).
Windows его не видит(не определяет), пока не начнешь устанавливать оригинальный пакет для этого модема с CD-ROM-а. Затем все ОК.
Так вот, как сделать чтобы, прога нашла и показала:
-все доступные порты на кампе
-иммено тот, в котором стоит модем (но Windows его не видит)
-и как протестировать его(модем)
Идея такая - сделать маленькую утилиту - бегает по портам, выводит список доступных, показывает (отдельно) тот, который с модемом, и "пробует" его(порт с модемом).
И еще с какого боку подходить к АТ командам модема?



Dennis S   (2001-11-08 14:46) [1]

Ну, хоть скажите, где что-то толковое можно прочесть...!



Anatoly Podgoretsky   (2001-11-08 14:57) [2]

Select * from system where port = :system



Anatoly Podgoretsky   (2001-11-08 15:43) [3]

А вообщето странно что не определяет если порт в наличии и виден системе и к нему подключен модем.
Вот найти порты это проблема, а у тебя фраза "все доступные порты"
Пртестировать модем проще, послать команду с помощью терминала ATZ ответ должен быть ОК



savva   (2001-11-09 12:34) [4]

список портов HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM



Dennis S   (2001-11-09 17:23) [5]

2Anatoly Podgoretsky:
...послать команду с помощью терминала ATZ ответ должен быть ОК.
Как это делается программно??? Напиши строчку.

2savva:
...список портов HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
Это вообще интересная БАДЯГА - У меня выдает 6 СОМ портов, когда в системе стоит 3 СОМ порта... :))



Anatoly Podgoretsky   (2001-11-09 21:58) [6]

1. Тебе надо самому писать, я тебе подсказал как определить наличие модема.
2. Опираться на реестр нельзя, только система знает, какие из этих 6 портов реальные.



valera_s   (2001-11-12 08:58) [7]

Для начала, если не хочешь работать с портом через API непосредственно, выбери какой-нибудь подходящий для этого инструментарий: AsyncPro3 скажем, или Varian Async на худой конец.
Через них работать с портом намного проще, особенно с первой. Она сама предложит тебе выбрать доступные COM-порты на машине и может автоматически открыть порт.
Удачи!
Много всякой всячины, может быть пригодится, на torry.ru



SergeyDonetsk   (2001-11-12 09:25) [8]

Может немного не втему простите но вроде тут так умно отвечают может и мне кто поможет? плз. уже за тра..ся с этим модемом.

Как снять трубку на модеме и набрать номер?
обычной посылкой данных в порт "АТDР 123" НИЧЕГО НЕПОЛУЧАЕТСЯ только лампочки мигают на модеме!



valera_s   (2001-11-12 12:50) [9]

>SergeyDonetsk
с COM портами бывают такие запалы, что приходится их переинициализировать, я имею в виду, под Windows 9x, только перезагрузкой последней. Проверь в терминалке, работает ли твой модем вообще, пошли ему команду инициализации и посмотри ответит ли. Если все нормально, тогда что-то ты не настроил в своей программе.



JB   (2001-11-13 01:12) [10]

Есть компонент который просто доставляется в Дельфи.
Нужно в меню дельфи выбрать Component->ImportActiveXControl.
И из списка представленного вам выбрать Microsoft Communicate Control.





T2   (2001-11-13 02:31) [11]

Use component Varian (c) Asunc32



Dennis S   (2001-11-13 12:08) [12]

Компоненты - это хорошо!
А ручками то лучше...
Научите - век не забуду!!! :)



SergeyDonetsk   (2001-11-13 14:51) [13]

Да если нетрудно научите ручками!

а по поводу компонентов и Async32 пробовал с портом и с устройством работает ОК! а вот модем номер нехочет набирать. Пробовал разные модемы. Пробовал все модемы в терминале, консоли и т.п. все РАБОТАЕТ!

Извеняюсь за огромную вставку но всеже приведу отрывок кода:

hCommFile := CreateFile(PChar("Com1"), GENERIC_WRITE, 0, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

if hCommFile=INVALID_HANDLE_VALUE then
begin
ShowMessage("Unable to open "+ CommPort);
exit;
end;

PhoneNumber := "ATH1" + #13 + #10;
{PhoneNumber := "ATH1"^M^J}
{PhoneNumber := "ATH1"}
{и т.п. пробовал}

if
WriteFile(hCommFile, PChar(PhoneNumber)^, Length(PhoneNumber),
NumberWritten, nil) = false then
begin
ShowMessage("Unable to write");
end;

так не работает!



SergeyDonetsk   (2001-11-13 14:55) [14]

Тут сделал установку связи через TAPI но дальше незнаю как передать данные на другой модем?
Кто может подскажет литиретурку по работе с коммуникационными устройствами на АПИ или делфи???

Очень интересная тема.



SergeyDonetsk   (2001-11-14 10:22) [15]

???



Dennis S   (2001-11-19 11:23) [16]

И все-таки, как узнать сколько на "Базе" СОМ-портов
и в каком они состоянии(т.е. стоит на них сто-то или он пустой)???

>>SergeyDonetsk
PhoneNumber := "ATH1" + #13 + #10;
{PhoneNumber := "ATH1"^M^J}
{PhoneNumber := "ATH1"}
{и т.п. пробовал}
А этого я вообще не понимаю... :(
Это что? Команды модему???
У тебя в коде он сначала пробует открыть порт, а потом пробует писать в него... так что ли???



Lelik   (2001-11-20 21:57) [17]

Там после того как откроешь КОМ добать строчку:
EscapeCommFunction(hCommFile, SetDtr);
У меня на модеме после этого лампочка TR загорается, и после этого модем начинает понимать команды (достаточно "TDXXX"#13)



Alev   (2001-11-28 22:10) [18]

Хотелось бы узнать,
какие команды можно посылать модему?



pasha676   (2001-11-29 11:36) [19]

Dennis S
Так. Я чувствую в COM-портах и модемах новичок ты конкретный.
Напиши мне письмо. Намылю тебе пример. Я давно друга своего по нему учил.
Пример остался. Вроде даже рабочий.
SergeyDonetsk
Ты в курсе что есть такая штука как DCB. Ты не скорость ни биты четночти в своем примере порту не задал! Кстати тоже напиши.
Alev
В описании к конкретному модему обычно идет бук. В нем все расписано. Команды, управляющие регистры и т. д.



Alev   (2001-11-29 14:29) [20]

Спасибо!!!!!!!



Milz   (2001-11-29 15:34) [21]

Сколько COM портов можно узнать заглянув в BIOS, вот отрывок из Жордейна

Число портов коммуникации может быть получено из области дан-
ных BIOS. BIOS отводит четыре 2-байтных поля для хранения базовых
адресов вплоть до четырех COM портов (MS DOS использует только
два из них). Базовый адрес - это младший из адресов портов, отно-
сящихся к группе портов, имеющих доступ к данному каналу коммуни-
кации. Эти четыре поля начинаются с адреса 0040:0008. Порту COM1
соответствует адрес :0008, а COM2 - 000A. Если это поле содержит
0, то соответствующий порт отсутствует. Таким образом, если слово
по адресу :0008 отлично от нуля, а по адресу 000A - нулевое, то
имеется один порт коммуникации.




Форум: "Система";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.76 MB
Время: 0.048 c
6-9255            Rogue                 2001-12-18 13:24  2002.03.04  
Список всех файлов в директории через http


1-9149            Squall                2002-02-17 22:56  2002.03.04  
Скорость Progress Bar a!!!


1-9237            dim2001               2002-02-13 19:48  2002.03.04  
стандартный диалог


3-9093            harismatik            2002-02-06 16:35  2002.03.04  
Шестнадцатиричные значения в базе


6-9265            Evgenii               2001-12-14 23:09  2002.03.04  
Народ, помогите, как звонить через Modem.