Передача команд в формате ASCII STM32

Я использую плату обнаружения STM32 для связи с устройством, которое принимает команды ASCII.

я использую HAL_UART_TRANSMIT_IT для отправки данных, это прекрасно работает.

Я хочу отправить ASCII команду XM3 на устройство. Когда я использую программы виртуальных портов в качестве realterm, я просто нажимаю на ascii и помещаю скорость передачи данных, databitc и т. Д., И когда я набираю XM3 и нажимаю +CR, это отправляет команду, и она работает нормально, если CR не включен, это делает работу,

Когда я пытаюсь сделать это из моего MCU, я использую этот код, и он не работает, есть идеи, как отправлять команды ASCII в C через последовательный порт?

char txD[3]="XM3";
__HAL_UART_ENABLE_IT(&huart1, UART_IT_TC);
HAL_UART_Transmit_IT(&huart1, (uint8_t *)txD ,3);

Когда я отправляю это в realterm, он показывает XM3, но когда я отправляю это на устройство, ничего не происходит.

Мне нужно знать, как отправить XM3 и CR на устройство.

1 ответ

Решение

Если вы отправите команду через Realterm и проверьте +CR опция, Realterm действительно добавляет возврат каретки, то есть код ASCII 13,

Чтобы воспроизвести это поведение в вашем коде, вы должны определить команду следующим образом:

char txD[4]="XM3\r";

Соответственно, если получатель также ожидает получения новой строки, то есть кода ASCII 10Вы должны определить это следующим образом:

char txD[5]="XM3\r\n";
Другие вопросы по тегам