serial read raspberry puertos puerto proyectos leer guardar graficar datos con comunicacion adquisicion python serial-port

read - proyectos con python y arduino



Python: lee datos del puerto serie línea por línea en una lista cuando esté disponible (1)

Me propongo escribir un código que estará indefinidamente escuchando y leyendo desde un puerto en serie que tendrá esta salida producida cada pocos segundos

salida de puerto serie:

aaaa::abcd:0:0:0 //printf("%d/n",data[0]); 2387 //printf("%d/n",data[1]); 14 -9 244 -44 108

Quiero que los datos se anexen en una lista como esta, supuestamente python

[abcd::abcd:0:0:0, 2387, 14, -9, 244, -44, 108]

Probé este código entre muchos otros, pero nada funcionó, sigo sin obtener ninguna salida EDITAR - el siguiente código me da esta salida

''''''[[''abcd::'', ''abcd::'', ''abcd::'', ''abcd::'', ''abcd::'']] #or [[''abcd::abcd:0:0:c9/n'', ''2406/n'', ''14/n'', ''-7/n'']] # and so on, different output for each iteration'''''' #[[''aaaa::c30c:0:0:c9/n'', ''2462/n'', ''11/n'', ''-9/n'', ''242/n'', ''-45/n'', ''106/n'']] apparently it worked only once. ser = serial.Serial(''/dev/ttyUSB1'',115200, timeout=10) print ser.name while True: data = [] data.append(ser.readlines()) print data # further processing # send the data somewhere else etc print data ser.close()


readline seguirá leyendo datos hasta leer un terminador (nueva línea). por favor intente: read .

ACTUALIZADO:

use picocom -b 115200 /dev/ttyUSB0 o masilla (modelo en serie) para detectar el puerto y la velocidad en baudios es correcta. Tengo dos puertos diferentes en sus dos preguntas. Si abre el puerto de error, read() seguirá esperando hasta leer un byte. Me gusta esto:

import serial # windows 7 ser = serial.Serial() ser.port = ''COM1'' ser.open() ser.read() # COM1 has no data, read keep waiting until read one byte.

si escribe este código en la consola, la consola no tendrá un resultado como este:

>>> import serial >>> ser = serial.Serial() >>> ser.port = ''COM1'' >>> ser.open() >>> ser.read() _

necesitamos agregar tiempo de espera para leer para solucionarlo.
puedes probar esto:

import serial import time z1baudrate = 115200 z1port = ''/dev/ttyUSB0'' # set the correct port before run it z1serial = serial.Serial(port=z1port, baudrate=z1baudrate) z1serial.timeout = 2 # set read timeout # print z1serial # debug serial. print z1serial.is_open # True for opened if z1serial.is_open: while True: size = z1serial.inWaiting() if size: data = z1serial.read(size) print data else: print ''no data'' time.sleep(1) else: print ''z1serial not open'' # z1serial.close() # close z1serial if z1serial is open.