Files
checker_host/prot_cmd/cmd_cmdline.cpp
ranchuan 2451c5dfc5 自研批检仪检测命令测试成功
广播方式升级从机发现卡死现象
2023-12-04 18:15:37 +08:00

94 lines
2.3 KiB
C++

#include "prot/prot_cmdline.h"
#include "base/mycfg.h"
#include "QNetworkConfigurationManager"
#include "QTimer"
#include "QtNetwork"
#include "prot/prot_slave.h"
#include "prot_cmd/cmd_slave.h"
#include "QFile"
#include "base/base.h"
// 获取设备基本信息
static void whos(QList<myarray> args)
{
QString out;
QString name = "local_id:%1,name:%2";
QString hostName = QHostInfo::localHostName();
command *c=command_start();
mycfg *cfg_=syscfg();
name = name.arg(cfg_->local_id).arg(hostName);
out.append(name + "\n");
out.append("builed time:" + cfg_->build_date + "\n");
QList<QNetworkInterface> network = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface net, network)
{
QString str = "net:%1";
QString netName = net.humanReadableName();
str = str.arg(netName);
out.append(str + "\n");
QList<QNetworkAddressEntry> list = net.addressEntries(); // 获取IP地址与子掩码等
foreach (QNetworkAddressEntry address, list)
{
QString str = "ip:%1";
if (address.ip().protocol() == QAbstractSocket::IPv4Protocol) // 获取IPv4的地址
{
out.append(str.arg(address.ip().toString()) + "\n");
}
}
}
out = "ack:1," + out;
c->send(out.toLocal8Bit());
}
cmdline_export(whos, whos, print device base info.);
// mcu 相关
static void mcu_cmdlines(QList<myarray> args)
{
command *c=command_start();
if(args.size()<2){
c->send("cmd len too less.");
return ;
}
if((args.size()>=4)&&(args[1]=="updata")){
QList<int> addrs=str_to_nums<int>(args[2],',');
HandleBoardCast *b=new boardcast_updata();
prot_slave *slave=protSlave();
mycfg *cfg_=syscfg();
bool ack=slave->set_boardcast_handle(addrs,b);
if(ack==false){
qWarning("handle is busy.");
}else{
// connect(b,&HandleBoardCast::end_signal,nullptr,[=](int addr,int ack, myarray data){
// if(ack==0)
// c->send("slave updata success.");
// else
// c->send("slave updata failed.");
// });
QFile file;
file.setFileName(args[3]);
if(file.open(QIODevice::ReadOnly)){
myarray data=file.readAll();
b->start(data);
file.close();
}else{
qWarning("open file failed.");
}
}
}
}
cmdline_export(mcu, mcu_cmdlines, mcu cmdlines` input [mcu help] to detail.);