Вы можете использовать исключения, чтобы узнать причину ошибки:
import serial
import sys
try:
ser = serial.Serial(port='COM3', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, timeout=1)
while (True):
ser.write(str.encode("S\r\n"))
print(ser.read())
except serial.SerialException as e:
print("serial error:", e)
except:
print("other error:", sys.exc_info()[0])
Так что, если, например, вы используете неправильный порт, будет напечатано:
error: could not open port 'COM3': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)
Edit: проблема была в том, что write
хочет массив байтов, а не строку. Хотя документы говорят, что строка в порядке (версия 2.5).
Важно не скрывать исключения. См .: О перехвате ЛЮБОГО исключения