自动检测指令0x44不读取流水号
解决新赋码指令回复指令不对的问题 解决tcp不上报心跳的问题
This commit is contained in:
@@ -71,7 +71,7 @@ static const task_def g_jq_task_table[]={
|
||||
{"读取芯片代码",6,5,0,1},
|
||||
{"OTP检测",7,5,3,0},
|
||||
{"工厂测试检测",8,5,0,0},
|
||||
{"读取状态",9,5,1,0},
|
||||
{"读取状态",9,5,1,1},
|
||||
{"写工厂信息",10,5,2,0},
|
||||
{"充能统计",11,5,5,4},
|
||||
{"充电电压检测",12,5,2,1},
|
||||
@@ -169,11 +169,12 @@ const task_def *coder_find_task(const char *str)
|
||||
|
||||
|
||||
// 返回芯片类型
|
||||
char coder_chip_type()
|
||||
char coder_chip_type(uint8_t states=0xff)
|
||||
{
|
||||
int chip=elec_extract_chip(check_plan()->get_plan_id());
|
||||
const char table[]="JXW";
|
||||
if(chip>=0&&chip<=2){
|
||||
const char table[]="JXWQ";
|
||||
if(states&&((states&0x04)==0)) chip=3;
|
||||
if(chip>=0&&chip<=3){
|
||||
return table[chip];
|
||||
}
|
||||
return 0;
|
||||
@@ -207,6 +208,35 @@ int coder_add_task(myarray &d,const char *name,int slot_index,int task_index,uin
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 添加一个任务失败不报错,返回0添加成功
|
||||
int coder_add_task_noerr(myarray &d,const char *name,int slot_index,int task_index,uint16_t params[10])
|
||||
{
|
||||
const task_def *task=nullptr;
|
||||
task=coder_find_task(name);
|
||||
if(task==nullptr){
|
||||
qWarning("can not find task with %s.",name);
|
||||
return -1;
|
||||
}else{
|
||||
// qDebug("task_name:%s,task_id=%d,par_count=%d,ret_count=%d,err=%d",name,task->task_id,
|
||||
// task->par_count,task->ret_count,task->errcode);
|
||||
}
|
||||
char *par=(char *)params;
|
||||
d.append(uint8_t(slot_index));
|
||||
d.append(uint8_t(task->task_id));
|
||||
d.append(uint8_t(task->par_count));
|
||||
d.append(uint8_t(task->ret_count));
|
||||
d.append(uint8_t(0));
|
||||
d.append(uint8_t(task_index));
|
||||
if(task->par_count*2>0){
|
||||
d.append(par,task->par_count*2);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 包装为一个小板的数据,返回0成功
|
||||
// 包装前需要先添加任务
|
||||
int coder_slave_pack(myarray &d,int addr)
|
||||
@@ -238,7 +268,7 @@ myarray coder_slave_find_ret_data(myarray data,int task_index,int size)
|
||||
}else{
|
||||
int len=size-r.size();
|
||||
r.append(len,uint8_t(0));
|
||||
qWarning("can not find data,append by 0.");
|
||||
qWarning("can not find data,task_index=%d.",task_index);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
@@ -307,6 +337,8 @@ myarray cmd_coder_check2::cmd_pc_to_slave(myarray data)
|
||||
if(chip==0){
|
||||
uint16_t params[10]={20,4};
|
||||
coder_add_task(d,"读OTP",1,1,params);
|
||||
params[0]=0;
|
||||
coder_add_task(d,"读取状态",1,2,params);
|
||||
}else if(chip==2){
|
||||
uint16_t params[10]={9,4};
|
||||
coder_add_task(d,"读MTP",1,1,params);
|
||||
@@ -324,19 +356,20 @@ myarray cmd_coder_check2::ret_slave_to_pc(QList<myarray> data)
|
||||
r.append(uint8_t(addrs&0xff));
|
||||
r.append(uint8_t((addrs>>8)&0xff));
|
||||
r.append(uint8_t((addrs>>16)&0xff));
|
||||
r.append(uint8_t(coder_chip_type()));
|
||||
for (int i=0;i<data.size();i++)
|
||||
{
|
||||
myarray &sdata=data[i];
|
||||
int addr=sdata[0]-1+syscfg()->slave_addr_start;
|
||||
sdata.remove(0,1);
|
||||
myarray sret=coder_slave_find_ret_data(sdata.mid(1),1,4);
|
||||
myarray state=coder_slave_find_ret_data(sdata.mid(1),2,1);
|
||||
r.append(uint8_t(addr));
|
||||
if(sdata.size()==0){
|
||||
r.append(uint8_t(0xd0));
|
||||
r.append(8,uint8_t(0));
|
||||
r.append(9,uint8_t(0));
|
||||
}else{
|
||||
r.append(sdata[0]);
|
||||
r.append(uint8_t(coder_chip_type(state[0])));
|
||||
r.append(sret);
|
||||
r.append(4,uint8_t(0));
|
||||
}
|
||||
@@ -495,6 +528,8 @@ myarray cmd_coder_code2::cmd_pc_to_slave(myarray data)
|
||||
if(chip_mode==0){
|
||||
uint16_t params[10]={20,4};
|
||||
coder_add_task(d,"读OTP",2,4,params);
|
||||
params[0]=0;
|
||||
coder_add_task(d,"读取状态",2,5,params);
|
||||
}else if(chip_mode==2){
|
||||
uint16_t params[10]={9,4};
|
||||
coder_add_task(d,"读MTP",2,4,params);
|
||||
@@ -505,7 +540,7 @@ myarray cmd_coder_code2::cmd_pc_to_slave(myarray data)
|
||||
// 检测模式1,返回异常代码和任务插槽数据
|
||||
ret.insert(0,uint8_t(1));
|
||||
qDebug("tran pc data to slave end");
|
||||
qDebug()<<"slave_data:"<<ret.toHex(' ');
|
||||
// qDebug()<<"slave_data:"<<ret.toHex(' ');
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -516,7 +551,6 @@ myarray cmd_coder_code2::ret_slave_to_pc(QList<myarray> data)
|
||||
r.append(uint8_t(addrs&0xff));
|
||||
r.append(uint8_t((addrs>>8)&0xff));
|
||||
r.append(uint8_t((addrs>>16)&0xff));
|
||||
r.append(uint8_t(coder_chip_type()));
|
||||
// coder_return_mode 1是完整模式,协议0是完整模式
|
||||
if(syscfg()->coder_return_mode){
|
||||
r.append(uint8_t(0));
|
||||
@@ -554,6 +588,8 @@ myarray cmd_coder_code2::ret_slave_to_pc(QList<myarray> data)
|
||||
r.append(err);
|
||||
// 添加工厂信息
|
||||
sret=coder_slave_find_ret_data(sdata,4,4);
|
||||
myarray state=coder_slave_find_ret_data(sdata,5,1);
|
||||
r.append(uint8_t(coder_chip_type(state[0])));
|
||||
r.append(sret);
|
||||
// 完整模式
|
||||
if(syscfg()->coder_return_mode){
|
||||
@@ -765,14 +801,37 @@ protpc_export(0x30, get_checker_check2);
|
||||
|
||||
|
||||
|
||||
int cmd_checker_check3::key_press(){
|
||||
return 1;
|
||||
|
||||
|
||||
// 0x49 检测不读取流水号
|
||||
myarray cmd_checker_check3::cmd_pc_to_slave(myarray data)
|
||||
{
|
||||
myarray ret;
|
||||
const task_def *table=nullptr;
|
||||
// 检测模式0,返回原始检测结果
|
||||
ret.insert(0,uint8_t(0));
|
||||
return ret;
|
||||
}
|
||||
|
||||
static HandlePc *get_checker_check3(){
|
||||
return new cmd_checker_check3();
|
||||
}
|
||||
protpc_export(0x44, get_checker_check3);
|
||||
protpc_export(0x49, get_checker_check3);
|
||||
|
||||
|
||||
|
||||
|
||||
// 0x44 自动检测不读取流水号
|
||||
int cmd_checker_check4::key_press(){
|
||||
return 1;
|
||||
}
|
||||
|
||||
static HandlePc *get_checker_check4(){
|
||||
return new cmd_checker_check4();
|
||||
}
|
||||
protpc_export(0x44, get_checker_check4);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user