Wähelen funktioniert, aber...das Ende

Wählen hat geklappt, aber was ist mit dem Auflegen?
Wenn das Modem in der Leitung bleib bekomme ich ne Rückkoppelung.
Ausserdem sollte das Telefonat auch irgendwan beendet sein.

Ich habs auch schon mit
echo „ATD 01234567789“ > /dev/ttySL0; exit
probiert, aber es klappt nicht.

Irgendwelche Tipps? Wie lautet der Modem Auflegen Befehl?

Gruß und Danke
Thomas

Hallo Thomas,

ATH legt auf. Wenn du das Telefon noch nicht abgehoben hast, wird natürlich die Verbindung unterbrochen, versuchs mal mit dem Wählstring
„ATD 01234567789;“ . Ansonsten kannst du hier nachsehen:

http://members.tripod.com/michaelgellis/modem.html

Ich hatte das automatische Wählen schon einmal am Funktionieren, aber alles mit analogem Modem ist schon so furchtbar lange her.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Thomas,

Irgendwelche Tipps? Wie lautet der Modem Auflegen Befehl?

Hint:
ATH0

Mfg,
Pürsti

P.S.: Eine Liste mit ein paar Modem-Befehle findest Du z.B. hier
http://support.ap.dell.com/support/edocs/comm/xircrb…
command.htm

Moien

echo „ATD 01234567789;“ > /dev/ttySL0

Telefonhörer abheben

echo „ATH“ > dev/ttySL0

Irgendwelche Tipps?

Das ; ist wichtig. Wenn du das nicht angibts schaltet das Modem dem Befehlsmodus aus.

Man kann das ganze noch optimieren (Nummern im Modem speichern, Carrier-Detection ausschalten, spielschen mit dem Speaker…).

cu

Auflegeproblem
Also das Wählen funktioniert soweit, aber das Auflegen nicht.
Eigentlich sollt dieser Artikel ja eine Antwort zu dem „Modem über Komandozeile“ Artikel sein.(Nur habe ich auf neuen Artikel, statt auf Antwortschreiben geklickt)

Also es geht nicht mit den Auflegen.
Ich habe alle Versionen Versucht.
echo „ATD0123456789,H0“ > /dev/ttySL0;
echo „ATD0123456789;ATH0“ > /dev/ttySL0;
echo „ATD0123456789;H0“ > /dev/ttySL0;
echo „ATD0123456789;H0“ > /dev/ttySL0;echo „ATH“ > /dev/ttySL0;
Bei keiner dieser Variationen wird nach dem Wählen aufgelegt.
echo „ATD0123456789;H0“ > /dev/ttySL0;echo „ATH0“ > /dev/ttySL0;
Hier wird schon während des Wählens aufgelegt.

Für alle die den Artikel „Modem über Konsole“ nicht gelesen haben:
Es geht mir darum Telefonnr per klick in dem Programm Kontact wählen zu lassen.

Das ganze soll so ablaufen:

  1. Ich klicke auf die Telenr
  2. Ich hebe mein telefon ab (im hintergrund wählt das Modem)
  3. Modem legt auf (das gespräch ist nun auf meinen Hörer und ich warte bis jemand abhebt)
  4. Ich lege auf (Da das Modem vorher aufgelegt hat, sollte jetzt die Leitung wieder frei sein.)

Wie gesagt,es klappt alles bis aufs auflegen.
Das heisst, nach meinem gespräch ist die leitung nicht frei. (Erst wenn ich auf der Komandozeile ATH0 ausführe.)

Es müsste irgend wie ATD0123434… und erst nach beendigung des Wählens ATH Ausgeführt werden.

Hat irgend jemand ne Idee. (Von mir aus auch mit hilfe eines Shell-skriptes)

Gruß Th

Moien

was tut:
echo „ATD0123456789;“ > /dev/ttySL0 ; sleep 15s ; echo „ATH0“ > /dev/ttySL0

Wobei man mit der Sekundenzahl spielen muss. Weiss nicht wie lange dein Modem braucht.

  1. Ich klicke auf die Telenr
  2. Ich hebe mein telefon ab (im hintergrund wählt das Modem)

Der Punkt muss fix gehen. Wenn du mehr als 15 Sekunden zum Aufheben brauchst ist die Leitung weg.

  1. Modem legt auf (das gespräch ist nun auf meinen Hörer und
    ich warte bis jemand abhebt)
  2. Ich lege auf (Da das Modem vorher aufgelegt hat, sollte
    jetzt die Leitung wieder frei sein.)

Und reden wir überhaupt von einer analogen Leitung ? Bei ISDN & Co geht das nicht so einfach.

Es müsste irgend wie ATD0123434… und erst nach
beendigung des Wählens ATH Ausgeführt werden.

Das Modem kann eine solche Sequenz nicht ausführen. Es kann nicht „warten“ bis das Wählen fertig ist.

cu

Shellscript wg Internationalen Vorwahlnr.
echo „ATD%NR;“ > /dev/ttySL0 ; sleep 15s ; echo „ATH0“ > /dev/ttySL0 funktioniert!!!

Nächstes Problem wäre das Internationale Vorwahlzeichen ‚+‘
Da die Kontakte zum Großteil im internationlen Format gespeichert sind bräuchte ich noch ein Shellscript, das ‚+‘ mit ‚00‘ ersetzt.

Und wenn man ehe ein script schreibt, kann man auch gleich die Stringlänge auslesen und die sleep 15s an die länge der Telnr anpassen.
(Das Modem wählt 7 Ziffern in 10 sek)

Zum Schluss soll dann dann mein Script
echo „ATD$nr;“ > /dev/$dev ; sleep $str_lenght*7/10s ; echo „ATH0“ > /dev/$dev
ausführen.

Aber wie ließt man die Stringlänge aus, und wie ersetze ich in einer Variable ‚+‘ mit ‚00‘?

Hab leider nicht viel ahnung von shellscripting!

Also der Auftuf sollte etwa so erfolgen:
/pfad/zu/meinem/script/telescribt.sh %N ttySL0
Wobei Kontact %N durch die aktuelle Telefonnr ersetzt.Also etwa so:
[…] /telescribt.sh +490123456789 ttySL0

Wie gesagt,es klappt alles bis aufs auflegen.
Das heisst, nach meinem gespräch ist die leitung nicht frei.
(Erst wenn ich auf der Komandozeile ATH0 ausführe.)

Hallo,

ich schätze, du hast Modem und Telefon falsch angeschlossen. Normalerweise hat das Modem Vorrang, das Telefon kann also erst übernehmen, wenn das Modem aufgelegt hat! Nach deiner obigen Aussage ist das nicht so (sonst könntest du kein Gespräch führen, ohne dass das Modem vorher auflegt), und da dieser Fall nicht vorgesehen ist, kannst du lange programmieren, ohne das Wählen zum Funktionieren zu bringen.

Gruss Reinhard

echo „ATD%NR;“ > /dev/ttySL0 ; sleep 15s ; echo „ATH0“
> /dev/ttySL0
funktioniert!!!

Na Gott sei Dank. Davon hab ich naemlich gar keine Ahnung. Aber hiervon:

Nächstes Problem wäre das Internationale Vorwahlzeichen ‚+‘
Da die Kontakte zum Großteil im internationlen Format
gespeichert sind bräuchte ich noch ein Shellscript, das ‚+‘
mit ‚00‘ ersetzt.

NR=`echo $NR |sed 's/+/00/'`

Und wenn man ehe ein script schreibt, kann man auch gleich die
Stringlänge auslesen und die sleep 15s an die länge der Telnr
anpassen.

LENNR=`echo $NR |wc -c`

Genaugenommen wird dabei der Zeilenvorschub, den das echo mit ausgibt, mitgezaehlt. Dein tatsaechlicher String ist ein Zeichen kuerzer. Messfehler, kann man auch rausrechnen. Siehe unten.

(Das Modem wählt 7 Ziffern in 10 sek)

Ganz schoen lahm, oder?

echo „ATD$nr;“ > /dev/$dev ; sleep $str_lenght*7/10s ;
echo „ATH0“ > /dev/$dev

echo "ATD`echo $NR |sed 's/+/00/'` \>/dev/$dev &&
sleep `expr \( \`echo 123456789 |wc -c\` - 1 \) * 7 / 10` &&
echo "ATD0" \>/dev/$dev

(Das - 1 wuerde ich noch weglassen, da sowohl expr als auch sleep nur mit Ganzzahlen umgehen koennen, die es durch Abschneiden der Kommastellen erhalten. Sie runden also immer nach unten und koennten so zu schnell sein.)

Also der Auftuf sollte etwa so erfolgen:
/pfad/zu/meinem/script/telescribt.sh %N ttySL0

Das kriegst Du selber hin. Falls nicht, fragen.

Gruss vom Frank.

Moien

Normalerweise hat das Modem Vorrang, das Telefon kann also
erst übernehmen, wenn das Modem aufgelegt hat!

Du redest von ISDN, er hat analog.

cu

Hallo pumpkin,

wie kommst du denn auf die Idee? Ich rede natürlich von analog, nämlich genau davon, wie es mit einer NF-Dose funktionieren soll. Die haben sich ja was dabei gedacht, und genormt ist es auch irgendwo.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich habs jetzt so gelöst.
@7 sek: Klar, etwas lang, es sind 6, hab mich verzählt.

NR=$1; dev='/dev/'$2; lnd='00'$3
ovn=`echo $NR |sed 's/+/00/'`
ws=`echo $ovn |sed 's/'$lnd/0/`
echo "ATM0D"$ws";" \>$dev 
a=`expr \( \`echo $ws |wc -c\` - 1 \) * 6 / 10`
sleep $a."s"
echo "ATD0" \>$dev

Als Bonusfunktion, kann man noch die Landeskennzahl angeben.