uart протокол общения мк с пк - есть ли что готовое?

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
просто массив чар что ли?
а завершение строки компилятор сам добавляет?
char FIO[33] = "";
Вот так получите С-шную строку фиксированной длинны 32 символа, изначально заполненную \0. Под нее в памяти, или структуре, сразу будет выделено 33 байта, и при передаче структуры длинна пакета всегда будет известна. То есть можно сразу вычитывать в такую же структуру на приемнике, не боясь что что-то сломается.
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
726
146
ну я в курсе
просто я не знал, добавляет ли компилятор завершение строки сам или нет
если сам добавляет, то норм, так и заюзаю тогда

тогда усложним задачу
что делать, если надо передавать 2-3 разные структуры? :LOL:
 

Kir

★✩✩✩✩✩✩
28 Мар 2020
69
16
ну я в курсе
просто я не знал, добавляет ли компилятор завершение строки сам или нет
если сам добавляет, то норм, так и заюзаю тогда

тогда усложним задачу
что делать, если надо передавать 2-3 разные структуры? :LOL:
Ставь идентификатор структуры в начало.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
@kalobyte, так вам ведь известен порядок следования структур, и их длинна в пакете. В чем сложность то? Лепите друг за дружкой, на том конце рубите по известной длине.
Ну а если разные структуры передаются в разное время, то да - нужен идентификатор пакета.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
Во всей этой истории, меня гложет смутное сомнение на счёт UNICODE в связке с ардуиновскими С-шными строками. Ведь топик стартеру нужны русские буквы в ФИО. Вот как-то не приходилось с этим встречаться. Получается, что в поле 32 байта помещается только 16 русских букв. Чет я торможу. 🤔
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
726
146
Ведь топик стартеру нужны русские буквы в ФИО.
пока не нужны, о вопрос интересный
так вам ведь известен порядок следования структур, и их длинна в пакете.
ну с одной стороны можно ткнуть одну кнопку "запросить пакет 1" и послать 1 байт такой, а на другую кнопку прилепить другой байт и тогда как бы прога будет знать, что ожидать
ну ладно, примерно понял

думал есть уже что-то готовое с обработчиком ошибок и контрольной суммой, где ты только пакеты создаеш и там парсер готовый, который просто выдирает нужные типы данных
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,265
944
58
Марий-Эл
думал есть уже что-то готовое с обработчиком ошибок и контрольной суммой, где ты только пакеты создаеш и там парсер готовый, который просто выдирает нужные типы данных
То же так думал. Но ничего готового не нашёл. Самому пришлось дотумкивать.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
Да. utf-8 занимает 2 байта.
Тогда лучше использовать win1251 а на стороне вывода перекодировать в UNICODE. Потому как это очень расточительно с точки зрения ОЗУ контроллера. Во первых строки становятся в два раза длиннее, во вторых буфер serial придется увеличивать, чтобы одним фреймом таких монстров передавать, он там вроде всего-то 64 байта. Короче, использование UNICODE тянет за собой увеличение расхода памяти где-то раза в два-три.
 
Изменено: