92 lines
1.7 KiB
C
92 lines
1.7 KiB
C
![]() |
#ifndef CMD_CODER_H
|
|||
|
#define CMD_CODER_H
|
|||
|
|
|||
|
#include <QObject>
|
|||
|
#include "prot_cmd/cmd_pc.h"
|
|||
|
#include "base/check_cfg.h"
|
|||
|
#include "elec/elec_judge.h"
|
|||
|
|
|||
|
|
|||
|
/*
|
|||
|
|
|||
|
执行任务命令格式
|
|||
|
[0...1]=总字节数,[2]=当前包数(0开始),[3]=当前包字节数
|
|||
|
[4...n]=数据
|
|||
|
|
|||
|
数据域格式
|
|||
|
[0]=小板地址,[1]=数据长度,[2...n]=数据
|
|||
|
|
|||
|
单个任务数据格式
|
|||
|
[0]=插槽序号,[1]=任务id,[2]=参数个数(u16)
|
|||
|
[3]=返回值个数(u16),[4]=异常代码,[5]=任务序号
|
|||
|
[6...n]=参数
|
|||
|
|
|||
|
|
|||
|
|
|||
|
返回数据域格式
|
|||
|
[0]=任务序号,[1]=返回数据长度(u16)
|
|||
|
[2...n]=参数
|
|||
|
|
|||
|
|
|||
|
*/
|
|||
|
|
|||
|
int coder_find_task_id(const char *str);
|
|||
|
|
|||
|
|
|||
|
// 赋码仪检测命令
|
|||
|
class cmd_coder_check : public selfdev_runtask
|
|||
|
{
|
|||
|
Q_OBJECT
|
|||
|
public:
|
|||
|
cmd_coder_check():selfdev_runtask(){
|
|||
|
}
|
|||
|
// pc指令转从机
|
|||
|
myarray cmd_pc_to_slave(myarray data){
|
|||
|
|
|||
|
}
|
|||
|
// pc指令生成从机列表
|
|||
|
QList<int> cmd_pc_to_addrs(myarray data){
|
|||
|
QList<int> addr_list;
|
|||
|
addrs=data[0]|(data[1]<<8)|(data[2]<<16);
|
|||
|
for(int i=0;i<20;i++){
|
|||
|
if((addrs&(1<<i))!=0){
|
|||
|
addr_list.append(i+1);
|
|||
|
}
|
|||
|
}
|
|||
|
return addr_list;
|
|||
|
}
|
|||
|
// 从机发起命令
|
|||
|
int cmd_slave(){
|
|||
|
return 0x20;
|
|||
|
}
|
|||
|
// pc收到回复,返回0不回复
|
|||
|
int cmd_pc_recv(){
|
|||
|
return 0x10;
|
|||
|
}
|
|||
|
// 生成接收回复到pc
|
|||
|
myarray cmd_pc_recv_to_pc(){
|
|||
|
myarray r;
|
|||
|
r.append(uint8_t(addrs&0xff));
|
|||
|
r.append(uint8_t((addrs>>8)&0xff));
|
|||
|
r.append(uint8_t((addrs>>16)&0xff));
|
|||
|
r.append(uint8_t(0));
|
|||
|
return r;
|
|||
|
}
|
|||
|
// pc回复命令,返回0不回复
|
|||
|
int cmd_pc_ret(){
|
|||
|
return 0x90;
|
|||
|
}
|
|||
|
// 从机返回转pc
|
|||
|
myarray ret_slave_to_pc(QList<myarray> data){
|
|||
|
|
|||
|
}
|
|||
|
protected:
|
|||
|
int addrs;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#endif // CMD_CODER_H
|