添加赋码设备注码命令,实现ew检测时注码
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user