diff --git a/checher_slave.uvoptx b/checher_slave.uvoptx
index 7b090d8..73e0b3e 100644
--- a/checher_slave.uvoptx
+++ b/checher_slave.uvoptx
@@ -299,7 +299,7 @@
1
0
- 1
+ 0
18
@@ -382,14 +382,14 @@
0
1
- g_tempptr
+ checker_runcfg
1
- 1
- 0x20001800
+ 10
+ 0x20006924
0
@@ -459,16 +459,6 @@
-
-
- System Viewer\TIM4
- 35905
-
-
- System Viewer\TIM5
- 35904
-
-
1
1
@@ -533,7 +523,7 @@
1
0
- 0
+ 1
18
@@ -616,14 +606,24 @@
0
1
- g_tempptr
+ runcfg
+
+
+ 1
+ 1
+ EW_RunBuf
+
+
+ 2
+ 1
+ state
1
- 1
- 0x20003af4
+ 0
+ 0x20007958
0
@@ -1565,7 +1565,7 @@
rt_thread
- 1
+ 0
0
0
0
@@ -2017,6 +2017,30 @@
0
0
+
+ 10
+ 104
+ 1
+ 0
+ 0
+ 0
+ .\source\task\tran_for_broadcast.c
+ tran_for_broadcast.c
+ 0
+ 0
+
+
+ 10
+ 105
+ 1
+ 0
+ 0
+ 0
+ .\source\task\tran_for_coder.c
+ tran_for_coder.c
+ 0
+ 0
+
@@ -2027,7 +2051,7 @@
0
11
- 104
+ 106
1
0
0
@@ -2047,7 +2071,7 @@
0
12
- 105
+ 107
1
0
0
@@ -2059,7 +2083,7 @@
12
- 106
+ 108
1
0
0
@@ -2071,7 +2095,7 @@
12
- 107
+ 109
1
0
0
@@ -2083,7 +2107,7 @@
12
- 108
+ 110
1
0
0
@@ -2095,7 +2119,7 @@
12
- 109
+ 111
1
0
0
@@ -2107,7 +2131,7 @@
12
- 110
+ 112
1
0
0
@@ -2127,7 +2151,7 @@
0
13
- 111
+ 113
5
0
0
@@ -2147,7 +2171,7 @@
0
14
- 112
+ 114
5
0
0
@@ -2159,7 +2183,7 @@
14
- 113
+ 115
5
0
0
diff --git a/checher_slave.uvprojx b/checher_slave.uvprojx
index 4329994..abf8932 100644
--- a/checher_slave.uvprojx
+++ b/checher_slave.uvprojx
@@ -2444,6 +2444,16 @@
1
.\source\task\tran_for_slave.c
+
+ tran_for_broadcast.c
+ 1
+ .\source\task\tran_for_broadcast.c
+
+
+ tran_for_coder.c
+ 1
+ .\source\task\tran_for_coder.c
+
@@ -4051,6 +4061,16 @@
1
.\source\task\tran_for_slave.c
+
+ tran_for_broadcast.c
+ 1
+ .\source\task\tran_for_broadcast.c
+
+
+ tran_for_coder.c
+ 1
+ .\source\task\tran_for_coder.c
+
@@ -5316,6 +5336,16 @@
1
.\source\task\tran_for_slave.c
+
+ tran_for_broadcast.c
+ 1
+ .\source\task\tran_for_broadcast.c
+
+
+ tran_for_coder.c
+ 1
+ .\source\task\tran_for_coder.c
+
diff --git a/source/ReadMe.txt b/source/ReadMe.txt
index 03ba2bc..0983f0a 100644
--- a/source/ReadMe.txt
+++ b/source/ReadMe.txt
@@ -296,6 +296,8 @@
2023.12.18
添加写三码验三码任务,实现0x20任务,完成任务插槽机制
添加文件 tran_for_broadcast.c
-
+2023.12.19
+ 添加赋码设备注码命令,实现ew检测时注码
+ 添加文件 tran_for_coder.c
diff --git a/source/coder/coder_lib.c b/source/coder/coder_lib.c
index ad34ff3..74069d9 100644
--- a/source/coder/coder_lib.c
+++ b/source/coder/coder_lib.c
@@ -69,8 +69,12 @@ static int coder_calc_year(const char *year,const char shell_year,char *uid_year
}
// year是实时数据,鉴于12月31生产的雷管,year可能不同
// 此时year-1来保证与uid码上的相同
- if(year[3]!=shell_year)
- y--;
+ for(int i=0;i<10;i++){
+ if((y%10)!=(shell_year-'0'))
+ y--;
+ else
+ break;
+ }
uid_year[0]=y%100/10+'0';
uid_year[1]=y%10+'0';
if(uid_year[1]==shell_year)
diff --git a/source/elec_det/elec_det.c b/source/elec_det/elec_det.c
index f5f1430..fbb9be9 100644
--- a/source/elec_det/elec_det.c
+++ b/source/elec_det/elec_det.c
@@ -555,7 +555,7 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
array_def *r=arr_creat();
if(s->scheme_inited==0){
DBG_WARN("scheme not init.");
- arr_append(r,1);
+ arr_append(r,20);
return arr_temp(r);
}
res=checker_runcfg.power_prapare_exe;
@@ -568,7 +568,7 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
if(s->chip_type>=LENGTH(s->tasks_fun_table)){
DBG_WARN("unknown chip type.");
- arr_append(r,2);
+ arr_append(r,20);
return arr_temp(r);
}
elec_check_result_clear();
@@ -597,9 +597,9 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
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,0,0);
+ (uint8_t *)checker_runcfg.Test_Rtv,&res,0);
free(e);
- arr_append(r,0);
+ arr_append(r,res);
arr_appends(r,checker_runcfg.Task_Result,8);
arr_appends(r,checker_runcfg.Task_Excute,8);
arr_appends(r,checker_runcfg.Test_Rtv,checker_runcfg.rtv_index*2);
diff --git a/source/elec_det/interface/CheckerExt.c b/source/elec_det/interface/CheckerExt.c
index 7baf2f6..db1ddb0 100644
--- a/source/elec_det/interface/CheckerExt.c
+++ b/source/elec_det/interface/CheckerExt.c
@@ -218,5 +218,7 @@ void CheckerExt_Slot(void)
CheckerTask exttaskArray[CHECKER_EXTID_COUNT]={
CheckerExt_CalcErr,
CheckerExt_Repeat,
+ CheckerExt_SetUID,
+ CheckerExt_Slot,
};
diff --git a/source/elec_det/interface/EWChecker.c b/source/elec_det/interface/EWChecker.c
index fdbe4bd..2604251 100644
--- a/source/elec_det/interface/EWChecker.c
+++ b/source/elec_det/interface/EWChecker.c
@@ -157,7 +157,7 @@ void EW_Test_ReadUID(void)
}
}
}
- memcpy(checker_runcfg.writeuid,EW_RunBuf,checker_runcfg.uid_len);
+ memcpy(checker_runcfg.writeuid,EW_RunBuf,checker_runcfg.params[0]);
ul_temp = Power_ConvCur(EW_FreeBack_MaxCur,EWDriver_Sample_R);
ul_temp = (ul_temp + 500)/1000;
@@ -857,6 +857,11 @@ void EW_Test_VerifyUID(void)
{
uint8_t uc_rtv = 0;
System_State_un state;
+ if(JQXT_Test_IsNeedBind() == 0)
+ {
+ Checker_MaskResult(0,checker_runcfg.task_info.runindex);
+ return;
+ }
//读UID MTP
memset(EW_RunBuf,0,sizeof(EW_RunBuf));
EW_ReadMTP(checker_runcfg.netid,0x00,EW_RunBuf,checker_runcfg.uid_len+1);
@@ -874,6 +879,7 @@ void EW_Test_VerifyUID(void)
return;
}
memset(EW_RunBuf,0,sizeof(EW_RunBuf));
+ delay_ms(50);
EW_ReadMTP(checker_runcfg.netid,0x20,EW_RunBuf,checker_runcfg.uid_len+1);
if(EW_RunBuf[checker_runcfg.uid_len] != CheckCRC_8(EW_RunBuf,checker_runcfg.uid_len))
{
@@ -891,6 +897,7 @@ void EW_Test_VerifyUID(void)
//读PWD MTP
memset(EW_RunBuf,0,sizeof(EW_RunBuf));
+ delay_ms(50);
EW_ReadMTP(checker_runcfg.netid,0x04,EW_RunBuf,checker_runcfg.pwd_len+1);
if(EW_RunBuf[checker_runcfg.pwd_len] != CheckCRC_8(EW_RunBuf,checker_runcfg.pwd_len))
{
@@ -906,6 +913,7 @@ void EW_Test_VerifyUID(void)
return;
}
memset(EW_RunBuf,0,sizeof(EW_RunBuf));
+ delay_ms(50);
EW_ReadMTP(checker_runcfg.netid,0x24,EW_RunBuf,checker_runcfg.pwd_len+1);
if(EW_RunBuf[checker_runcfg.pwd_len] != CheckCRC_8(EW_RunBuf,checker_runcfg.pwd_len))
{
@@ -923,6 +931,7 @@ void EW_Test_VerifyUID(void)
//读UID
memset(EW_RunBuf,0,sizeof(EW_RunBuf));
+ delay_ms(50);
uc_rtv = EW_ReadUID(checker_runcfg.netid,EW_RunBuf,checker_runcfg.uid_len);
if(0 != memcmp(EW_RunBuf,checker_runcfg.writeuid,checker_runcfg.uid_len))
{
diff --git a/source/elec_det/interface/JQChecker.c b/source/elec_det/interface/JQChecker.c
index 46b9970..a722c3c 100644
--- a/source/elec_det/interface/JQChecker.c
+++ b/source/elec_det/interface/JQChecker.c
@@ -1260,6 +1260,10 @@ JQ_Test_WriteFacBuff ,//35 写缓存数据
JQ_Test_VerifyFacBuff ,//36 验证缓存数据
JQ_Test_VerifyDelay ,//37 读取延时值和otp数据相比
JQ_Test_Toggle ,//38 切换总线极性
+CheckerExt_CalcErr ,//39 计算异常
+CheckerExt_Repeat ,//40 重新执行任务
+CheckerExt_SetUID ,//41 设置uid数据到小板
+CheckerExt_Slot ,//42 任务插槽
(void*)0 //数组结束
};
diff --git a/source/main/compiler_info.h b/source/main/compiler_info.h
index 8d4fccf..e54b0aa 100644
--- a/source/main/compiler_info.h
+++ b/source/main/compiler_info.h
@@ -6,7 +6,7 @@
-#define BUILD_DATE "2023-12-18 18:02:16"
+#define BUILD_DATE "2023-12-19 15:39:10"
#define SOFT_VERSION "2.08"
diff --git a/source/task/mod_signals.c b/source/task/mod_signals.c
index f8bbca4..93a4cb8 100644
--- a/source/task/mod_signals.c
+++ b/source/task/mod_signals.c
@@ -5,7 +5,7 @@
#include "prot_uc.h"
#include "transmit.h"
#include "tran_for_broadcast.h"
-#include "tran_for_coder2ch.h"
+#include "tran_for_coder.h"
#include "tran_for_slave.h"
diff --git a/source/task/tran_for_broadcast.c b/source/task/tran_for_broadcast.c
index 7e6d804..8f72c1a 100644
--- a/source/task/tran_for_broadcast.c
+++ b/source/task/tran_for_broadcast.c
@@ -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_currpack_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)data,d,arr_length(data)-4);
+ }
+ if(arr_length(s->data)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;
}
diff --git a/source/task/tran_for_coder.c b/source/task/tran_for_coder.c
new file mode 100644
index 0000000..6ac2eba
--- /dev/null
+++ b/source/task/tran_for_coder.c
@@ -0,0 +1,128 @@
+#include "tran_for_coder.h"
+#include "debug.h"
+#include "mymisc.h"
+#include "mystdlib.h"
+#include "board.h"
+#include "dev_flash.h"
+#include "prot_uc.h"
+#include "coder_lib.h"
+#include "PSDGenerate.h"
+#include "mystring.h"
+#include "coder_judge.h"
+#include "JQ_UIDGenerate.h"
+#include "transmit.h"
+#include "elec_judge.h"
+#include "elec_task_slot.h"
+#include "elec_det.h"
+
+
+
+typedef struct{
+ ucport_def u;
+ char uid_code[20];
+ uint8_t save_code[12];
+ uint8_t psw[10];
+ char psw_ascii[10];
+}slave_def;
+
+
+
+
+static slave_def *slave_creat(void)
+{
+ slave_def *u=calloc(1,sizeof(slave_def));
+ return u;
+}
+
+
+
+static void slave_del(ucport_def *u)
+{
+ slave_def *s=(slave_def *)u;
+ free(u);
+}
+
+
+
+// 赋码仪 注码使用xt算法
+static int code_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
+{
+ slave_def *s=(slave_def *)u;
+ uint8_t *d=arr_data(data);
+ if(d[0]!=1){
+ // 只支持1个通道
+ return 1;
+ }
+ if(check_shell_code((const char *)&d[6])==0){
+ // 管壳码无效
+ return 2;
+ }
+ if(coder_shell_to_uid((const char *)&d[1],(const char *)&d[6],s->uid_code)!=0){
+ // uid校验失败
+ return 3;
+ }
+ {
+ array_def *r=arr_creat();
+ arr_append(r,1);
+ arr_append(r,0);
+ emit tran_reply_signal(u->p,arr_temp(r));
+ }
+
+ coder_uid_to_save(s->uid_code,s->save_code);
+ GetPasswordByUidCode((const uint8_t *)s->uid_code,s->psw);
+ sprintf(s->psw_ascii,"%02X%02X%02X%02X",
+ s->psw[0],s->psw[1],s->psw[2],s->psw[3]);
+ array_def *uid_psw=arr_creat();
+ arr_append(uid_psw,8);
+ arr_append(uid_psw,4);
+ arr_append(uid_psw,1);
+ arr_appends(uid_psw,s->save_code,8);
+ arr_appends(uid_psw,s->psw,4);
+ array_def *r=elec_check_with_scheme(uid_psw);
+ arr_delete(uid_psw);
+ if(r){
+ array_def *ret=arr_creat();
+ arr_append(ret,1);
+ arr_append(ret,1);
+ arr_append(ret,arr_get(r,0));
+ arr_appends(ret,&d[6],13);
+ arr_appends(ret,s->uid_code,16);
+ arr_appends(ret,s->psw_ascii,8);
+ emit tran_send_signal(u->p,0x82,arr_temp(ret));
+ }
+ return 0;
+}
+static ucport_def *code(tran_def *t, uint8_t cmd,array_def *data)
+{
+ int ret=0;
+ slave_def *u=slave_creat();
+ u->u.p=t;
+ u->u.del=slave_del;
+ u->u.dolater=code_dolater;
+ u->u.dolater(&u->u,cmd,data,"ok");
+ return (ucport_def *)u;
+}
+
+
+
+
+
+
+transmit_export(ym_checker,0x02,code)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/task/tran_for_coder2ch.h b/source/task/tran_for_coder.h
similarity index 75%
rename from source/task/tran_for_coder2ch.h
rename to source/task/tran_for_coder.h
index a35c49d..0eb2226 100644
--- a/source/task/tran_for_coder2ch.h
+++ b/source/task/tran_for_coder.h
@@ -1,5 +1,5 @@
-#ifndef tran_for_coder2ch_h__
-#define tran_for_coder2ch_h__
+#ifndef tran_for_coder_h__
+#define tran_for_coder_h__
diff --git a/source/task/tran_for_coder2ch.c b/source/task/tran_for_coder2ch.c
deleted file mode 100644
index fc23aac..0000000
--- a/source/task/tran_for_coder2ch.c
+++ /dev/null
@@ -1,316 +0,0 @@
-#include "tran_for_coder2ch.h"
-#include "debug.h"
-#include "mymisc.h"
-#include "mystdlib.h"
-#include "board.h"
-#include "dev_flash.h"
-#include "prot_uc.h"
-#include "coder_lib.h"
-#include "JQ_PSDGenerate.h"
-#include "mystring.h"
-#include "coder_judge.h"
-#include "JQ_UIDGenerate.h"
-#include "transmit.h"
-
-
-
-
-
-
-
-
-// JQ模块在检测时注码
-
-
-typedef struct{
- int step;// 检测注码顺序
-}self_def;
-
-static self_def g_self;
-
-
-// 从机地址偏移
-static inline int slave_addr_off(void)
-{
- if(sys_param()->slave_addr_start)
- return 1;
- else
- return 0;
-}
-
-
-
-typedef struct{
- ucport_def u;
- uint8_t addrs_num;
- char year[10];
- struct{
- char shell_code[20];
- char uid_code[20];
- char password[10];
- uint8_t uid_pw_hex[15];
- }item[10];
- uint8_t ack[390];
- uint8_t ack_num;
- void (*doexert)(ucport_def *u);
-}write_uid_def;
-
-
-
-// 上报注码结果
-static void write_uid_upmit(write_uid_def *w)
-{
- int ack=0;
- array_def *a=arr_creat();
- arr_append(a,w->addrs_num);
- // arr_appends(a,w->ack,390);
- for(int i=0;iaddrs_num;i++)
- {
- uint8_t *d=&w->ack[i*38];
- ack|=d[1];
- if(sys_param()->coder_ret_mode)
- {
- // 完整模式
- arr_appends(a,d,38);
- }
- else{
- // 精简模式
- arr_appends(a,d,2);
- d+=2+13+15;
- arr_appends(a,d,8);
- }
- }
- // emit tran_send_signal(w->u.p,0x82,arr_temp(a));
- // 发送赋码结束信号
- emit code2_end_signal(w->u.p,ack,arr_temp(a));
-
- g_self.step=0;
- // 把命令字改为0x82用于接收主机应答
- tran_set_busy(w->u.p,0);
- w->u.cmd=0x82;
-}
-
-
-
-// 填充注码结果
-static void write_uid_fillret(write_uid_def *w,int addr,int ack)
-{
- addr-=1;
- uint8_t *d=&w->ack[(addr)*38];
- w->ack_num++;
- d[0]=addr+slave_addr_off();
- //d[1]=((ack==0xff)||(ack==0x00))?ack:(ack+0xc0);
- d[1]=ack;
- memcpy(&d[2],w->item[addr].shell_code,13);
- memcpy(&d[2+13],w->item[addr].uid_code,15);
- memcpy(&d[2+13+15],w->item[addr].password,8);
- if(w->ack_num>=w->addrs_num)
- {
- write_uid_upmit(w);
- }
-}
-
-
-
-
-
-// 判断检测数据错误码
-// 返回 errcode,1=param/0=execute,taskindex,paramindex
-static uint32_t in_range_err(const uint8_t *src_data,const uint8_t *errbit)
-{
- const scheme_def *s=check_scheme();
- const scheme_task_def *t;
- int temp;
- int index=0;
- uint32_t ret=0;
- for(int i=0;itask_num;i++)
- {
- t=&s->task[i];
- if((errbit[i/8]&(1<<(i%8)))!=0)
- {
- ret=(t->err&0xff)|(i<<16);
- return ret;
- }
- for(int j=0;jitem_num;j++)
- {
- temp=src_data[index*2]|(src_data[index*2+1]<<8);
- if(temp>=t->range[j].min&&temp<=t->range[j].max){
- // 正常
- }else{
- ret=(t->range[j].err&0xff)|(1<<8)|(i<<16)|(j<<24);
- return ret;
- }
- index++;
- }
- }
- return ret;
-}
-
-
-
-
-// 注码完成
-static void write_uid_end(ucport_def *u,void *src,void *data,int ack,char *err_str)
-{
- write_uid_def *w=(write_uid_def *)u;
- uint8_t addr=0;
- if(addr<=0||addr>w->addrs_num){
- DBG_WARN("addr err:%d",addr);
- return;
- }
- uint32_t errcode=0;
- if(ack==0)
- {
- if(data)
- {
- errcode=in_range_err(arr_data(data)+8+8,arr_data(data));
- ack=coder_judge_jq(arr_data(data));
- if(ack==0){
- ack=errcode&0xff;
- }
- }else{
- ack=0xd0;
- DBG_WARN("check return data is none.");
- }
- }else{
- ack=0xd0;// 通信超时
- }
- DBG_LOG("addr=%d,errcode=%d",addr,ack);
- write_uid_fillret(w,addr,ack);
-}
-
-
-
-
-
-static void write_uid_return_ok(void *p)
-{
- write_uid_def *u=p;
- array_def *a=arr_creat();
- arr_append(a,u->addrs_num);
- for(int i=0;iaddrs_num;i++)
- {
- arr_append(a,i+slave_addr_off());
- arr_append(a,0);
- arr_append_num(a,37,'0');
- }
- emit tran_send_signal(u->u.p,0x82,arr_temp(a));
- tran_set_busy(u->u.p,0);
- g_self.step=0;
-}
-
-
-static void write_del(ucport_def *u)
-{
- free(u);
-}
-
-
-static int write_uid_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
-{
- DBG_LOG("recv write_uid end signal.");
- tran_set_busy(u->p,0);
- return 0;
-}
-
-
-
-static ucport_def *write_uid(tran_def *t, uint8_t cmd,array_def *data)
-{
- if(arr_length(data)<14+4+1){
- DBG_WARN("cmd format err.");
- DBG_WARN("data=%s",str_temp(arr_string(data)));
- return 0;
- }
- int ret=0;
- write_uid_def *u=calloc(1,sizeof(write_uid_def));
- u->u.p=t;
- u->u.del=write_del;
- u->u.doend=write_uid_end;
- u->u.dolater=write_uid_dolater;
- u->addrs_num=arr_get(data,0);
- memcpy(u->year,arr_data(data)+1,4);
- DBG_LOG("coder, year=%s",u->year);
-
- // 数据固定140字节,如果不检测某通道,则该通道填充占位符
- uint8_t *d_off=arr_data(data)+4+1;
- uint8_t *d_;
- tran_set_busy(t,1);
- for(int i=0;iaddrs_num;i++)
- {
- memcpy(u->item[i].shell_code,d_off+i*14+1,13);
- DBG_LOG("slave:%d, shell=%s",i,u->item[i].shell_code);
- // 生成uid码
- ret|=coder_shell_to_uid_jq(u->year,u->item[i].shell_code,u->item[i].uid_code);
- DBG_LOG("slave:%d, uid=%s",i,u->item[i].uid_code);
- // 生成存储码
- //ret|=coder_uid_to_save(u->item[i].uid_code,u->item[i].uid_pw_hex);
- UidCode_YM2JQ((PST_JQUID_TYPEDEF)u->item[i].uid_pw_hex,(PST_YMUID_TYPEDEF)u->item[i].uid_code);
- // 生成密码
- JQ_GetPasswordByUidCode((uint8_t *)u->item[i].uid_code,&u->item[i].uid_pw_hex[8]);
- d_=u->item[i].uid_pw_hex;
- DBG_LOG("slave:%d, uid_pw=%02X %02X %02X %02X %02X %02X %02X %02X "
- "%02X %02X %02X %02X ",i,d_[0],d_[1],d_[2],d_[3],d_[4],d_[5],d_[6],d_[7],
- d_[8],d_[9],d_[10],d_[11]);
- // 生成密码字符串
- sprintf(u->item[i].password,"%02X%02X%02X%02X",u->item[i].uid_pw_hex[8],
- u->item[i].uid_pw_hex[9],u->item[i].uid_pw_hex[10],u->item[i].uid_pw_hex[11]);
- // 默认失败
- u->ack[i*38+0]=i+slave_addr_off();
- u->ack[i*38+1]=1;
- if(1){
- if(check_shell_code(u->item[i].shell_code)){
- // 开始注码
- //port_start(mcu,code2_creat(8,4,u->item[i].uid_pw_hex));
- }else{
- // 管壳码无效,不注码,此时默认已ack
- // 管壳码无效不视为失败
- ret=0;
- write_uid_fillret(u,i+1,0xff);
- }
- }
-
- }
-
-
-
- array_def *a=arr_creat();
- arr_append(a,u->addrs_num);
-// if(g_self.step==1){
- if(ret==0)
- arr_append(a,TRAN_ERR_NONE);
- else
- arr_append(a,TRAN_ERR_PARAM);
-// }else{
-// arr_append(a,TRAN_ERR_STEP);
-// }
- emit tran_reply_signal(u->u.p,arr_temp(a));
-
- // test:稍后返回成功
- //later_execute(write_uid_return_ok,u,500);
-
- // 发送注码开始信号
- emit code2_start_signal(u->u.p);
-
- return (ucport_def *)u;
-}
-
-
-transmit_export(ym_checker,0x02,write_uid)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-