Crossworks 字符串转换
Crossworks String Conversion
我们在 C++ 中使用 Crossworks IDE 到 运行 freeRTOS。在这里,我们使用 STM32_HAL 函数中内置的“HAL_UART_Transmit”通过串口 com 发送数据。我们想通过串行 com 将传感器数据发送到外部设备。
这是一个示例格式:
float humiditySensorValues[2];
uint8_t buffer[100] = {"Temperature = ? \r\n"} ;
HAL_UART_Transmit(&husart3, buffer, sizeof(buffer), HAL_MAX_DELAY);
在上面的代码中,我们要替换 "? -> humiditySensorValues[0]" 并发送数据。
其中 humiditySensorValues[0] 包含以度为单位的更新温度数据值。
如有任何解决上述问题的建议,我们将不胜感激。
使用snprintf
:
char buffer[100] = {0};
int len = snprintf(buffer, sizeof(buffer), "Temperature = %f \r\n", (double)humiditySensorValues[0]);
HAL_UART_Transmit(&husart3, (uint8_t*)buffer, len, HAL_MAX_DELAY);
不要使用 sprintf
,因为它不会检查缓冲区溢出。
我们在 C++ 中使用 Crossworks IDE 到 运行 freeRTOS。在这里,我们使用 STM32_HAL 函数中内置的“HAL_UART_Transmit”通过串口 com 发送数据。我们想通过串行 com 将传感器数据发送到外部设备。
这是一个示例格式:
float humiditySensorValues[2];
uint8_t buffer[100] = {"Temperature = ? \r\n"} ;
HAL_UART_Transmit(&husart3, buffer, sizeof(buffer), HAL_MAX_DELAY);
在上面的代码中,我们要替换 "? -> humiditySensorValues[0]" 并发送数据。
其中 humiditySensorValues[0] 包含以度为单位的更新温度数据值。
如有任何解决上述问题的建议,我们将不胜感激。
使用snprintf
:
char buffer[100] = {0};
int len = snprintf(buffer, sizeof(buffer), "Temperature = %f \r\n", (double)humiditySensorValues[0]);
HAL_UART_Transmit(&husart3, (uint8_t*)buffer, len, HAL_MAX_DELAY);
不要使用 sprintf
,因为它不会检查缓冲区溢出。