2019-07-21 03:25发布
edmund1234 发表于 2019-4-3 22:58 CO2.ppm = (uint8_t)CO2.data_buf[(i+4)%12]*256+CO2.data_buf[(i+5)%12]; 这不应该是uint8_t, 你的CO2.p ...
lvb 发表于 2019-4-3 21:00 42 4D 应该是攀藤的二氧化碳传感器吧,问题就出在你的串口接收中断没有加协议
DongInker 发表于 2019-4-4 09:02 if(CO2.counter > 11) CO2.counter = 0; 这个写法有可能导致数据偏移,比如上电串口接收到几个乱码; ...
1599064432 发表于 2019-4-4 08:31 我定义的ppm是uint8_t类型的,这里是强制转换类型
最多设置5个标签!
我定义的ppm是uint8_t类型的,这里是强制转换类型
对的,DS-CO2-20,
void CO2_unpack(void)
{
for (int i = 0; i < 12; i++)
{
if (CO2.data_buf == 0x42 && CO2.data_buf[(i+1)%12] == 0x4D)
{
CO2.ppm = (uint8_t)CO2.data_buf[(i+4)%12]*256+CO2.data_buf[(i+5)%12];
}
co2_data_anl();
}
}
这个就是协议啊,buf0 和1 是 42和4d ,co2的数据是第五位*256加上第六位
那该怎么该呢? 求帮帮忙
你把1个uint8_t类型的变量, 其值x256 再加 另一uint8_t的变量的值, 放回一个uint8类型的变量去
随便拿两个数试试, 0x12 * 256 + 0x23 , 这答案uint8_t有可能放得下?
这是什么算法? 有可能不错?
一周热门 更多>