添加赋码设备注码命令,实现ew检测时注码

This commit is contained in:
ranchuan
2023-12-19 18:21:28 +08:00
parent 58c902a94f
commit ddf40324f7
14 changed files with 269 additions and 384 deletions

View File

@@ -22,8 +22,8 @@
/*
执行任务命令格式
[0]=总数,[1]=当前包数(1开始)
[2...n]=数据
[0...1]=总字节数,[2]=当前包数(0开始),[3]=当前包字节数
[4...n]=数据
数据域格式
[0]=小板地址,[1]=数据长度,[2...n]=数据
@@ -47,8 +47,6 @@ typedef struct{
ucport_def u;
rt_timer_t timer;
array_def *data;
int pack_all;
int pack_curr;
}slave_def;
@@ -139,36 +137,36 @@ static array_def *slave_creat_retdata(slave_def *s,array_def *r)
static int run_task_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
{
slave_def *s=(slave_def *)u;
int pack_curr=0,pack_all=0;
int pack_curr=0,pack_all=0,pack_size=0;
array_def *r=0;
array_def *check=0;
uint8_t *d;
pack_all=arr_get(data,0);
pack_curr=arr_get(data,1);
s->pack_all=pack_all;
if(pack_curr==1){
pack_all=arr_get(data,0)|(arr_get(data,1)<<8);
pack_curr=arr_get(data,2);
pack_size=arr_get(data,3);
if(pack_curr==0){
// 第一个数据包重置接收
CHECK_DO(s->data,arr_delete);
s->data=arr_creat();
}
if(pack_curr==s->pack_curr+1){
s->pack_curr++;
d=arr_data(data)+2;
arr_appends(s->data,d,arr_length(data)-2);
if(s->pack_curr<s->pack_all){
r=arr_creat();
arr_append(r,0);
emit tran_reply_signal(u->p,arr_temp(r));
}else{
// 接收完成后执行命令
r=arr_creat();
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(arr_length(s->data)<pack_all){
d=arr_data(data)+4;
arr_appends(s->data,d,arr_length(data)-4);
}
if(arr_length(s->data)<pack_all){
r=arr_creat();
arr_append(r,0);
emit tran_reply_signal(u->p,arr_temp(r));
}
else if(arr_length(s->data)==pack_all){
// 接收完成后执行命令
r=arr_creat();
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));
}
return 0;
}