Sto leggendo in dati seriali usando Pyserial, per popolare una lista di 17 valori (1 byte ciascuno) ad una frequenza di campionamento di 256Hz.Riordina la lista in Python per assicurarti che inizi con i valori di controllo
I byte che alla fine voglio utilizzare sono il 5 ° all'8 ° nell'elenco. Se non vengono rilasciati byte, i primi due valori dello stream sono sempre gli stessi ('165', '90'). Tuttavia, sto ottenendo alcuni valori scartati e i miei valori di lista si stanno spostando, quindi quando leggo il 5 °-ottavo byte, non sono i valori corretti.
Ho parzialmente contrastato questo assicurando che prima che venga catturato il segmento desiderato, i primi valori vengono controllati rispetto a quello che dovrebbero essere (cioè se mylist [0] == 165 & ....).
Questo è grezzo ma ok poiché le probabilità che questi due valori compaiano l'una accanto all'altra nella lista altrove sono ridotte. Il problema è che questo significa non appena i byte si spostano, sto perdendo un carico di valori, fino a quando non si riallinea.
La mia domanda è: che cosa codice posso usare per uno:
a) forza la lista di riallineare una volta che è stato rilevato che non è più inizia con 165,90. (Elif ....).
b) Rileva dove '165' & '90' sono (uno accanto all'altro) nella lista ed estraggono i valori che voglio in relazione alla loro posizione (successiva ma una, in avanti).
Grazie in anticipo
S_S
appena notato dai relativi Qs che potrei usare
mylist.append(mylist.pop(0))
più volte fino a quando sono nel posto giusto. C'è un modo migliore che chiunque può suggerire?
È davvero necessario affrontare il motivo per cui si stanno perdendo così tanti byte. Cosa succede se si rilascia il byte dopo (165,90)? Otterrete il sesto nono byte che sarà spazzatura. Stai usando un cavo seriale di buona qualità? Quanto tempo è? –
Il problema è dovuto al fatto che si tratta di un adattatore RS232-USB, è anche lungo solo 1 metro! Saluti. –