вообщем нужно шестнадцатиричный код преобразовать в текст условно получить из 0x0F два символа 0x30 0x46 т.е. ‘0’ ‘F’ uint8_t crc3 , uint8_t buf[132]={0}, //№1 crc3 = 0xF0, sprintf ( (char *) buf ,%2X,, crc3 ), uart_write( 5, buf, 4), //№2 crc3 = 0x00, sprintf ( (char *) buf ,%2X,, crc3 ), uart_write( 5, buf,4), //№3 crc3 = 0x0F, sprintf ( (char *) buf ,%2X,, crc3 ), uart_write( 5, buf, 4), //№4 crc3 = 0xFF, sprintf ( (char *) buf ,%2X,, crc3 ), uart_write( 5, buf, 4), в №1 всё получается как надо 0x46 0x30 0x2C (запятая ) в №2 получается 0x20 0x30 0x2C (запятая ), а хотелось бы чтобы получалось 0x30 0x30 0x2C в №3 получается 0x20 0x46 0x2C (запятая ), а хотелось бы чтобы получалось 0x30 0x46 0x2C в №4 всё получается как надо 0x46 0x46 0x2C (запятая ) вообщем что применить вместо %2X
cheblin
20 июл 2023, 15:10
лучше скажи что делаешь в целом. напоминает очередной, 338-ой текстовый протокол. если это так, то совет. пересылай прям как есть, в бинарном виде. UART с этим справится на отличненько.
rjur
20 июл 2023, 15:36
RR2021 писал(а):
вообщем что применить вместо %2X
%02X,
RR2021
20 июл 2023, 15:46
cheblin писал(а):
лучше скажи что делаешь в целом. напоминает очередной, 338-ой текстовый протокол. если это так, то совет. пересылай прям как есть, в бинарном виде. UART с этим справится на отличненько.
считаю контрольную сумму в uint8_t и надо передать его как два ASCII символа т.е. каждый полубайт символом например 0x0F два символа 0x30 0x46 т.е. ‘0’ ‘F’ зы совет rjur помог
Последний раз редактировалось RR2021 20 июл 2023, 15:48, всего редактировалось 1 раз.
RR2021
20 июл 2023, 15:47
rjur писал(а):
RR2021 писал(а):
вообщем что применить вместо %2X
%02X,
спасибо! то что нужно
Viewing 0 reply threads
Вы должны войти в систему, чтобы ответить в этой теме.