Одесса 1. размер буфера можно указывать больше, если неизвестно количество принимаемых байт
2. первый байт который посылает прибор в ответ должен лежать на первом месте, независимо от размера буфера
Где у вас 1-й байт ? почему не на месте ? сделали так именно вы и никто другой.
в стопятьсотый раз повторяю, вы не принимаете данные от прибора, который всегда посылает данные с некоторым промежутком времени (типа аля маяк, хочу мигаю, хочу не мигаю), вы принимаете данные ТОЛЬКО ПОСЛЕ выполнения запроса данных у прибора и никак иначе в данном случае.
у вас режим запрос - ответ. оставьте в программе один единственный запрос или увеличьте время между запросами до 5 минут и посмотрите снифером порта что происходит. и только потом начинайте думать что не так у вас в программе.
з.ы. спецам по STM должно быть фиолетово, что именно вы опрашиваете через порт если у вас проблема в программе.
Одесса, я выше написал, возможно у вас проблема с заполнением буфера, неправильная его организация и х.з. что еще.
Если бы ответ прибора был один и просто распихивался бы хаотично в буфер байтами это одно, но вот то, что у вас в буфер попадает точная последовательность, наводит на странные мысли.
Например если один ответ был бы обрезан, но никак не заполнен точными значениями обрезанной части.
Причем тип протокола тут абсолютно тоже не при чем.