【问题标题】:Transmit commands in ASCII format STM32以 ASCII 格式发送命令 STM32
【发布时间】:2018-12-31 20:59:24
【问题描述】:

我正在使用 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 发送到设备。

【问题讨论】:

  • char txD[3]="XM3\n"; 您的设备可能正在等待 \n 和 HAL_UART_Transmit_IT(&huart1, (uint8_t *)txD ,strlen(txD));
  • char txD[] = "XM3\n"; 当然

标签: format ascii stm32 transmitfile


【解决方案1】:

如果您通过Realterm 发送命令并检查+CR 选项,Realterm 会附加一个Carriage Return,即ASCII 码13

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

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

如果接收方也期望收到Newline,即ASCII码10,则应分别定义如下:

char txD[5]="XM3\r\n";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2017-01-19
    • 2019-09-27
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多