From 1fd5a3e75c9ee2e1b95bb8901541a90167004ed0 Mon Sep 17 00:00:00 2001 From: PaulVua Date: Tue, 18 Mar 2025 11:50:39 +0100 Subject: [PATCH] update --- SARA/sara.py | 81 +++++++++++++++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/SARA/sara.py b/SARA/sara.py index aeb9374..f64ee32 100755 --- a/SARA/sara.py +++ b/SARA/sara.py @@ -49,51 +49,62 @@ config = load_config(config_file) # Access the shared variables baudrate = config.get('SaraR4_baudrate', 115200) -ser = serial.Serial( - port=port, #USB0 or ttyS0 - baudrate=baudrate, #115200 ou 9600 - parity=serial.PARITY_NONE, #PARITY_NONE, PARITY_EVEN or PARITY_ODD - stopbits=serial.STOPBITS_ONE, - bytesize=serial.EIGHTBITS, - timeout = timeout -) - -ser.write((command + '\r').encode('utf-8')) - -#ser.write(b'ATI\r') #General Information -#ser.write(b'AT+CCID?\r') #SIM card number -#ser.write(b'AT+CPIN?\r') #Check the status of the SIM card -#ser.write(b'AT+CIND?\r') #Indication state (last number is SIM detection: 0 no SIM detection, 1 SIM detected, 2 not available) -#ser.write(b'AT+UGPIOR=?\r') #Reads the current value of the specified GPIO pin -#ser.write(b'AT+UGPIOC?\r') #GPIO select configuration -#ser.write(b'AT+COPS=?\r') #Check the network and cellular technology the modem is currently using -#ser.write(b'AT+COPS=1,2,20801') #connext to orange -#ser.write(b'AT+CFUN=?\r') #Selects/read the level of functionality -#ser.write(b'AT+URAT=?\r') #Radio Access Technology -#ser.write(b'AT+USIMSTAT?') -#ser.write(b'AT+IPR=115200') #Check/Define baud rate -#ser.write(b'AT+CMUX=?') - - try: + + ser = serial.Serial( + port=port, #USB0 or ttyS0 + baudrate=baudrate, #115200 ou 9600 + parity=serial.PARITY_NONE, #PARITY_NONE, PARITY_EVEN or PARITY_ODD + stopbits=serial.STOPBITS_ONE, + bytesize=serial.EIGHTBITS, + timeout = timeout + ) + + ser.write((command + '\r').encode('utf-8')) + + #ser.write(b'ATI\r') #General Information + #ser.write(b'AT+CCID?\r') #SIM card number + #ser.write(b'AT+CPIN?\r') #Check the status of the SIM card + #ser.write(b'AT+CIND?\r') #Indication state (last number is SIM detection: 0 no SIM detection, 1 SIM detected, 2 not available) + #ser.write(b'AT+UGPIOR=?\r') #Reads the current value of the specified GPIO pin + #ser.write(b'AT+UGPIOC?\r') #GPIO select configuration + #ser.write(b'AT+COPS=?\r') #Check the network and cellular technology the modem is currently using + #ser.write(b'AT+COPS=1,2,20801') #connext to orange + #ser.write(b'AT+CFUN=?\r') #Selects/read the level of functionality + #ser.write(b'AT+URAT=?\r') #Radio Access Technology + #ser.write(b'AT+USIMSTAT?') + #ser.write(b'AT+IPR=115200') #Check/Define baud rate + #ser.write(b'AT+CMUX=?') + + # Read lines until a timeout occurs response_lines = [] - while True: - line = ser.readline().decode('utf-8').strip() - if not line: - break # Break the loop if an empty line is encountered - response_lines.append(line) + start_time = time.time() + + while (time.time() - start_time) < timeout: + line = ser.readline().decode('utf-8', errors='ignore').strip() + if line: + response_lines.append(line) + + # Check if we received any data + if not response_lines: + print(f"ERROR: No response received from {port} after sending command: {command}") + sys.exit(1) # Print the response for line in response_lines: print(line) except serial.SerialException as e: - print(f"Error: {e}") - + print(f"ERROR: Serial communication error: {e}") + sys.exit(1) +except Exception as e: + print(f"ERROR: Unexpected error: {e}") + sys.exit(1) finally: - if ser.is_open: + # Close the serial port if it's open + if 'ser' in locals() and ser.is_open: ser.close() - #print("Serial closed") +