Estoy leyendo datos en serie usando Pyserial, para completar una lista de 17 valores (1 byte cada uno) a una velocidad de muestreo de 256Hz.Reordenar lista en Python para asegurar que comienza con valores de verificación
Los bytes que quiero usar en última instancia son los 5 a 8 en la lista. Si no se eliminan los bytes, los primeros dos valores de la secuencia son siempre los mismos ('165', '90'). Sin embargo, estoy obteniendo bastantes valores descartados, y mis valores de lista están cambiando, así que cuando leo los bytes 5º a 8º, no son los valores correctos.
Combatí parcialmente esto asegurándome de que antes de capturar el segement deseado, los primeros valores se comparan con los que deberían (es decir, si mylist [0] == 165 & ....).
Esto es tosco, pero está bien, ya que las posibilidades de que estos dos valores aparezcan uno junto al otro en la lista en otro lugar son pequeños. El problema es que esto significa que tan pronto como los bytes cambien, perderé una carga de valores, hasta que finalmente se realinee.
Mi pregunta es: ¿qué código puedo usar para cualquiera:
a) Fuerza de la lista para realinear una vez que se ha detectado que ya no empieza con 165,90. (elif ....).
b) Detecte dónde '165' & '90' están (uno junto al otro) en la lista y extraiga los valores que quiero en relación con su posición (siguiente pero uno, en adelante).
Gracias de antemano
S_S
acabo de dar cuenta de las Qs relacionados que podría utilizar
mylist.append(mylist.pop(0))
varias veces hasta que estén en el lugar correcto. ¿Hay alguna manera mejor que alguien pueda sugerir?
Realmente necesita abordar la razón por la que está bajando tantos bytes. ¿Qué sucede si deja caer el byte después (165,90)? Obtendrá los bytes 6º-9º que serán basura. ¿Estás usando un cable serial de buena calidad? ¿Cuánto tiempo es? –
¡El problema del problema reside en el hecho de que es un adaptador RS232-USB, también mide 1 pie de largo! Aclamaciones. –