V2.07 检测参数自检命令验证成功
This commit is contained in:
191
prot_cmd/cmd_checkself.cpp
Normal file
191
prot_cmd/cmd_checkself.cpp
Normal file
@@ -0,0 +1,191 @@
|
||||
#include "prot_cmd/cmd_checkself.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|细分指令 |参数说明 |回复结果说明 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|电机归零(0x01) |无 |无 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|电机下降(0x02) |下降步数(2bytes,小端) |无 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|电机上升(0x03) |上升步数(2bytes,小端) |无 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|检桥丝电阻(0x04) |无 |小板地址+桥丝阻值(2bytes) |
|
||||
| | |多块小板数据域追加相应数据 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|打开总线(0x05) |总线电压(2bytes,小端) |小板地址+总线电压(2bytes)(单位0.1V) |
|
||||
| |(单位0.1V) |多块小板数据域追加相应数据 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|关闭总线(0x06) |无 |无 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|检总线电流(0x07) |无 |小板地址+总线电流(4bytes)(单位0.1uA)|
|
||||
| | |多块小板数据域追加相应数据 |
|
||||
+-----------------+-------------------------+----------------------------------------+
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
// 电机控制
|
||||
int selfdev_checkself::dolater(int cmd, myarray data)
|
||||
{
|
||||
prot_m4 *m4 = protM4();
|
||||
mycfg *cfg_=syscfg();
|
||||
int subcmd=data[0];
|
||||
if(subcmd>=1&&subcmd<=3){
|
||||
connect(this, &selfdev_checkself::send_to_m4_signal, m4, &prot_m4::send_data_slot);
|
||||
switch (subcmd)
|
||||
{
|
||||
case 0x01:
|
||||
emit send_to_m4_signal("moterinit");
|
||||
break;
|
||||
case 0x02:
|
||||
{
|
||||
int count=data[1]|(data[2]<<8);
|
||||
mystring s = mystring("moter %1").arg(count);
|
||||
emit send_to_m4_signal(myarray(s.data()));
|
||||
}
|
||||
break;
|
||||
case 0x03:
|
||||
{
|
||||
int count=data[1]|(data[2]<<8);
|
||||
mystring s = mystring("moter %1").arg(-count);
|
||||
emit send_to_m4_signal(myarray(s.data()));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
myarray r;
|
||||
r.append(char(0));
|
||||
r.append(uint8_t(subcmd));
|
||||
emit send_data_signal(0,r);
|
||||
return 0;
|
||||
}else{
|
||||
pc_ret_cmd=0x50;
|
||||
return selfdev_runtask::dolater(cmd, data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 参数检测
|
||||
myarray selfdev_checkself::cmd_pc_to_slave(myarray data)
|
||||
{
|
||||
myarray ret;
|
||||
const task_def *table=nullptr;
|
||||
uint16_t params[10]={0};
|
||||
subcmd=data[0];
|
||||
switch (subcmd)
|
||||
{
|
||||
case 0x04:
|
||||
{
|
||||
myarray d;
|
||||
params[0]=0;
|
||||
coder_add_task(d,"测量桥丝阻值",1,1,params);
|
||||
coder_slave_pack(d,0x1f);
|
||||
ret+=d;
|
||||
// 检测模式3,只执行槽任务
|
||||
ret.insert(0,uint8_t(3));
|
||||
}
|
||||
break;
|
||||
case 0x05:
|
||||
{
|
||||
myarray d;
|
||||
params[0]=data[1]|(data[2]<<8);
|
||||
coder_add_task(d,"设置总线电压",1,1,params);
|
||||
coder_slave_pack(d,0x1f);
|
||||
ret+=d;
|
||||
// 检测模式3,只执行槽任务
|
||||
ret.insert(0,uint8_t(3));
|
||||
}
|
||||
break;
|
||||
case 0x06:
|
||||
{
|
||||
myarray d;
|
||||
params[0]=data[1]|(data[2]<<8);
|
||||
coder_add_task(d,"关总线",1,1,params);
|
||||
coder_slave_pack(d,0x1f);
|
||||
ret+=d;
|
||||
// 检测模式3,只执行槽任务
|
||||
ret.insert(0,uint8_t(3));
|
||||
}
|
||||
break;
|
||||
case 0x07:
|
||||
{
|
||||
myarray d;
|
||||
params[0]=data[1]|(data[2]<<8);
|
||||
coder_add_task(d,"获取总线电流",1,1,params);
|
||||
coder_slave_pack(d,0x1f);
|
||||
ret+=d;
|
||||
// 检测模式3,只执行槽任务
|
||||
ret.insert(0,uint8_t(3));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// 从机返回转pc
|
||||
myarray selfdev_checkself::ret_slave_to_pc(QList<myarray> data)
|
||||
{
|
||||
myarray ret;
|
||||
ret.append(uint8_t(0));
|
||||
ret.append(uint8_t(subcmd));
|
||||
switch (subcmd)
|
||||
{
|
||||
case 0x04:// 测量桥丝阻值
|
||||
for (int i=0;i<data.size();i++)
|
||||
{
|
||||
myarray &sdata=data[i];
|
||||
ret.append(sdata[0]);
|
||||
myarray sret=coder_slave_find_ret_data(sdata.mid(2),1,2);
|
||||
ret+=sret;
|
||||
}
|
||||
break;
|
||||
case 0x05:// 设置总线电压
|
||||
for (int i=0;i<data.size();i++)
|
||||
{
|
||||
myarray &sdata=data[i];
|
||||
ret.append(sdata[0]);
|
||||
myarray sret=coder_slave_find_ret_data(sdata.mid(2),1,2);
|
||||
ret+=sret;
|
||||
}
|
||||
break;
|
||||
case 0x06:// 关总线
|
||||
break;
|
||||
case 0x07:// 获取总线电流
|
||||
for (int i=0;i<data.size();i++)
|
||||
{
|
||||
myarray &sdata=data[i];
|
||||
ret.append(sdata[0]);
|
||||
myarray sret=coder_slave_find_ret_data(sdata.mid(2),1,4);
|
||||
ret+=sret;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static HandlePc *get_selfdev_checkself(){
|
||||
return new selfdev_checkself();
|
||||
}
|
||||
|
||||
protpc_export(0x50, get_selfdev_checkself);
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user