🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comm.internet.software
3 messages
3 total messages Started by Andreas Viebke Sun, 11 Feb 1996 17:24
Trumpet-Scrips laufen fehlerhaft?
#2
Author: Andreas Viebke
Date: Sun, 11 Feb 1996 17:24
55 lines
1799 bytes
Hallo, liebe Leute !

Ich habe mir fuer Trumpet 2.1f (unter Windows for Workgroups mit
Win32s, V. 1.30A) ein Script geschrieben, das nacheinander mehrere
Nummern waehlt, bis es eine freie Leitung erwischt. Nun bin ich nicht
gerade ein Neuling, was das Programmieren in C betrifft, sollte also
keine Schwierigkeiten mit dieser simplen Scriptsprache haben. Dennoch
stehe ich vor einem Problem: die Schleife wird nicht korrekt
abgearbeitet:

$n1 = "..."
...
$n8 = "..."
%c = 0
%n = 0
%attempts = 40
repeat
  %c = %c + 1
  if %c > 8
    %c = 1
  end
  if %c = 1
    $number = $n1
  end
  if %c = 2
    $number = $n2
  end
...
  if %c = 8
    $number = $n8
  end
  if %n = %attempts
    display "Too many dial attempts"\n
    abort
  end
  display "Dialling..."\n
  output "at dt "$number\r
  read 30 $line
  %ok = pos ("CONNECT", $line)
  %n = %n + 1
until %ok

Auf Nummer 1 folgt Nummer 2, dann Nummer 4, 6 usw.! Und der String
"Dialling..." wird innerhalb eines Schleifendurchlaufs mehrmals
angezeigt! Es kommt mir so vor, als ob das Read-Kommando nicht wartet,
bis eine ganze Zeile vom Modem eingelesen wurde, sondern einfach schon
weiterlaeuft, wenn die ersten Zeichen ankommen. Beim Input-Kommando
passiert genau das gleiche!

Mache ich irgendetwas falsch? Ist mein Modem falsch eingestellt? Oder
woran kann es liegen?

Danke und Gruss!

Andreas Viebke
Re: Trumpet-Scrips laufen fehlerhaft?
#7
Author: Hans-Juergen Beie
Date: Mon, 12 Feb 1996 20:56
69 lines
2389 bytes
In article <4fl8k2$iv6@unlisys.unlisys.net>,
viebke@berlin.snafu.de (Andreas Viebke) wrote
> Ich habe mir fuer Trumpet 2.1f (unter Windows for Workgroups mit
> Win32s, V. 1.30A) ein Script geschrieben, das nacheinander mehrere
> Nummern waehlt, bis es eine freie Leitung erwischt. Nun bin ich
> nicht gerade ein Neuling, was das Programmieren in C betrifft,
> sollte also keine Schwierigkeiten mit dieser simplen Scriptsprache
> haben. Dennoch stehe ich vor einem Problem: die Schleife wird nicht
> korrekt abgearbeitet:
>
> $n1 = "..."
> ...
> $n8 = "..."
> %c = 0
> %n = 0
> %attempts = 40
> repeat
[...]
>   display "Dialling..."\n
>   output "at dt "$number\r
>   read 30 $line

# Ich verwende statt der obigen 3 Zeilen hier ein Konstrukt wie...

  $line = ""
  display "Dialling" $number "..."\n
  outputecho $number\r

  # Der Timeout-Wert (hier 50s) muss goesser sein als die Zeit, die
  # das Modem auf ein Abheben der Gegenseite abwartet (normalerweise
  # der Wert im Modem-Register S7).
  # Anderfalls bricht das Script ab, obwohl das Modem noch probiert.
  #
  %timeout = ![read 50 $line]
  if %timeout
    display "*** Timeout beim Waehlen."\n
    output "+++"\r
    output "ath"\r
    sleep 3
    abort
  else
    while $line = ""
      read 10 $line
    end
  end

# Hier geht's mit Deinem Script weiter...

>   %ok = pos ("CONNECT", $line)
>   %n = %n + 1
> until %ok

>
> Auf Nummer 1 folgt Nummer 2, dann Nummer 4, 6 usw.! Und der String
> "Dialling..." wird innerhalb eines Schleifendurchlaufs mehrmals
> angezeigt! Es kommt mir so vor, als ob das Read-Kommando nicht
> wartet, bis eine ganze Zeile vom Modem eingelesen wurde, sondern
> einfach schon weiterlaeuft, wenn die ersten Zeichen ankommen. Beim
> Input-Kommando passiert genau das gleiche!

Das 'outputecho' verhindert das "Verschlucken" von Teilen der Modemantwort.

Vielleicht hilft's.

hjb :-?

-- 
Hans-Juergen Beie
hjb@pollux.franken.de
Re: Trumpet-Scrips laufen fehlerhaft?
#3
Author: Andreas Viebke
Date: Thu, 15 Feb 1996 18:21
40 lines
1966 bytes
Am 12 Feb 1996 21:56:00 +0100 schrieb hjb@pollux.franken.de
(Hans-Juergen Beie):

>In article <4fl8k2$iv6@unlisys.unlisys.net>,
>viebke@berlin.snafu.de (Andreas Viebke) wrote
(... zur Frage, weshalb in einem Trumpet-Skript, das in einer Schleife
die zu waehlende Nummer festlegt und dann probiert, bis eine
Verbindung zustande kommt...)
>> Auf Nummer 1 folgt Nummer 2, dann Nummer 4, 6 usw.! Und der String
>> "Dialling..." wird innerhalb eines Schleifendurchlaufs mehrmals
>> angezeigt! Es kommt mir so vor, als ob das Read-Kommando nicht
>> wartet, bis eine ganze Zeile vom Modem eingelesen wurde, sondern
>> einfach schon weiterlaeuft, wenn die ersten Zeichen ankommen. Beim
>> Input-Kommando passiert genau das gleiche!

>Das 'outputecho' verhindert das "Verschlucken" von Teilen der Modemantwort.

>Vielleicht hilft's.

"Verschlucken" ist genau richtig, obwohl ich das mit "outputecho"
nicht in den Griff bekommen habe. Trotzdem Danke!
Offenbar sendet das Modem nach Empfang des Waehlstrings noch ein LF
oder CRLF, was mein Skript als Antwort 'betrachtet' hat. Ich habe mir
jetzt folgendermassen beholfen:

  (Waehlen ...")
  repeat
    read 30 $line
    %busy = pos("BUSY", $line)
    %connect = pos("CONNECT", $line)
    %delayed = pos("DELAYED", $line)
    %wait = pos("WAIT", $line)
    %full = pos("FULL", $line)
  until %busy | %connect | %delayed | %full | %wait

Ich warte einfach, bis eine der moeglichen und sinnvollen Antworten
kommt.

Gruss
Andreas
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads