Я читаю в последовательных данных с помощью Pyserial, чтобы заполнить список из 17 значений (1 байт каждое) с частотой дискретизации 256 Гц.
Байты, которые я в конечном итоге хочу использовать, находятся в списке с 5 по 8. При отсутствии отброшенных байтов первые два значения потока всегда одинаковы («165», «90»). Однако я получаю довольно много пропущенных значений, и значения в моем списке смещаются, поэтому, когда я читаю 5-8-й байты, они не являются правильными значениями.
Я частично боролся с этим, убедившись, что перед захватом требуемого сегмента первые несколько значений проверяются на соответствие тем, чем они должны быть (т.е. если mylist [0] == 165 & ....).
Это грубо, но нормально, поскольку шансы появления этих двух значений рядом друг с другом в списке в другом месте невелики.
Проблема в том, что это означает, что как только байты сдвигаются, я теряю множество значений, пока они в конечном итоге не выровняются.
Мой вопрос: какой код я могу использовать для:
a) Принудительно перестроить список, как только будет обнаружено, что он больше не начинается с 165,90. (Элиф ....).
b) Определите, где '165' и '90' находятся (рядом друг с другом) в списке, и извлеките значения, которые мне нужны, относительно их положения (следующее, но одно, далее).
Заранее спасибо
S_S
Только что заметил из связанных вопросов, что я мог бы использовать
mylist.append(mylist.pop(0))
несколько раз, пока они не окажутся в нужном месте. Есть ли лучший способ, который кто-нибудь может предложить?