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

@@ -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;
}