diff --git a/applications/main.c b/applications/main.c index 5258aa9..fd7c4e1 100644 --- a/applications/main.c +++ b/applications/main.c @@ -189,7 +189,7 @@ uint16_t Get_Stable_Reading(uint8_t cnt, uint32_t timeout_ms) } last = current; - rt_thread_mdelay(200); + rt_thread_mdelay(300); } return 0; // 超时 @@ -243,7 +243,7 @@ int APP_Calibration_Handle(void) if (i == 10) { gas_calibration_voltage = (uint16_t)(gas_calibration_voltage / 10); - + calibration_buf[0] = gas_calibration_voltage & 0xFF; // 低字节 calibration_buf[1] = (gas_calibration_voltage >> 8) & 0xFF; // 高字节 LOG_D("calibration_buf[0] = %X calibration_buf[1] = %X", calibration_buf[0], calibration_buf[1]); @@ -262,7 +262,7 @@ int APP_Calibration_Handle(void) return -1; } #else - gas_calibration_voltage = Get_Stable_Reading(5, 10000);//10s内连续5次稳定,则认为其标定浓度稳定,进行标定 + gas_calibration_voltage = Get_Stable_Reading(10, 10000);//10s内连续10次稳定,则认为其标定浓度稳定,进行标定 if(gas_calibration_voltage == 0) { LOG_D("标定超时,标定错误"); @@ -285,7 +285,7 @@ int APP_Calibration_Handle(void) #endif - + } int main(void) diff --git a/bsp/src/bsp_ml307.c b/bsp/src/bsp_ml307.c index aff6023..2a8a53b 100644 --- a/bsp/src/bsp_ml307.c +++ b/bsp/src/bsp_ml307.c @@ -302,8 +302,38 @@ int BSP_Ml307_Init (struct Ml307_Ops *ops, rt_uint8_t version) return RT_EOK; } +uint8_t bcd_to_decimal(uint8_t bcd) +{ + uint8_t high = (bcd >> 4) * 10; + uint8_t low = bcd & 0x0F; + return high + low; +} + +uint8_t decimal_to_bcd(uint8_t decimal) +{ + uint8_t high = (decimal / 10) & 0x0F; + uint8_t low = (decimal % 10) & 0x0F; + return (high << 4) | low; +} + +int test(uint8_t a) +{ + uint8_t b; + LOG_D("in = 0x%02X, %d", a, a); + b = a; + b = bcd_to_decimal(b); + LOG_D("in = 0x%02X, %d", b, b); + b = decimal_to_bcd(b); + LOG_D("in = 0x%02X, %d", b, b); + return b; +} +MSH_CMD_EXPORT(test, "test"); + + int _Update_Valve_Data (struct Ml307_Ops *ops) { + uint8_t valtage = 0; + ops->body->valve_num = Flash_Get_Valve_Num(); if (ops->body->valve_num == 0) // 确保至少有一个阀门数据体 { @@ -315,6 +345,8 @@ int _Update_Valve_Data (struct Ml307_Ops *ops) LOG_D ("valve_num: %d", ops->body->valve_num); rt_memcpy (&ops->body->valve_data[0], &valve[0], sizeof (struct valve_t)); // rt_memset(&valve[0].valve_connct_status, 0, (sizeof(struct valve_t) - 7)); // 清空阀门包数据,等待下次更新,如果没更新说明断开了 + valtage = ops->body->valve_data[0].valve_voltage; //将十六进制转为十进制 + ops->body->valve_data[0].valve_voltage = (valtage >> 4) * 16 + (valtage & 0x0F); } return RT_EOK; }