Если фрейм нашли - это как он не существует ? Вы их сами придумываете или из порта берете ?
А ответственность - на разработчике алгоритма, который учитывает протокол.
Если фрейм нашли - это как он не существует ? Вы их сами придумываете или из порта берете ?
А ответственность - на разработчике алгоритма, который учитывает протокол.
Он может находицо внутри другого фрейма например в ответе другого слейва, вы же не знаете где в потоке данных из порта конец одного пакета и начало другого. регистры одного из слейвов например могут совпасть адрес команда црц итд. да это маловероятно но возможно. и отличить в потоке регистры это другого слейва или запрос мастера на запись (например) никак нельзя. сумбурно мож и непонятно но как то так.
В бибке для мастера такого быть не может потому что в линии никаких данных нет пакеты для мастера появляюцо после его запроса и он их принимает сначала и целиком. на один запрос - один ответ. и различать где начало пакета не надо. он и так сначала и он один. дальше да црц и прочие дела.
(нормальный) слейв принимает все пакеты и начинает их "разбирать" только после того как пакет закончицо то есть возникнет пауза в передаче. после этого он уже проверяет црц и прочее. только после паузы. ели есть возможность каким то образом различать пакеты по паузе - да, работать будет. но как это сделать?... ) так же возможно написать слейв рту для какой то конфигурации где известно заранее что будут спрашивать итд. но это не будет универсальной бибкой.
в modbus ascii есть спецсимволы начала и конца пакетов поэтому слейв реализуем уже на существующей бибке.