#include "key.h" #include "lcd.h" #include "tim.h" #include "ads1220.h" #include "linear.h" #include "24cxx.h" #include "events_init.h" int key_flag = 0; int ct_type = 0; int mid_point = 0; int finish_flag = 0; const char* type_str = "null"; void key_scan() { if(screen_id == 1 && test_status == 1) { __HAL_TIM_SetCounter(&htim1,30000); //编码器初始值10000 point_cnt = 0; memset(point_v,0,1024); memset(point_l,0,1024); test_status = 2; maxv = -999999; maxv_loca = 0; minv = 999999; minv_loca = 0; linearity = 0; point_data.cnt = 0; } if(screen_id == 1 && test_status == 3) { test_status = 0; //确认磁条型号 if(abs(maxv_loca - minv_loca) < 500) { ct_type = 1;//#25磁条 type_str = "#25"; } else if(abs(maxv_loca - minv_loca) < 1100) { ct_type = 2;//#50磁条 type_str = "#50"; } else if(abs(maxv_loca - minv_loca) < 2100) { ct_type = 3;//#110磁条 type_str = "#100"; } else { ct_type = 4;//#210磁条 type_str = "#200"; } //确认有用数据范围 int mid_point_v = 9999; int start_cnt = 0,end_cnt = 0; if(max_point_cnt > min_point_cnt) { start_cnt = min_point_cnt; end_cnt = max_point_cnt; } else { start_cnt = max_point_cnt; end_cnt = min_point_cnt; } for(int i = start_cnt;i < end_cnt;i++) { if(abs(point_data.vol[i]) <= mid_point_v) { mid_point_v = abs(point_data.vol[i]); mid_point = i; } } int start_l = 0,end_l = 0; if(ct_type == 1) { start_l = point_data.loca[mid_point] - 354; end_l = point_data.loca[mid_point] + 354; } else if(ct_type == 2) { start_l = point_data.loca[mid_point] - 708; end_l = point_data.loca[mid_point] + 708; } else if(ct_type == 3) { start_l = point_data.loca[mid_point] - 1559; end_l = point_data.loca[mid_point] + 1559; } else if(ct_type == 4) { start_l = point_data.loca[mid_point] - 2976; end_l = point_data.loca[mid_point] + 2976; } //提取有用数据范围 for(int i = 0;i < point_data.cnt;i++) { if(point_data.loca[i] >= start_l && point_data.loca[i] <= end_l) { point_v[point_cnt] = point_data.vol[i]; point_l[point_cnt] = point_data.loca[i]; point_cnt++; } } //得到线性度 get_linearity(); finish_flag = 1; } }