V2.02 0x48,0x30指令的返回数据中添加流水号信息
0x11 注码命令所有芯片都使用16位uid 添加自动测试命令0x44
This commit is contained in:
@@ -45,6 +45,8 @@
|
|||||||
添加slave_info命令测试小板通信状态
|
添加slave_info命令测试小板通信状态
|
||||||
添加cfginfo命令显示配置文件信息
|
添加cfginfo命令显示配置文件信息
|
||||||
按键处于按下状态才响应检测命令
|
按键处于按下状态才响应检测命令
|
||||||
|
2024.01.03
|
||||||
|
V2.02 0x48,0x30指令的返回数据中添加流水号信息
|
||||||
|
0x11 注码命令所有芯片都使用16位uid
|
||||||
|
添加自动测试命令0x44
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BUILD_DATE "2023-12-29 17:59:05"
|
#define BUILD_DATE "2024-01-03 17:45:14"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"build_date": "2023-12-29 17:59:05",
|
"build_date": "2024-01-03 17:45:14",
|
||||||
"hard_version": "MHPZ2_V1.00",
|
"hard_version": "MHPZ2_V1.00",
|
||||||
"private": [
|
"private": [
|
||||||
"info.json",
|
"info.json",
|
||||||
"json.lua",
|
"json.lua",
|
||||||
"prints.lua"
|
"prints.lua"
|
||||||
],
|
],
|
||||||
"soft_version": "V2.01"
|
"soft_version": "V2.02"
|
||||||
}
|
}
|
||||||
|
@@ -282,12 +282,68 @@ static void cfginfo(QList<myarray> args){
|
|||||||
print_item("uart_bsp",mystring::number(cfg_->uart_bsp).toLocal8Bit());
|
print_item("uart_bsp",mystring::number(cfg_->uart_bsp).toLocal8Bit());
|
||||||
print_item("coder_return_mode",mystring::number(cfg_->coder_return_mode).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_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.);
|
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.);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -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);
|
memcpy(uid.shell,data.mid(5+i*14+1,13).data(),13);
|
||||||
if(check_shell_code(uid.shell)==1){
|
if(check_shell_code(uid.shell)==1){
|
||||||
// 只有管壳码验证通过时才计算uid和密码
|
// 只有管壳码验证通过时才计算uid和密码
|
||||||
if(chip_mode!=0){
|
// if(chip_mode!=0){
|
||||||
coder_shell_to_uid(year,uid.shell,uid.uid);
|
coder_shell_to_uid(year,uid.shell,uid.uid);
|
||||||
// 生成存储码
|
// 生成存储码
|
||||||
coder_uid_to_save(uid.uid,(uint8_t *)uid.uid_psw);
|
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],
|
sprintf(uid.psw,"%02X%02X%02X%02X",uid.uid_psw[8],
|
||||||
uid.uid_psw[9],uid.uid_psw[10],uid.uid_psw[11]);
|
uid.uid_psw[9],uid.uid_psw[10],uid.uid_psw[11]);
|
||||||
}else{
|
// }else{
|
||||||
coder_shell_to_uid_jq(year,uid.shell,uid.uid);
|
// coder_shell_to_uid_jq(year,uid.shell,uid.uid);
|
||||||
// 生成存储码
|
// // 生成存储码
|
||||||
UidCode_YM2JQ((PST_JQUID_TYPEDEF)uid.uid_psw,(PST_YMUID_TYPEDEF)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]);
|
// JQ_GetPasswordByUidCode((uint8_t *)uid.uid,(uint8_t *)&uid.uid_psw[8]);
|
||||||
// 生成密码字符串
|
// // 生成密码字符串
|
||||||
sprintf(uid.psw,"%02X%02X%02X%02X",uid.uid_psw[11],
|
// sprintf(uid.psw,"%02X%02X%02X%02X",uid.uid_psw[11],
|
||||||
uid.uid_psw[10],uid.uid_psw[9],uid.uid_psw[8]);
|
// uid.uid_psw[10],uid.uid_psw[9],uid.uid_psw[8]);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
uid_codes.append(uid);
|
uid_codes.append(uid);
|
||||||
params[0]=(8)|(4<<8);
|
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){
|
if(syscfg()->coder_return_mode){
|
||||||
r.append(uint8_t(0));
|
r.append(uint8_t(0));
|
||||||
r.append(13);
|
r.append(13);
|
||||||
if(chip_mode==0){
|
// if(chip_mode==0){
|
||||||
r.append(15);
|
// r.append(15);
|
||||||
}else{
|
// }else{
|
||||||
r.append(16);
|
r.append(16);
|
||||||
}
|
// }
|
||||||
}else{
|
}else{
|
||||||
r.append(uint8_t(1));
|
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){
|
if(syscfg()->coder_return_mode){
|
||||||
r.append(uid_codes[i].shell,13);
|
r.append(uid_codes[i].shell,13);
|
||||||
// r.append(13,i+'0');
|
// r.append(13,i+'0');
|
||||||
if(chip_mode==0){
|
// if(chip_mode==0){
|
||||||
r.append(uid_codes[i].uid,15);
|
// r.append(uid_codes[i].uid,15);
|
||||||
}else{
|
// }else{
|
||||||
r.append(uid_codes[i].uid,16);
|
r.append(uid_codes[i].uid,16);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
r.append(uid_codes[i].psw,8);
|
r.append(uid_codes[i].psw,8);
|
||||||
}
|
}
|
||||||
@@ -667,7 +667,7 @@ int cmd_checker_check::dolater(int cmd, myarray data)
|
|||||||
qWarning("moter failed.");
|
qWarning("moter failed.");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if(cmd_m4_key_pressed()!=0){
|
if(key_press()!=0){
|
||||||
m4->set_irq_fun(moter_down_cb_fun,"moter down");
|
m4->set_irq_fun(moter_down_cb_fun,"moter down");
|
||||||
emit send_to_m4_signal(moter_cmd);
|
emit send_to_m4_signal(moter_cmd);
|
||||||
}else{
|
}else{
|
||||||
@@ -676,6 +676,9 @@ int cmd_checker_check::dolater(int cmd, myarray data)
|
|||||||
}
|
}
|
||||||
return 0;
|
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;
|
ret+=d;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测模式0,返回原始检测结果
|
// 检测模式2,返回原始检测结果和槽数据
|
||||||
ret.insert(0,uint8_t(0));
|
ret.insert(0,uint8_t(2));
|
||||||
// qDebug()<<"checker check pack data:"<<ret.toHex(' ');
|
// qDebug()<<"checker check pack data:"<<ret.toHex(' ');
|
||||||
return ret;
|
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 cmd_checker_check::ret_slave_to_pc(QList<myarray> data)
|
||||||
{
|
{
|
||||||
myarray r;
|
myarray r;
|
||||||
|
check_cfg *ccfg_=check_plan();
|
||||||
r.append(char(0));
|
r.append(char(0));
|
||||||
for(int i=0;i<data.size();i++){
|
for(int i=0;i<data.size();i++){
|
||||||
myarray &sdata=data[i];
|
myarray &sdata=data[i];
|
||||||
int addr=sdata[0]-1+syscfg()->slave_addr_start;
|
int addr=sdata[0]-1+syscfg()->slave_addr_start;
|
||||||
sdata.remove(0,1);
|
sdata.remove(0,1);
|
||||||
qDebug()<<"checker check ret data:"<<sdata.toHex(' ');
|
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;
|
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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -381,6 +381,7 @@ public:
|
|||||||
}
|
}
|
||||||
// 从机返回转pc
|
// 从机返回转pc
|
||||||
myarray ret_slave_to_pc(QList<myarray> data);
|
myarray ret_slave_to_pc(QList<myarray> data);
|
||||||
|
virtual int key_press();
|
||||||
protected:
|
protected:
|
||||||
// int addrs;
|
// int addrs;
|
||||||
int mode;
|
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();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -174,7 +174,7 @@ void selfdev_check::slave_end_slot(int addr,int ack, myarray data)
|
|||||||
static HandlePc *get_selfdev_check(){
|
static HandlePc *get_selfdev_check(){
|
||||||
return new selfdev_check();
|
return new selfdev_check();
|
||||||
}
|
}
|
||||||
protpc_export(0x30, get_selfdev_check);
|
//protpc_export(0x30, get_selfdev_check);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1 +1 @@
|
|||||||
V2.00 重构主板程序,添加检测并写入流水号命令,只支持V2.09及以上的小板程序
|
V2.02 添加自动测试命令0x44
|
Reference in New Issue
Block a user