STM32以ASCII格式发送命令
Transmit commands in ASCII format STM32
我正在使用 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 发送到设备。
如果您通过 Realterm 发送命令并选中 +CR
选项,Realterm 会附加一个 Carriage Return,即ASCII码13
.
为了在您的代码中重现此行为,您应该按如下方式定义命令:
char txD[4]="XM3\r";
分别如果接收方还希望收到一个Newline,即ASCII码10
,则应定义如下:
char txD[5]="XM3\r\n";
我正在使用 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 发送到设备。
如果您通过 Realterm 发送命令并选中 +CR
选项,Realterm 会附加一个 Carriage Return,即ASCII码13
.
为了在您的代码中重现此行为,您应该按如下方式定义命令:
char txD[4]="XM3\r";
分别如果接收方还希望收到一个Newline,即ASCII码10
,则应定义如下:
char txD[5]="XM3\r\n";