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) - - - - - - - - - - - - - - - - -