AT Befehl senden und lesen

  • Hallo zusammen,

    ich versuche zur Zeit mein GSM-Modul, Siemesn TC35, via AT Befehl anzusprechen.
    Hierzu habe ich folgeden Code:

    Python
    #!/usr/bin/python3
    import serial
    ser = serial.Serial("/dev/ttyAMA0", timeout=10)
    ser.baudrate = 9600
    print("Now send!")
    ser.write(b'AT')
    daten = ser.readline()
    #print(daten)
    print(daten.decode('utf8'))
    ser.close()

    Normalerweise würde ich ein "OK" erwarten - dies sollte mir das Modul eig. zurücksenden, jedoch bekomme ich nichts zurück.

    Ich habe zusätzlich noch folgenden Code, der nur lesen soll:

    Python
    #!/usr/bin/python3
    import serial
    ser2 = serial.Serial("/dev/ttyAMA0", timeout =10)
    ser2.baudrate = 9600
    daten = ser2.readline()
    print(daten)
    print(daten.decode('utf8'))
    ser2.close()

    Wenn ich den zweiten Code mit F5 starte und innerhalb der 10 sek, das Modul neustarte ( Strom weg und wieder ran), bekomme ich "SYSSTART" zurück - also zumindest eine Reaktion vom Modul!?!?
    Im ersten Code verwende ich ser.write, hier wird ein 'b' eingefügt. Dieses wird farbig genauso gekennzeichnet wie der String, der dann folgt - ist das richtig so? Ich kenne den obigen Code aus meinem Buch ( Raspberry Pi - das umfassende Handbuch), dort ist dieses 'b' eben nicht in der Farbe wie die des Strings gehalten.

    Kann mir jemand auf die Sprünge helfen, wie ich AT Befehle vom RPI zum GSM Modul senden kann, und Antworten vom Modul lesen kann?

    Ich sage :danke_ATDE:
    Gruß ecco

    Einmal editiert, zuletzt von ecco (1. Februar 2016 um 22:39)

  • b, steht für binär

    ich bin sicher du willst AT nicht binär sondern als ASCII also Text senden, ich kenne python nicht aber gehört Text nicht in "AT" ?

    b,'3' ist ein Zeichen und die 3 wird nicht als 3 geschickt sondren als 00000011 eben eine binäre 3 und binär kann man nur ein Zeichen schicken, deswegen auch die ein Strich Hochkomma, 2 Zeichen klappt nicht.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • Fehlt da nicht das Carriage Return ?

    Code
    ser.write(b'AT\r')

    möglich aber wird bei ser.write AT\r wirklich binär in Char Hochkommata (ein Strich) gesendet?
    Automatisch zusammengefügt:
    nun weiss ich es,

    https://www.mikrocontroller.net/topic/337166#3701510

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (2. Februar 2016 um 09:56)

  • Vielen Dank für's Feedback!

    Ich bin weitergekommen :)

    Zunächst war \r goldwert, weiterhin habe ich bei der anweisung ser.read(.........) die Klammern leergelassen, es wurde daraufhin nur ein BYte gelesen, mit z.B. 10 funktioniert es!

    Hier der Code, der bis nun erstmal mir mein "OK" vom GSM Modul zurück liefert:

    Python
    #!/usr/bin/python3
    import serial
    ser = serial.Serial("/dev/ttyAMA0", timeout=3)
    ser.baudrate = 9600
    print("Now send!")
    ser.write(b'\rAT')
    daten = ser.read(10)
    print(daten)
    print(daten.decode('utf8'))
    ser.close()

    In diesem Sinne, danke!
    Gruß ecco

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!