# AT_Commands_1b.py
# getestet am 27.11.2023
 
# Nach dem Anschließen bietet es sich an, als erstes Kommando AT einzugeben;
# die Rückmeldung sollte dann +OK\r\n sein.
 
# Nur für Terminal-Betrieb, z. B. mit Thonny
 
 
#####################################################################################
#                            Import und Instanziierungen                            #
#####################################################################################

from time import sleep
from machine import UART
uart1 = UART(1, baudrate = 57600, tx = 12, rx = 13) 
 
####################################################################################
#            Funktionen zur Kommunikation mit dem LORA-Modul            #
####################################################################################
 
def send_command(uart, cmd):       # cmd ist vom Typ String 
    c = bytes(cmd, 'UTF-8') + b'\r\n'       # c ist Vom Typ Byte-String (Bytes)
    anzahl_der_gesendeten_bytes = uart.write(c)
    print(anzahl_der_gesendeten_bytes, 'Bytes gesendet:', c)
 
def read_response(uart):
    print('auf Rückmeldung warten...')
    while not uart.any(): # warten, bis (mindestens) ein Byte im Lesepuffer ist
        sleep(0.1)
    return uart.readline()
 
 
####################################################################################
#                              Hauptprogramm                                       #
####################################################################################
 
print('AT-Commands ausführen lassen...')
print('Abbruch der Schleife mit Strg-C')
print()
 
while True:
    # Ein AT-Command ausführen lassen...
    at_command = input('AT-Command (ohne CR-LF):') # ohne \r\n
    send_command(uart1, at_command)
    print('gesendetes Kommando: ', at_command)    
    print('Rückmeldung:', read_response(uart1))
    print()