自动检测指令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);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -251,12 +251,14 @@ public:
|
||||
}
|
||||
// pc收到回复,返回0不回复
|
||||
int cmd_pc_recv(){
|
||||
return 0x02;
|
||||
return 0x11;
|
||||
}
|
||||
// 生成接收回复到pc
|
||||
myarray cmd_pc_recv_to_pc(){
|
||||
myarray r;
|
||||
r.append(uint8_t(addrs));
|
||||
r.append(uint8_t(addrs&0xff));
|
||||
r.append(uint8_t((addrs>>8)&0xff));
|
||||
r.append(uint8_t((addrs>>16)&0xff));
|
||||
r.append(uint8_t(0));
|
||||
return r;
|
||||
}
|
||||
@@ -418,7 +420,7 @@ public:
|
||||
|
||||
|
||||
|
||||
// 批检仪自动检测并读取模块流水号
|
||||
// 批检仪检测不读取流水号
|
||||
class cmd_checker_check3 : public cmd_checker_check2
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -428,6 +430,25 @@ public:
|
||||
~cmd_checker_check3(){
|
||||
}
|
||||
// pc收到回复,返回0不回复
|
||||
int cmd_pc_recv(){
|
||||
return 0x49;
|
||||
}
|
||||
// pc指令转从机
|
||||
myarray cmd_pc_to_slave(myarray data);
|
||||
};
|
||||
|
||||
|
||||
|
||||
// 批检仪检测不读取流水号
|
||||
class cmd_checker_check4 : public cmd_checker_check3
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
cmd_checker_check4():cmd_checker_check3(){
|
||||
}
|
||||
~cmd_checker_check4(){
|
||||
}
|
||||
// pc收到回复,返回0不回复
|
||||
int cmd_pc_recv(){
|
||||
return 0x44;
|
||||
}
|
||||
@@ -437,4 +458,5 @@ public:
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // CMD_CODER_H
|
||||
|
@@ -169,6 +169,7 @@ void selfdev_check::slave_end_slot(int addr,int ack, myarray data)
|
||||
r.append(char(0));
|
||||
for(int i=0;i<slave_acked.size();i++){
|
||||
r.append(tran_slave_to_selfdev_check(slave_acked[i]));
|
||||
r.append(4,uint8_t(0));
|
||||
}
|
||||
emit send_data_signal(0x31,r);
|
||||
busy=0;
|
||||
@@ -178,7 +179,7 @@ void selfdev_check::slave_end_slot(int addr,int ack, myarray data)
|
||||
static HandlePc *get_selfdev_check(){
|
||||
return new selfdev_check();
|
||||
}
|
||||
//protpc_export(0x30, get_selfdev_check);
|
||||
// protpc_export(0x49, get_selfdev_check);
|
||||
|
||||
|
||||
|
||||
@@ -685,7 +686,7 @@ myarray bootinfo_fill_local(void)
|
||||
memcpy(d,&temp32,4);d+=4;
|
||||
myarray arry((char *)d_free,sizeof(local_bootinfo));
|
||||
free(d_free);
|
||||
qDebug()<<"local data="<<arry.toHex(' ');
|
||||
// qDebug()<<"local data="<<arry.toHex(' ');
|
||||
return arry;
|
||||
}
|
||||
|
||||
|
@@ -35,7 +35,10 @@ void keep_live::init()
|
||||
mycfg *cfg_=syscfg();
|
||||
if_tcp *tcp=static_cast<if_tcp *>(if_tcp_get());
|
||||
if(cfg_->tcp_enable!=true){
|
||||
qDebug("keeplive not init.");
|
||||
return;
|
||||
}else{
|
||||
qDebug("keeplive init.");
|
||||
}
|
||||
if(timer_==nullptr){
|
||||
timer_=new QTimer();
|
||||
@@ -50,15 +53,18 @@ void keep_live::init()
|
||||
|
||||
void keep_live::connected_slot()
|
||||
{
|
||||
// qDebug("keeplive connected.");
|
||||
if(timer_!=nullptr){
|
||||
timer_->setInterval(30*1000);
|
||||
timer_->setInterval(1*1000);
|
||||
timer_->start();
|
||||
}
|
||||
}
|
||||
|
||||
void keep_live::recv_slot()
|
||||
{
|
||||
// qDebug("keeplive recv.");
|
||||
if(timer_!=nullptr){
|
||||
timer_->setInterval(30*1000);
|
||||
timer_->start();
|
||||
}
|
||||
}
|
||||
@@ -91,6 +97,7 @@ void keep_coder::timeout_slot(){
|
||||
data.append(uint8_t(0xff));
|
||||
data.append(uint8_t(0x03));
|
||||
pc_->send_data_slot(uint8_t(0x8a),data);
|
||||
// qDebug("coder keeplive.");
|
||||
}
|
||||
|
||||
|
||||
@@ -106,6 +113,11 @@ keep_live *KeepLive()
|
||||
kp=new keep_checker();
|
||||
}else if(cfg_->device_type.contains("coder",Qt::CaseInsensitive)==true){
|
||||
kp=new keep_coder();
|
||||
}else{
|
||||
qWarning("device type err,not creat keeplive.");
|
||||
}
|
||||
if(kp!=nullptr){
|
||||
QTimer::singleShot(0, kp, &keep_live::init);
|
||||
}
|
||||
}
|
||||
return kp;
|
||||
|
Reference in New Issue
Block a user