Передача команд в формате 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";