2

我正在使用 STM32 发现板与采用 ASCII 命令的设备进行通信。

HAL_UART_TRANSMIT_IT用来发送数据,效果很好。

我想向设备发送 ASCII 命令 XM3。当我使用虚拟端口程序作为 realterm 时,我只需单击 ascii 并输入波特率、databitc 等,当我输入 XM3 并单击 +CR 时它发送命令并且它工作正常,如果不包括 CR 它不起作用.

当我尝试从我的 MCU 执行此操作时,我使用此代码但它不起作用,任何想法如何通过串行端口在 C 中发送 ASCII 命令?

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 发送到设备。

4

1 回答 1

2

如果您通过Realterm发送命令并选中该+CR选项,Realterm会附加一个回车符,即 ASCII 码13

为了在您的代码中重现此行为,您应该按如下方式定义命令:

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

分别地,如果接收者也期望接收一个Newline,即 ASCII Code 10,你应该定义它如下:

char txD[5]="XM3\r\n";
于 2018-07-24T18:36:19.257 回答