V2.02 0x48,0x30指令的返回数据中添加流水号信息

0x11 注码命令所有芯片都使用16位uid
  添加自动测试命令0x44
This commit is contained in:
ranchuan
2024-01-03 17:51:39 +08:00
parent 66ecf9c411
commit 78b3a839fd
8 changed files with 171 additions and 30 deletions

View File

@@ -282,12 +282,68 @@ static void cfginfo(QList<myarray> args){
print_item("uart_bsp",mystring::number(cfg_->uart_bsp).toLocal8Bit());
print_item("coder_return_mode",mystring::number(cfg_->coder_return_mode).toLocal8Bit());
print_item("slave_addr_start",mystring::number(cfg_->slave_addr_start).toLocal8Bit());
print_item("slave_scheme_ext",mystring::number(cfg_->slave_scheme_ext).toLocal8Bit())
}
cmdline_export(cfginfo, cfginfo, get cfg info.);
static void cfgset(QList<myarray> args){
command *c=command_start();
prot_slave *slave=protSlave();
mycfg *cfg_=syscfg();
if(args.size()<3){
if((args.size()<2)||(args[1]!="save")){
c->send("cmd len too less.");
c->send("cfgset [item] [params],for example\n"
"\tcfgset tcp_enable true");
}else{
syscfg()->save();
syscfg()->restart();
}
return ;
}
if(args[1]=="tcp_enable"){
if(args[2]=="true"){
cfg_->tcp_enable=true;
}else if(args[2]=="false"){
cfg_->tcp_enable=false;
}
print_item("tcp_enable",cfg_->tcp_enable?"true":"false");
}else if(args[1]=="server_ip"){
cfg_->server_ip=mystring(args[2]);
print_item("server_ip",cfg_->server_ip.toLocal8Bit());
}else if(args[1]=="server_port"){
cfg_->server_port=args[2].toInt();
print_item("server_port",mystring::number(cfg_->server_port).toLocal8Bit());
}else if(args[1]=="local_id"){
cfg_->local_id=args[2].toInt();
print_item("local_id",mystring::number(cfg_->local_id).toLocal8Bit());
}else if(args[1]=="can_bitrate"){
cfg_->can_bitrate=args[2].toInt();
print_item("can_bitrate",mystring::number(cfg_->can_bitrate).toLocal8Bit());
}else if(args[1]=="slave_num"){
cfg_->slave_num=args[2].toInt();
print_item("slave_num",mystring::number(cfg_->slave_num).toLocal8Bit());
}else if(args[1]=="moter_count"){
cfg_->moter_count=args[2].toInt();
print_item("moter_count",mystring::number(cfg_->moter_count).toLocal8Bit());
}else if(args[1]=="uart_bsp"){
cfg_->uart_bsp=args[2].toInt();
print_item("uart_bsp",mystring::number(cfg_->uart_bsp).toLocal8Bit());
}else if(args[1]=="coder_return_mode"){
cfg_->coder_return_mode=args[2].toInt();
print_item("coder_return_mode",mystring::number(cfg_->coder_return_mode).toLocal8Bit());
}else if(args[1]=="slave_addr_start"){
cfg_->slave_addr_start=args[2].toInt();
print_item("slave_addr_start",mystring::number(cfg_->slave_addr_start).toLocal8Bit());
}else if(args[1]=="slave_scheme_ext"){
cfg_->slave_scheme_ext=args[2].toInt();
print_item("slave_scheme_ext",mystring::number(cfg_->slave_scheme_ext).toLocal8Bit())
}
}
cmdline_export(cfgset, cfgset, set cfg info.);

View File

@@ -465,7 +465,7 @@ myarray cmd_coder_code2::cmd_pc_to_slave(myarray data)
memcpy(uid.shell,data.mid(5+i*14+1,13).data(),13);
if(check_shell_code(uid.shell)==1){
// 只有管壳码验证通过时才计算uid和密码
if(chip_mode!=0){
// if(chip_mode!=0){
coder_shell_to_uid(year,uid.shell,uid.uid);
// 生成存储码
coder_uid_to_save(uid.uid,(uint8_t *)uid.uid_psw);
@@ -474,16 +474,16 @@ myarray cmd_coder_code2::cmd_pc_to_slave(myarray data)
// 生成密码字符串
sprintf(uid.psw,"%02X%02X%02X%02X",uid.uid_psw[8],
uid.uid_psw[9],uid.uid_psw[10],uid.uid_psw[11]);
}else{
coder_shell_to_uid_jq(year,uid.shell,uid.uid);
// 生成存储码
UidCode_YM2JQ((PST_JQUID_TYPEDEF)uid.uid_psw,(PST_YMUID_TYPEDEF)uid.uid);
// 生成密码
JQ_GetPasswordByUidCode((uint8_t *)uid.uid,(uint8_t *)&uid.uid_psw[8]);
// 生成密码字符串
sprintf(uid.psw,"%02X%02X%02X%02X",uid.uid_psw[11],
uid.uid_psw[10],uid.uid_psw[9],uid.uid_psw[8]);
}
// }else{
// coder_shell_to_uid_jq(year,uid.shell,uid.uid);
// // 生成存储码
// UidCode_YM2JQ((PST_JQUID_TYPEDEF)uid.uid_psw,(PST_YMUID_TYPEDEF)uid.uid);
// // 生成密码
// JQ_GetPasswordByUidCode((uint8_t *)uid.uid,(uint8_t *)&uid.uid_psw[8]);
// // 生成密码字符串
// sprintf(uid.psw,"%02X%02X%02X%02X",uid.uid_psw[11],
// uid.uid_psw[10],uid.uid_psw[9],uid.uid_psw[8]);
// }
}
uid_codes.append(uid);
params[0]=(8)|(4<<8);
@@ -521,11 +521,11 @@ myarray cmd_coder_code2::ret_slave_to_pc(QList<myarray> data)
if(syscfg()->coder_return_mode){
r.append(uint8_t(0));
r.append(13);
if(chip_mode==0){
r.append(15);
}else{
// if(chip_mode==0){
// r.append(15);
// }else{
r.append(16);
}
// }
}else{
r.append(uint8_t(1));
}
@@ -559,11 +559,11 @@ myarray cmd_coder_code2::ret_slave_to_pc(QList<myarray> data)
if(syscfg()->coder_return_mode){
r.append(uid_codes[i].shell,13);
// r.append(13,i+'0');
if(chip_mode==0){
r.append(uid_codes[i].uid,15);
}else{
// if(chip_mode==0){
// r.append(uid_codes[i].uid,15);
// }else{
r.append(uid_codes[i].uid,16);
}
// }
}
r.append(uid_codes[i].psw,8);
}
@@ -667,7 +667,7 @@ int cmd_checker_check::dolater(int cmd, myarray data)
qWarning("moter failed.");
return 1;
}
if(cmd_m4_key_pressed()!=0){
if(key_press()!=0){
m4->set_irq_fun(moter_down_cb_fun,"moter down");
emit send_to_m4_signal(moter_cmd);
}else{
@@ -676,6 +676,9 @@ int cmd_checker_check::dolater(int cmd, myarray data)
}
return 0;
}
int cmd_checker_check::key_press(){
return cmd_m4_key_pressed();
}
// 批检仪检测并写入流水号
@@ -695,8 +698,8 @@ myarray cmd_checker_check::cmd_pc_to_slave(myarray data)
ret+=d;
}
// 检测模式0,返回原始检测结果
ret.insert(0,uint8_t(0));
// 检测模式2,返回原始检测结果和槽数据
ret.insert(0,uint8_t(2));
// qDebug()<<"checker check pack data:"<<ret.toHex(' ');
return ret;
}
@@ -705,13 +708,19 @@ myarray cmd_checker_check::cmd_pc_to_slave(myarray data)
myarray cmd_checker_check::ret_slave_to_pc(QList<myarray> data)
{
myarray r;
check_cfg *ccfg_=check_plan();
r.append(char(0));
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);
qDebug()<<"checker check ret data:"<<sdata.toHex(' ');
r.append(tran_slave_to_selfdev_check(sdata));
// 返回值个数
int return_num=ccfg_->get_return_num();
myarray check_data=sdata.left(1+16+return_num*2);
r.append(tran_slave_to_selfdev_check(check_data));
r.append(coder_slave_find_ret_data(sdata.mid(1+16+return_num*2),2,4));
}
return r;
}
@@ -726,6 +735,39 @@ protpc_export(0x48, get_checker_check);
// 批检仪检测并读取流水号
myarray cmd_checker_check2::cmd_pc_to_slave(myarray data)
{
myarray ret;
const task_def *table=nullptr;
uint16_t params[10]={0};
for(int i=0;i<addrs.size();i++){
myarray d;
coder_add_task(d,"读取流水号",2,2,params);
coder_slave_pack(d,addrs[i]);
ret+=d;
}
// 检测模式2,返回原始检测结果和槽数据
ret.insert(0,uint8_t(2));
return ret;
}
static HandlePc *get_checker_check2(){
return new cmd_checker_check2();
}
protpc_export(0x30, get_checker_check2);
int cmd_checker_check3::key_press(){
return 1;
}
static HandlePc *get_checker_check3(){
return new cmd_checker_check3();
}
protpc_export(0x44, get_checker_check3);

View File

@@ -381,6 +381,7 @@ public:
}
// 从机返回转pc
myarray ret_slave_to_pc(QList<myarray> data);
virtual int key_press();
protected:
// int addrs;
int mode;
@@ -393,6 +394,46 @@ signals:
// 批检仪检测并读取模块流水号
class cmd_checker_check2 : public cmd_checker_check
{
Q_OBJECT
public:
cmd_checker_check2():cmd_checker_check(){
}
~cmd_checker_check2(){
}
// pc指令转从机
myarray cmd_pc_to_slave(myarray data);
// pc指令生成从机列表
QList<int> cmd_pc_to_addrs(myarray data){
return syscfg()->calc_slave_addrs();
}
// pc收到回复,返回0不回复
int cmd_pc_recv(){
return 0x30;
}
};
// 批检仪自动检测并读取模块流水号
class cmd_checker_check3 : public cmd_checker_check2
{
Q_OBJECT
public:
cmd_checker_check3():cmd_checker_check2(){
}
~cmd_checker_check3(){
}
// pc收到回复,返回0不回复
int cmd_pc_recv(){
return 0x44;
}
int key_press();
};

View File

@@ -174,7 +174,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(0x30, get_selfdev_check);