Response vom Modem in Variable schreiben

16/04/2008 - 18:56 von Marcia Schmid | Report spam
Hallo,

ich beschàftige mich erst seit kurzen mit Python. Im Moment versuche ich
die Antwortdaten eines Modems auszulesen und habe damit etwas
Probleme. Mein Ansatz sieht so aus:

if ser.isOpen :
w = ser.write('ATI%s' % str_number)
weiter = True
content = ''
while weiter :
content = ser.read(1)
if ord(cont) != 13:
cont = cont + content
n = ser.inWaiting()
if n == 0 :
weiter = False

print cont

Problem es wird nur die erste Zeile gezeigt. Eigentlich ist die Antwort
aber mehrzeilig. Ich such sowas wie >while(!eof)<.

Gruß Marcia
 

Lesen sie die antworten

#1 Diez B. Roggisch
16/04/2008 - 19:43 | Warnen spam
Marcia Schmid schrieb:
Hallo,

ich beschàftige mich erst seit kurzen mit Python. Im Moment versuche ich
die Antwortdaten eines Modems auszulesen und habe damit etwas Probleme.
Mein Ansatz sieht so aus:

if ser.isOpen :
w = ser.write('ATI%s' % str_number)
weiter = True
content = ''
while weiter :
content = ser.read(1)
if ord(cont) != 13:
cont = cont + content
n = ser.inWaiting()
if n == 0 :
weiter = False

print cont



ser.readline() sollte dir eigentlich eine Zeile auf einmal geben. Das
spart dann das komplette gehampel da oben.

EOF gibt's ausserdem nicht. AFAIK senden modems immer ein newline als
letztes. EOF wuerde ja ende der Kommunikation bedeuten, oder nicht? Oder
meinst du EOT? [1]

Letztlich laeuft es auf das Protokoll inaus. Das musst du schon parsen.

Ein paar Anmerkungen noch:

- statt if n == 0: weiter = False macht man natuerlich

weiter = n != 0

- statt ord(cont) == 13 vergleicht man sofort auf :

cont != ''

Diez


[1] http://www.geocities.com/dtmcbride/...ascii.html

Ähnliche fragen