添加tran命令透传小板命令

添加slave_info命令测试小板通信状态
  添加cfginfo命令显示配置文件信息
  按键处于按下状态才响应检测命令
This commit is contained in:
ranchuan
2023-12-29 18:09:10 +08:00
parent 92f3ebbe33
commit 66ecf9c411
12 changed files with 212 additions and 50 deletions

View File

@@ -9,10 +9,19 @@
#include "QFile"
#include "base/base.h"
#include "cmd_cmdline.h"
#include "interface/if_can.h"
#include "elec/mystring.h"
/*
命令行返回有三种
data:[str]
rate:[rate%],[str]
end:[1:ok/0:failed],[str]
*/
@@ -26,9 +35,10 @@ void rate_slot(int rate,mystring str)
}
void end_slot(int addr,int ack,slave_data data)
{
// ack 0是成功,这里转化为1是成功
command *c=command_start();
mystring strs("ack:%1,%2");
strs=strs.arg(ack).arg("end");
strs=strs.arg(!ack).arg("end");
c->send(strs.data());
}
@@ -79,8 +89,16 @@ cmdline_export(whos, whos, print device base info.);
// mcu 相关
static void mcu_cmdlines_help(){
command *c=command_start();
c->send("mcu updata [addrs] [file_name] to updata slave app,for example:\n"
"\tmcu updata 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 /home/root/config/checker_slave_app.pkt");
c->send("mcu upjwt [addrs] [file_name] to updata jwt app,for example:\n"
"\tmcu upjwt 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 /home/root/config/jwt_app.jwt");
c->send("mcu scheme [addrs] to updata slave scheme,for example:\n"
"\tmcu scheme 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20");
}
// mcu 升级程序及方案等
static void mcu_cmdlines(QList<myarray> args)
{
command *c=command_start();
@@ -89,11 +107,12 @@ static void mcu_cmdlines(QList<myarray> args)
check_cfg *ccfg_=check_plan();
if(args.size()<2){
c->send("cmd len too less.");
mcu_cmdlines_help();
return ;
}
if(args.size()>=4){
QList<int> addrs=str_to_nums<int>(args[2],',');
qDebug()<<"addrs:"<<addrs;
// 升级小板程序
if(args[1]=="updata"){
HandleBoardCast *b=new boardcast_updata();
@@ -142,6 +161,7 @@ static void mcu_cmdlines(QList<myarray> args)
}
}else if(args.size()>=3){
QList<int> addrs=str_to_nums<int>(args[2],',');
qDebug()<<"addrs:"<<addrs;
// 升级方案
if(args[1]=="scheme"){
HandleBoardCast *b=new boardcast_updata_scheme();
@@ -150,7 +170,7 @@ static void mcu_cmdlines(QList<myarray> args)
qWarning("handle is busy.");
}else{
b->set_cbfun([=](int addr,int ack,slave_data data){
end_slot(addr,!ack,data);
end_slot(addr,ack,data);
},[=](int rate,mystring str){
rate_slot(rate,str);
});
@@ -165,7 +185,108 @@ static void mcu_cmdlines(QList<myarray> args)
}
}
}
cmdline_export(mcu, mcu_cmdlines, mcu cmdlines` input [mcu help] to detail.);
cmdline_export(mcu, mcu_cmdlines, mcu cmdlines` input [mcu] for detail.);
static int g_slave_addr;
static void mcu_tran_cmdlines(QList<myarray> args){
command *c=command_start();
mycfg *cfg_=syscfg();
check_cfg *ccfg_=check_plan();
can_host *can_=static_cast<can_host *>(interFaceFind("can"));
if(args.size()<3){
c->send("cmd len too less.");
c->send("tran [addr] [cmdline],for example\n"
"\ttran 1 sysinfo");
return ;
}
QList<int> addrs=str_to_nums<int>(args[1],',');
qDebug()<<"addrs:"<<addrs;
myarray can_d;
for(int i=2;i<args.size();i++){
can_d.append(' ');
can_d.append(args[i]);
}
g_slave_addr=addrs[0];
can_->set_irq([=](int src,myarray data){
if(str_is_print_str(data.data(),data.size())!=1){
return;
}
if(g_slave_addr!=src){
mystring str="src=%1";
str=str.arg(src);
c->send(str.toLocal8Bit());
}
c->send(data);
});
can_->write(g_slave_addr,can_d);
}
cmdline_export(tran, mcu_tran_cmdlines, tran cmdline to slave.);
static void slave_info(QList<myarray> args){
command *c=command_start();
prot_slave *slave=protSlave();
mycfg *cfg_=syscfg();
HandleBoardCast *b=new slave_cmd2();
bool ack=slave->set_boardcast_handle(cfg_->calc_slave_addrs(),b);
if(ack==false){
qWarning("handle is busy.");
}else{
b->set_cbfun([=](int addr,int ack,slave_data data){
myarray r=myarray("data:",5);
for(int i=0;i<cfg_->slave_num;i++){
myarray t=data[i];
if(t.size()>0){
r.append("ok,");
}else{
r.append("ng,");
}
}
c->send(r);
},nullptr);
b->cmd=0x13;
b->start(myarray());
}
}
cmdline_export(slave_info, slave_info, get slave communicat info.);
#define print_item(str,data){\
myarray r=str;\
r[r.size()-1]=':';\
r.append(data);\
c->send(r);\
}
static void cfginfo(QList<myarray> args){
command *c=command_start();
prot_slave *slave=protSlave();
mycfg *cfg_=syscfg();
print_item("tcp_enable",cfg_->tcp_enable?"true":"false");
print_item("server_ip",cfg_->server_ip.toLocal8Bit());
print_item("server_port",mystring::number(cfg_->server_port).toLocal8Bit());
print_item("local_id",mystring::number(cfg_->local_id).toLocal8Bit());
print_item("can_bitrate",mystring::number(cfg_->can_bitrate).toLocal8Bit());
print_item("slave_num",mystring::number(cfg_->slave_num).toLocal8Bit());
print_item("moter_count",mystring::number(cfg_->moter_count).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("slave_addr_start",mystring::number(cfg_->slave_addr_start).toLocal8Bit());
}
cmdline_export(cfginfo, cfginfo, get cfg info.);

View File

@@ -5,6 +5,7 @@
#include "elec/JQ_PSDGenerate.h"
#include "elec/JQ_UIDGenerate.h"
#include "elec/PSDGenerate.h"
#include "prot_cmd/cmd_m4.h"
@@ -655,19 +656,24 @@ int cmd_checker_check::dolater(int cmd, myarray data)
}
}
};
myarray moter_cmd=moter_ctrl("down");
if(moter_cmd.size()==0){
busy=0;
qWarning("moter failed.");
}else{
m4->set_irq_fun(moter_down_cb_fun,"moter down");
emit send_to_m4_signal(moter_cmd);
}
slave_acked.clear();
for(int i=0;i<addrs.size();i++){
slave_acked.append(myarray());
}
slave_acked_num=0;
myarray moter_cmd=moter_ctrl("down");
if(moter_cmd.size()==0){
busy=0;
qWarning("moter failed.");
return 1;
}
if(cmd_m4_key_pressed()!=0){
m4->set_irq_fun(moter_down_cb_fun,"moter down");
emit send_to_m4_signal(moter_cmd);
}else{
qWarning("key not pressed,check will not start.");
return 2;
}
return 0;
}

View File

@@ -43,7 +43,15 @@ void cmd_m4_init()
// },"key press");
}
// 返回1则按键已按下
int cmd_m4_key_pressed()
{
if(g_self.key_pressed){
return 1;
}else{
return 0;
}
}

View File

@@ -7,6 +7,7 @@
void cmd_m4_init();
int cmd_m4_key_pressed();

View File

@@ -8,6 +8,7 @@
#include "QDebug"
#include "elec/elec_judge.h"
#include "QDateTime"
#include "prot_cmd/cmd_m4.h"
typedef struct
{
@@ -96,19 +97,24 @@ int selfdev_check::dolater(int cmd, myarray data)
}
}
};
myarray moter_cmd=moter_ctrl("down");
if(moter_cmd.size()==0){
busy=0;
qWarning("moter failed.");
}else{
m4->set_irq_fun(moter_down_cb_fun,"moter down");
emit send_to_m4_signal(moter_cmd);
}
slave_acked.clear();
for(int i=0;i<cfg->slave_num;i++){
slave_acked.append(myarray());
}
slave_acked_num=0;
myarray moter_cmd=moter_ctrl("down");
if(moter_cmd.size()==0){
busy=0;
qWarning("moter failed.");
return 1;
}
if(cmd_m4_key_pressed()!=0){
m4->set_irq_fun(moter_down_cb_fun,"moter down");
emit send_to_m4_signal(moter_cmd);
}else{
qWarning("key not pressed,check will not start.");
return 2;
}
return 0;
}

View File

@@ -581,7 +581,7 @@ int slave_cmd::dolater(int cmd, myarray data)
int slave_cmd2::start(myarray data)
{
int timeout=5000;
int timeout=3500;
busy=1;
// 这里addr是bit数,用16进制打印
qDebug("addr 0x%06X start ,timeout=%d",addr,timeout);