Обновить
-1
Антон Ступеньков@stupenkov

Старший разработчик

6
Подписчики
Отправить сообщение

Это то все понятно, но вы похоже не читаете название статьи "Зачем нужен флаг STARTER_ASSETS_PACKAGES_CHECKED в стартовых ассетах". Смысл статьи добраться до истины для чего нужен этот флаг, а вывод этой статьи о том что у Unity есть заготовка библиотеки для автоматизации установки пакетов. Т.е. если вы создаете .packageunity то зависимости туда не падают а с помощью этой dll можно автоматизировать установку всех зависимостей.

Через анимацию теряется универсальность скрипта, невозможно будет задать угол открытия или задать начальное положение как открытое с помощью флага и т.п. Т.е. для всего этого нужно будет создавать новую анимацию. А так, скрипт универсальный и параметры можно задавать через инспектор.

На приемном конце идет проверка, если пришел байт со «стартовым» битом «1», то считывается следующий байт, там в «стартовом» должен быть «0» и так все оставшиеся байты в пакете (количество байт в пакете фиксировано). Если до конца пакета вдруг встречается опять байт со стартовым битом «1», то все начинается с начала и предыдущие данные считаются ошибочными.
Контрольная сумма была не важна, так как данные пишутся во флэш память, которая расположена на одной плате с микроконтроллером. К UART подключение происходит эпизодически кабелем длиной не более метра для кратковременного анализа передаваемой информации. Здесь критическим фактором выступал именно размер пакета. Если использовать предложенную вами структуру, то соответственно растет объем: 4 байта + 2 байта * 6 + 2 байта на byte stuffing = 18 байт против 14, что на 22,2% больше по объему.

При размере данных до 56 бит включительно (до 7 байт), выгодней использовать PSP1N (экономим 1 байт на пакет), при размере от 57 до 112 бит включительно (до 14 байт), размеры итоговых пакетов будут одинаковы что у PSP что и при использовании byte stuffing, при размере данных от 113 бит ( от 15 байт) и выше выгодней использовать byte stuffing. Пожалуй добавлю этот алгоритм для данных свыше 14 байт.

Здесь главный плюс – это компактность данных и не важно по какому интерфейсу вы работаете с этим протоколом хоть USB, хоть UART, хоть беспроводная сеть или записываете в файл.
Этот «стартовый» бит указывает на начало пакета, а не байта. Протокол Modbus работает по принципу запрос-ответ (что снижает скорость передачи данных), а здесь организована непрерывная потоковая передача данных. Еще в структуре протокола Modbus передается много лишней для нас информации, а тут каждый бит на счету.
Во-первых, там нет возможности задать именно стартовый бит, чтобы в непрерывном потоке байт определить начало пакета. Во-вторых, там на каждую единицу данных идет дополнительный байт, который определяет тип данных, соответственно это сильно увеличивает размер пакета, что критично в системах с ограниченной физической памятью, как в моем примере.

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Разработчик игр
C#
.NET
Entity framework
ASP.NET
Docker
Unity3d
JavaScript
React