int temperature_humidity_device_control(protocol_package_t *pk) //void func_1() { int i = 0; // for(i = 0; i < 4; ++i){ uint8_t temperature = 1 ; uint8_t humidity = 1; uint8_t aTXbuf[32] ; printf("TEM_HUM_device\n"); if(pk->function == 0x16 && pk->data[0] == 0x0){ // while(1){ for(i = 0; i < 4; ++i){ printf("TEM_HUM_SUCCESS\n"); DHT11_Read_Data(&temperature , &humidity); sprintf((char*)aTXbuf,"%d , %d %% \r\n" ,temperature ,humidity); HAL_UART_Transmit(&huart1, aTXbuf, strlen((const char*)aTXbuf), 200); HAL_Delay(2000); } pk->len = 0x4; pk->data[0] = 0x35; pk->data[1] = temperature; pk->data[2] = humidity; }else{ printf("TEM_HUM_ERROR\n"); pk->data[0] = 0x36; } //} return 0; }改错
时间: 2024-03-17 09:47:44 浏览: 62
CAD模型 Sensirion_Humidity_Sensors_SHT3x-STEP-file-综合文档
这段代码有一些问题:
1. 在函数开头的注释中出现了一个未定义的函数名 "func_1()",如果不需要这个函数,建议将这个注释删除。
2. 变量 i 在 for 循环中被定义,但是在循环外也被定义了一次,这样会导致编译错误。建议将 for 循环中的 i 声明放到循环外。
3. 在函数中有一个 while(1) 的注释,但是没有相应的代码实现,如果不需要这个死循环,建议将这个注释删除。
4. 在 DHT11_Read_Data 函数中读取的温度和湿度值没有进行错误检查,建议在函数调用之后对返回值进行检查,如果返回错误,可以设置一个默认值或者进行其他的错误处理。
修改后的代码如下所示:
```
int temperature_humidity_device_control(protocol_package_t *pk) {
uint8_t temperature = 0;
uint8_t humidity = 0;
uint8_t aTXbuf[32];
printf("TEM_HUM_device\n");
if (pk->function == 0x16 && pk->data[0] == 0x0) {
for (int i = 0; i < 4; ++i) {
printf("TEM_HUM_SUCCESS\n");
if (DHT11_Read_Data(&temperature, &humidity) != SUCCESS) {
temperature = 0;
humidity = 0;
}
sprintf((char*)aTXbuf, "%d , %d %% \r\n", temperature, humidity);
HAL_UART_Transmit(&huart1, aTXbuf, strlen((const char*)aTXbuf), 200);
HAL_Delay(2000);
}
pk->len = 0x4;
pk->data[0] = 0x35;
pk->data[1] = temperature;
pk->data[2] = humidity;
} else {
printf("TEM_HUM_ERROR\n");
pk->data[0] = 0x36;
}
return 0;
}
```
阅读全文