Обсуждение протокола собственного производства #14
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
В папке protcol был сделан простейший протокол для передачи цифр и слов. Необходимо понять, достаточный ли функционал модуля
Работоспособность проверена
6bd1021c4e
у вас может быть передано 3 разных числа. Где это отображено? Целесообразнее запаковывать из какой-то структуры и распаковывать в неё же.
number тогда хотя бы float. Да, он 4 байта. Запишите его в формате little endian. Снова встаёт вопрос про какой из трёх чисел речь.
word переводится как слово. У вас же тут строка или буфер. И длину буфера следует вернуть как результат функции.
Не понимаю как правильно записать в uint8_t массив данных. Конвертировать в 4 бита получается, но дальше он просто не записывает. Код прилагаю
for (int i = 0; i < message->len_numbers; i++){
encode_message[count++] = FLAG_NUMBER;
uint8_t *tmp;
tmp = (uint8_t*)(&message->numbers[i]);
for (int z = 0; z < 4; z++){
encode_message[count++] = tmp[z];
}
}
Numbers это массив float, который записан в структуре сообщения.
Также непонятен момент, зачем использовать в принципе uint8_t, если его нельзя кастить к char. Пример ниже
if (encode_message[i] == FLAG_WORD){
int count_word = 0;
i++;
for (int z = 0; z < encode_message[i]; z++){
printf("%d\n", encode_message[i]);
i++;
decode_message->str[count_word++] = encode_message[i];
}
decode_message->len_str = count_word;
}
Программа не выдает результатов. Очень нужна помощь в этих моментах
Разобрался сам во всем
202598b23e
Необходима оценка
Идея хорошая!
вот тут никакого преобразования не надо. Вы исходную строку (массив байт) копируете в буфер (массив байт).
на самом деле тут можно погореть из-за разного эндинга на двух сторонах. Но ладно.
Да, всё просто и хорошо.
Что тут происходит? Сколько будет выделено памяти? Где она будет выделена? Будет ли она выделена?
В структуре сообщения тип char[64]
Я пытаюсь насильно запихнуть в него строку путем следующего кода
Не работает, массив в принципе не хочет декодится в printf(пустота)
Пытаюсь через второй массив, полностью его заполняю, все хорошо, пытаюсь через strcpy, и снова не хочет декодится. Код ниже
Структура message:
int count_word = 0;
Этот код работает в какой среде? Win64? Atmel?
encode_message
кто такой? Что вообще код делает?uint8_t encode_message[]
Билд в clion под винду для тестов работы протокола
Код расшифровывает сообщение, пришедшее в байтах в message для дальнейшего вывода на экран.
В пришедших битах ищет флаг начала слова, по следующему байту узнает его длину, и дальше проходится по длине
Вообще не понятно, что происходит. Раз уж работаете на ПК, то можно посмотреть память в самом удобном виде.
Как мне записать строку в структуру decode_message, которая передается в ссылке?
Извиняюсь за неправильную формулировку, мне нужно наоборот, из полученной строки байтов uint8_t конвертировать в поле str(char[64]) структуры message, структура передается ссылкой