V2.09 使用任务插槽设置电阻校准值成功

This commit is contained in:
ranchuan
2023-12-20 18:27:37 +08:00
parent ddf40324f7
commit d709a522ea
12 changed files with 127 additions and 18 deletions

View File

@@ -299,5 +299,7 @@
2023.12.19
添加赋码设备注码命令实现ew检测时注码
添加文件 tran_for_coder.c
2023.12.20
V2.09 使用任务插槽设置电阻校准值成功

View File

@@ -214,7 +214,7 @@ array_def *elec_bootinfo(void)
board_st.resistor_diff=sys_param()->resistor_diff;
//board_st.hard_v=rt_tick_get()/1000;
board_st.hard_v=HARD_VERSION;
board_st.soft_v=(int)(str_atof(SOFT_VERSION)*100);
board_st.soft_v=(int)(str_atof(SOFT_VERSION)*100+0.5);
array_def *r=arr_creat();
arr_append(r,0);
arr_appends(r,&board_st,sizeof(BoartCheck_st));
@@ -629,3 +629,33 @@ array_def *elec_code(array_def *uid_psw)
// 执行任务插槽
array_def *elec_check_slot(void)
{
self_def *s=&g_self;
s->task_par=0;
s->chip_type=0;
uint8_t taskid=0;
uint8_t res=0;
s->task_index=0;
array_def *r=arr_creat();
res=checker_runcfg.power_prapare_exe;
memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
checker_runcfg.power_prapare_exe=res;
checker_runcfg.param_count=1;
checker_runcfg.params[0]=1;
CheckerExt_Slot();
elec_judge_def *e=malloc(sizeof(elec_judge_def));
elec_judge(e,s->task_num,checker_runcfg.Task_Result,
checker_runcfg.Task_Excute,
(uint8_t *)checker_runcfg.Test_Rtv,&res,0);
free(e);
arr_append(r,res);
return arr_temp(r);
}

View File

@@ -38,7 +38,7 @@ array_def *elec_check_with_scheme(array_def *uid_psw);
array_def *elec_code(array_def *uid_psw);
array_def *elec_check_slot(void);
int elec_check_load_task_param(uint8_t task_index);

View File

@@ -33,9 +33,12 @@ typedef struct{
static task_slot_def *g_task_slot;
void task_slot_delete(void)
{
task_slot_def *t=app_variable("task_slot",0,0);
//task_slot_def *t=app_variable("task_slot",0,0);
task_slot_def *t=g_task_slot;
if(t){
task_node *n=t->head;
task_node *old=0;
@@ -46,18 +49,21 @@ void task_slot_delete(void)
}
free(t);
}
g_task_slot=0;
}
// 初始化
void *task_slot_init(void)
{
task_slot_def *t=app_variable("task_slot",0,0);
//task_slot_def *t=app_variable("task_slot",0,0);
task_slot_def *t=g_task_slot;
if(t==0){
t=calloc(1,sizeof(task_slot_def));
app_variable("task_slot",t,0);
// app_variable("task_slot",t,0);
}
t->current=t->head;
g_task_slot=t;
return t;
}
@@ -73,7 +79,7 @@ int task_slot_add_item(void *context,task_def *item)
task_node **n=&t->head;
task_node *tail;
tail=calloc(1,sizeof(task_node));
memcpy(tail,item,sizeof(task_node));
memcpy(&tail->task,item,sizeof(task_def));
while(*n){
n=&(*n)->next;
}

View File

@@ -208,8 +208,19 @@ void CheckerExt_Slot(void)
/*rc{
写电阻校准值
par0:电阻校准值
ret:无
}*/
void CheckerExt_SetCbv(void)
{
int cbv=checker_runcfg.params[0];
int self_index=checker_runcfg.task_info.runindex;
elec_write_resistor_cbv(cbv);
Checker_MaskResult(0,self_index);
}
@@ -220,5 +231,6 @@ CheckerTask exttaskArray[CHECKER_EXTID_COUNT]={
CheckerExt_Repeat,
CheckerExt_SetUID,
CheckerExt_Slot,
CheckerExt_SetCbv,
};

View File

@@ -23,7 +23,7 @@ void CheckerExt_SetUID(void);
void CheckerExt_Slot(void);
void CheckerExt_SetCbv(void);

View File

@@ -966,6 +966,31 @@ void EW_Test_VerifyUID(void)
// 读mtp
void EW_Test_ReadMTP(void)
{
uint8_t uc_rtv=0;
uint8_t addr=checker_runcfg.params[0];
uint8_t len=checker_runcfg.params[1];
delay_ms(50);
uc_rtv|EW_ReadMTP(checker_runcfg.netid,addr,EW_RunBuf,len);
Checker_SetRtv((uint16_t *)EW_RunBuf,checker_runcfg.rtv_count);
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
}
// 写mtp
void EW_Test_WriteMTP(void)
{
uint8_t uc_rtv=0;
uint8_t addr=checker_runcfg.params[0];
uint8_t len=checker_runcfg.params[1];
delay_ms(50);
memcpy(EW_RunBuf,&checker_runcfg.params[1],len);
uc_rtv |= EW_WriteMTP(checker_runcfg.netid,addr,EW_RunBuf,len);
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
}
@@ -986,6 +1011,10 @@ void EW_Empty(void)
CheckerTask ewtaskArray[CHECKER_MAXID_COUNT] ={
Checker_PowerPrapare, //0 电源准备
Checker_WaitDelay, //1 延时等待
@@ -1022,6 +1051,9 @@ EW_Test_WriteUID, //31 写入三码数据
EW_Test_VerifyUID, //32 验证三码数据
CheckerExt_SetUID, //33 配置三码数据到小板
CheckerExt_Slot, //34 任务插槽
EW_Test_ReadMTP, //35 读取mtp
EW_Test_WriteMTP, //36 写入mtp
CheckerExt_SetCbv, //37 设置电阻校准值
(void*)0 //数组结束
};

View File

@@ -4,6 +4,7 @@
#include "base/utility.h"
#include "hardware/power.h"
#include "JQChecker.h"
#include "CheckerExt.h"
/*
@brief 统计模块的上电充能,具有电压设置功能,采集档位 R10_0p1mA_1p6mA_UC
@@ -1264,6 +1265,7 @@ CheckerExt_CalcErr ,//39 计算异常
CheckerExt_Repeat ,//40 重新执行任务
CheckerExt_SetUID ,//41 设置uid数据到小板
CheckerExt_Slot ,//42 任务插槽
CheckerExt_SetCbv ,//43 设置电阻校准值
(void*)0 //数组结束
};

View File

@@ -6,8 +6,8 @@
#define BUILD_DATE "2023-12-19 15:39:10"
#define SOFT_VERSION "2.08"
#define BUILD_DATE "2023-12-20 17:27:12"
#define SOFT_VERSION "2.09"

View File

@@ -7,7 +7,7 @@ import mycopy
# 定义软件版本号
SOFT_VERION = "2.08"
SOFT_VERION = "2.09"

View File

@@ -177,10 +177,12 @@ rt_hw_interrupt_thread_switch PROC
ENDP
IMPORT rt_hw_hard_fault_exception
IMPORT bk_reboot_hard_err
EXPORT HardFault_Handler
HardFault_Handler PROC
; get current context
BL bk_reboot_hard_err
B .
TST lr, #0x04 ; if(!EXC_RETURN[2])
ITE EQ

View File

@@ -26,7 +26,13 @@
[4...n]=数据
数据域格式
[0]=小板地址,[1]=数据长度,[2...n]=数据
[0]=检测模式0,只检测,返回原始检测结果;模式1,检测并添加任务插槽,只返回异常代码和任务插槽数据;
模式2,检测并执行任务插槽,返回原始检测数据和任务插槽数据;
模式3,只执行任务插槽,返回异常代码和插槽数据
[1...n]小板数据
小板数据格式
[0]=小板地址(0x1f时为通用数据,每个小板都可以使用)[1]=数据长度,[2...n]=数据
单个任务数据格式
[0]=插槽序号,[1]=任务id[2]=参数个数(u16)
@@ -80,7 +86,7 @@ static void slave_get_self(slave_def *s)
while(off<len){
addr=arr_get(s->data,off);
slave_len=arr_get(s->data,off+1);
if(addr==elec_local_addr()){
if((addr==elec_local_addr())||(addr==0x1f)){
d=arr_data(s->data)+off+2;
arr_appends(expat,d,slave_len);
break;
@@ -141,6 +147,7 @@ static int run_task_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_
array_def *r=0;
array_def *check=0;
uint8_t *d;
uint8_t ret_mode=0;
pack_all=arr_get(data,0)|(arr_get(data,1)<<8);
pack_curr=arr_get(data,2);
pack_size=arr_get(data,3);
@@ -160,13 +167,29 @@ static int run_task_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_
}
else if(arr_length(s->data)==pack_all){
// 接收完成后执行命令
r=arr_creat();
ret_mode=arr_get(s->data,0);
arr_remove(s->data,0,1);
slave_get_self(s);
slave_adds(s);
check=elec_check_with_scheme(0);
arr_append(r,arr_get(check,0));
slave_creat_retdata(s,r);
emit tran_reply_signal(u->p,arr_temp(r));
if(ret_mode!=3){
check=elec_check_with_scheme(0);
}else{
check=elec_check_slot();
}
if(ret_mode==0){
// 模式0只返回检测数据
emit tran_reply_signal(u->p,arr_temp(check));
}else if((ret_mode==1)||(ret_mode==3)){
// 模式1返回异常代码和任务插槽数据
r=arr_creat();
arr_append(r,arr_get(check,0));
slave_creat_retdata(s,r);
emit tran_reply_signal(u->p,arr_temp(r));
}else if(ret_mode==2){
// 模式2返回检测数据和任务插槽数据
slave_creat_retdata(s,check);
emit tran_reply_signal(u->p,arr_temp(check));
}
}
return 0;
}