Delphi i podstawowa obsługa modemu

0

Witam.

Post umieszczam w dziale delphi/pascal, jako że problem swój realizuję w delphi, ale w sumie to sprawa jest dosyć uniwersalna. Potrzebuję mianowicie porady dotyczącej obsługi modemu z poziomu aplikacji.

Program miałby wybierać szereg numerów z listy określonej przez użytkownika, dzwoniąc na każdy z nich przez określony czas bądź do momentu odebrania/podniesienia słuchawki po drugiej stronie. W idealnym świecie, chciałbym aby odtwarzał przez linię głosową określony dźwięk/wiadomość, ale wątpię aby udało mi się to zrealizować.

Wracając do podstawowej funkcjonalności, generalnie nie mam problemu z wybraniem numeru, definiuję po prostu port szeregowy :

  s:='COM4';
  hCommFile:= CreateFile( PChar(s), GENERIC_READ or GENERIC_WRITE,
                                0, {not shared}
                                nil, {no security ??}
                                OPEN_EXISTING,
                                FILE_ATTRIBUTE_NORMAL,
                                0 {template} ); 

a następnie wysyłam mu odpowiedni ciąg znaków aby wybrać numer:

  s:='ATDT'+Number+#13+#10;
  NumberWritten:=0;
  Status:=WriteFile( hCommFile,PChar(s)[0],
                     Length(s),
                     NumberWritten,
                     nil);

problem w tym, że nie mam pomysłu jak sprawdzić, czy słuchawka po drugiej stronie została podniesiona.
próbowałem po prostu czytać z portu, ale brak tam jakichkolwiek danych w przypadku połączenia ze zwykłym aparatem telefonicznym, co potwierdza zresztą eksperymentowanie z hiperterminalem...

czy ktoś mógłby zasugerować jakieś rozwiązanie tego problemu?
z góry dziękuję za pomoc.

0

przydałaby sie lista komend AT modemu. mozliwe ze da sie jakas komenda sprawdzic stan polaczenia.
a co do odtwarzania dzwieku mozesz podpiac go pod karte dzwiekowa i odtwarzac dzwiek, to akurat nie jest wielkim problemem.

0
cimak napisał(a)

przydałaby sie lista komend AT modemu. mozliwe ze da sie jakas komenda sprawdzic stan polaczenia.
a co do odtwarzania dzwieku mozesz podpiac go pod karte dzwiekowa i odtwarzac dzwiek, to akurat nie jest wielkim problemem.

Lista komend hayesa dostępna tutaj: http://en.wikipedia.org/wiki/Hayes_command_set
nie widzę nic odpowiedniego, ale szukam dalej.
<edycja>
obszerniejszy spis komend - http://www.dialogic.com/support/helpweb/lasat/manuals/saf/Command/atlist.htm

jest postęp. wysłanie do modemu ciągu 'AT &S1' powinno powodować
ustawienie stanu wysokiego DSR po podniesieniu słuchawki z drugiej strony.
niestety, coś niekoniecznie tak się dzieje, próbuję dalej.

potem pozostanie mi znalezienie sposobu na sprawdzenie stanu DSR portu com
z poziomu programu, co pewnie jest banalne, ale niestety nie mam doświadczenia w obsłudze portów.
mam nadzieję, że ktoś skorzysta z moich doświadczeń
</edycja>

jeśli chodzi o rozwiązanie hardware'owe, rozważałem to jako ostateczność, aczkolwiek w przypadku wbudowanego modemu jest to utrudnione, wchodzi w grę podłączenie wyjścia karty dźwiękowej do linii telefonicznej - podejrzewam że potrzebny będzie jakiś układ zabezpieczający.

dzięki za sugestie, pozdrawiam.

0

czasem wewnetrzny modem jest widoczny w komputerze jako swego rodzaju karta dzwiekowa. chyba. a moze nie. dobra, nie wiem;]
ale jesli chodzi o zabezpieczenia to wystarczy chyba tylko odpowiedni transformatorek i pewnie dioda zenera bo i tak w przypadku wiekszego skoku napiecia na linii (np bezposrednie przywalenie pioruna) malo ktore zabezpieczenie wytrzyma ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1