版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
前提介绍
最近项目进行调试最后阶段,在读取数据时,与上位机联机调试,发现读取的第一包数据有异常的概率,
通过抓包打断点的方式,分析获取的数据源,因为只有第一次调取读取函数有异常,所以对第一次读取的数据进行判断,如果小于正常值,则进入断点,成功抓取数据;如果获得第一次数据正常,则不满足异常条件,直接重启,进行反复抓包测试;
代码示例
bool olt_vib_temp_point_get(rz_olt_vib_t *t, float *Vol)
{
static bool is_first = true;
uint8_t i;
uint16_t tempVoltage[CHANNEL_VOLTAGE_NUM];
prz_cali_coef_init_t pcalic_coef = rz_cali_coef_init_get();
memset(tempVoltage, 0, sizeof(uint16_t)*CHANNEL_VOLTAGE_NUM);
if(true != i2c_read_channel_voltage(tempVoltage, 2, NULL))
{
rt_kprintf("i2c_read_channel_voltage fail \r\n");
return false;
}
for(i = 0; i < CHANNEL_VOLTAGE_NUM; i++)
{
Vol[i] = tempVoltage[i]*4.096/65536*(pcalic_coef->vib_cali_coef.temp_voltage_k[i]) + (pcalic_coef->vib_cali_coef.temp_voltage_b[i]);
printf("tempVoltage CH[%d]= %d TEMP_CH[%d]=%05.3f \r\n",i+1, tempVoltage[i], i+1, Vol[i]);
}
#if 1
if(true == is_first)
{
is_first = false;
if( Vol[0] < 1.0 && Vol[1] < 1.0 && Vol[2] < 1.0 )
{
printf("tempVoltage < 1.1V ");
}
else
{
olt_quit_online_test(t);
rt_thread_delay(500);
NVIC_SystemReset();
}
}
#endif
return true;
}