Crossworks字符串转换 我们使用CuxWorksIDE在C++中运行FRIERTOS。在这里,我们使用内置的STM32_HAL函数通过串行com发送数据。我们希望通过串行com将传感器数据发送到外部设备
以下是exmaple格式:Crossworks字符串转换 我们使用CuxWorksIDE在C++中运行FRIERTOS。在这里,我们使用内置的STM32_HAL函数通过串行com发送数据。我们希望通过串行com将传感器数据发送到外部设备,c++,stm32,freertos,C++,Stm32,Freertos,以下是exmaple格式: float humiditySensorValues[2]; uint8_t buffer[100] = {"Temperature = ? \r\n"} ; HAL_UART_Transmit(&husart3, buffer, sizeof(buffer), HAL_MAX_DELAY); 在上面的代码中,我们希望替换“?->湿度传感器值[0]”,并发送数据 其中,湿度传感器值[0]包含更新的温度数据值,单位为度 任何解决
float humiditySensorValues[2];
uint8_t buffer[100] = {"Temperature = ? \r\n"} ;
HAL_UART_Transmit(&husart3, buffer, sizeof(buffer), HAL_MAX_DELAY);
在上面的代码中,我们希望替换“?->湿度传感器值[0]”,并发送数据
其中,湿度传感器值[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
,因为它不会检查缓冲区溢出。您是否正在查找snprintf(缓冲区,100,“温度=%f\r\n”,湿度传感器值[0])代码>你提到C++,但是问题是标记C,而 SNPrTNF在C++中是不合适的。我建议先学习C,然后开始UC编程。基本知识是不可能编写程序的。如果你使用C++,那么你的问题C++就不加标记。C字符串处理在两种语言之间是完全不同的。通过使用sFoString或STD::HORE堆分配和所有其他的PC GoO,C++打开了一个选项,使某些东西甚至比SaveTf(这是一个成就)更高效。因为在M4以下的Cortex M上使用浮点而不使用FPU是骗人的-它将链接到可怕的软件浮点库。此外,由于ARM标准库已禁用浮点打印F支持,请添加如何打印浮点。@P_uJSupportsWomenipland,可以启用它,请参阅文章。