Tipo di dati trasmessi e ricevuti
import serial
ser = serial.Serial("com1", 38400, 8, "N", 1, timeout=1)
ser.write(dati)
dati = ser.read(n) # lettura di n byte
Il metodo readline serve per ricevere una sequenza binaria da considerare come una singola riga di testo codificata, terminante con il carattere di fineriga \n (LF, byte 10, line feed).
dati = ser.readline() # lettura di una riga di testo
ser.flushInput() ser.flushOutput()
ser.inWaiting()
try: ser = serial.Serial("/dev/ttyUSB0", 9600, 8, "N", 1, timeout=1) except serial.serialutil.SerialException: print("Porta seriale non apribile")
ser.close()
import serial import struct PORT = "/dev/ttyUSB0" print("Lettura 256 byte da modulo seriale") print("-" * 63) data = 33, 0, 0, 0 ,1 txData = struct.pack("B"*len(data), *data) ser = serial.Serial(PORT, 9600, 8, "N", 2, timeout=2) ser.write(txData) rxData = ser.read(256) ser.close() data = struct.unpack("B"*len(rxData), rxData) for i in range(0, len(data), 16): chunk = data[i:i+16] print(" ".join("%3d" % n for n in chunk)) print("-" * 63)
Lettura 256 byte da modulo seriale --------------------------------------------------------------- 33 0 32 1 0 32 62 255 119 190 194 136 0 175 119 190 194 136 0 35 11 120 177 32 237 49 239 63 221 33 240 63 62 205 50 240 63 62 201 50 243 63 205 160 1 254 1 40 7 254 2 204 0 2 24 242 122 254 32 32 5 205 167 0 24 232 254 33 32 5 205 227 0 24 223 254 34 32 5 205 29 1 24 214 254 31 32 5 205 154 0 24 205 254 35 32 5 205 67 1 24 196 254 36 32 5 205 94 1 24 187 254 37 32 5 205 107 1 24 178 254 38 32 5 205 125 1 24 169 254 39 204 149 1 24 162 14 128 121 238 64 79 211 16 33 52 58 43 124 181 32 251 24 240 197 14 79 205 229 1 14 75 205 229 1 193 201 245 197 213 229 205 160 1 254 1 32 39 106 205 160 1 254 1 32 31 98 205 160 1 254 1 32 23 74 205 160 1 254 1 32 15 66 205 160 1 254 1 32 7 114 35 11 120 177 32 242 254 2 204 0 2 225 209 193 241 201 245 197 213 229 205 160 1 254 1 32 37 106 205 160 1 254 1 32 29 98 205 160 1 254 1 32 21 74 205 ---------------------------------------------------------------
#------------------------------------------------------------------------------ # Ritorna una tupla di nomi validi ('com1', 'com2', ....) ecc # Le porte seriali presenti ma gia' in uso sono escluse #------------------------------------------------------------------------------ def availableSerialPort(): suffixes = "S", "USB", "ACM", "AMA" nameList = ["com"] + ["/dev/tty%s" % suffix for suffix in suffixes] portList = [] for name in nameList: for number in range(48): portName = "%s%s" % (name, number) try: serial.Serial(portName).close() portList.append(portName) except IOError: pass return tuple(portList)