Страницы

Поиск по вопросам

вторник, 18 июня 2019 г.

Вывод массива байтов в терминале COM порта

Здравствуйте,
пишу программу на си. Хочу по uart передать следующую последовательность байтов: "0x1F 0x10 0x00 0x01 0x00 0x01" . Т.к. типа byte в си нет, использую char.
Программа выглядит примерно следующим образом:
char str[6]= {31, 16, 0, 1, 0, 1 };
printf("%s
", str);
Проблема в том что эту последовательность я вывожу на терминал последовательного порта и он выводит только 0x1F 0x10, потому что '0' является символом конца строки, поэтому он думает что строка заканчивается и обрезает остальную часть.
Подскажите пожалуйста можно ли вывести на терминал всю строку с нулем вместе, т.е. чтобы ноль не являлся концом строки ?
Использую терминал termite.
Спасибо всем за ответы.
Проблема решена с использованием не массива символов типа char а массива с типом uint8_t (аналог byte в си), которая находиться в библиотеке stdint.h . Код программы:
#include
uint8_t str[6] = {0x1F, 0x10, 0x00, 0x01, 0x00, 0x01}; fwrite(str,sizeof(str),1,stdout);
Спасибо большое, gbg, за помощь.


Ответ

Первое. Тип байтов в C есть и называется uint8_t. Живет в stdint.h
Второе. Используйте fwrite(str,sizeof(str),1,stdout);

Комментариев нет:

Отправить комментарий