963 lines
39 KiB
C++
963 lines
39 KiB
C++
#include "driver.h"
|
|
|
|
Driver::Driver()
|
|
{
|
|
currentDriverTable = new DriverTable();
|
|
nextDriverTable = new DriverTable();
|
|
debug = false;
|
|
|
|
}
|
|
|
|
Driver::~Driver()
|
|
{
|
|
delete currentDriverTable;
|
|
delete nextDriverTable;
|
|
}
|
|
|
|
void Driver::setDebug(bool debug)
|
|
{
|
|
this->debug = debug;
|
|
}
|
|
|
|
void Driver::getSTANDBYTable(DriverTable* driverTable)
|
|
{
|
|
//打开所有传感器
|
|
driverTable->depth1 = 1;
|
|
driverTable->depth2 = 1;
|
|
driverTable->depth3 = 1;
|
|
driverTable->overDeep1 = 1;
|
|
driverTable->overDeep2 = 1;
|
|
driverTable->ctd1 = 1;
|
|
driverTable->ctd2 = 1;
|
|
driverTable->soundVeloc = 1;
|
|
driverTable->commMast = 1;
|
|
driverTable->ins = 1;
|
|
driverTable->ntp = 1;
|
|
driverTable->inputWaterSensor1 = 1;
|
|
driverTable->inputWaterSensor2 = 1;
|
|
driverTable->inputWaterSensor3 = 1;
|
|
|
|
//关闭所有负载
|
|
driverTable->photoSensor = 0;
|
|
driverTable->electSensor = 0;
|
|
driverTable->launchControler = 0;
|
|
driverTable->sideSonar = 0;
|
|
driverTable->buoyage = 0;
|
|
//关闭所有水声设备
|
|
driverTable->singleBeamSonar1 = 0;
|
|
driverTable->singleBeamSonar2 = 0;
|
|
driverTable->singleBeamSonar3 = 0;
|
|
driverTable->singleBeamSonar4 = 0;
|
|
driverTable->singleBeamSonar5 = 0;
|
|
driverTable->singleBeamSonar6 = 0;
|
|
driverTable->singleBeamSonar7 = 0;
|
|
driverTable->singleBeamSonar8 = 0;
|
|
driverTable->DVL = 0;
|
|
driverTable->forwardSonar = 0;
|
|
driverTable->lowFreqSonar = 0;
|
|
driverTable->USBL = 0;
|
|
//关闭所有执行机构
|
|
driverTable->bowCover1 = 0;
|
|
driverTable->bowCover2 = 0;
|
|
driverTable->bowCover3 = 0;
|
|
driverTable->bowCover4 = 0;
|
|
driverTable->bowCover5 = 0;
|
|
driverTable->bowCover6 = 0;
|
|
driverTable->bowRudderDeploy = 0;
|
|
driverTable->bowRudderServo1 = 0;
|
|
driverTable->bowRudderServo2 = 0;
|
|
driverTable->bowWaterInet1 = 0;
|
|
driverTable->bowWaterInet2 = 0;
|
|
driverTable->bowWaterInet3 = 0;
|
|
driverTable->bowWaterInet4 = 0;
|
|
driverTable->bowWaterInet5 = 0;
|
|
driverTable->bowWaterInet6 = 0;
|
|
driverTable->bowWaterInet7 = 0;
|
|
driverTable->bowWaterInet8 = 0;
|
|
driverTable->waterInject = 0;
|
|
driverTable->mastLiftingServo = 0;
|
|
driverTable->buoyancyAdjust1 = 0;
|
|
driverTable->buoyancyAdjust2 = 0;
|
|
driverTable->buoyancyAdjust3 = 0;
|
|
driverTable->buoyancyAdjust4 = 0;
|
|
driverTable->buoyancyAdjust5 = 0;
|
|
driverTable->sternRudderServo1 = 0;
|
|
driverTable->sternRudderServo2 = 0;
|
|
driverTable->sternRudderServo3 = 0;
|
|
driverTable->sternRudderServo4 = 0;
|
|
driverTable->thruster = 0;
|
|
driverTable->bowThrow = 0;
|
|
driverTable->sternThrow = 0;
|
|
}
|
|
|
|
void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = 1;
|
|
driverTable->depth2 = 1;
|
|
driverTable->depth3 = 1;
|
|
driverTable->overDeep1 = 1;
|
|
driverTable->overDeep2 = 1;
|
|
driverTable->ctd1 = 1;
|
|
driverTable->ctd2 = 1;
|
|
driverTable->soundVeloc = 1;
|
|
driverTable->commMast = 1;
|
|
driverTable->ins = 1;
|
|
driverTable->ntp = 1;
|
|
driverTable->inputWaterSensor1 = 1;
|
|
driverTable->inputWaterSensor2 = 1;
|
|
driverTable->inputWaterSensor3 = 1;
|
|
|
|
// 允许启动负载
|
|
// 关闭xcz
|
|
driverTable->photoSensor = 0;
|
|
driverTable->electSensor = 0;
|
|
driverTable->launchControler = 0;
|
|
driverTable->sideSonar = 0;
|
|
driverTable->buoyage = 0;
|
|
|
|
// 关闭所有水声设备
|
|
driverTable->singleBeamSonar1 = 0;
|
|
driverTable->singleBeamSonar2 = 0;
|
|
driverTable->singleBeamSonar3 = 0;
|
|
driverTable->singleBeamSonar4 = 0;
|
|
driverTable->singleBeamSonar5 = 0;
|
|
driverTable->singleBeamSonar6 = 0;
|
|
driverTable->singleBeamSonar7 = 0;
|
|
driverTable->singleBeamSonar8 = 0;
|
|
driverTable->DVL = 0;
|
|
driverTable->forwardSonar = 0;
|
|
driverTable->lowFreqSonar = 0;
|
|
driverTable->USBL = 0;
|
|
|
|
// 打开必要的执行机构
|
|
driverTable->bowCover1 = 1;
|
|
driverTable->bowCover2 = 1;
|
|
driverTable->bowCover3 = 1;
|
|
driverTable->bowCover4 = 1;
|
|
driverTable->bowCover5 = 1;
|
|
driverTable->bowCover6 = 1;
|
|
driverTable->bowRudderDeploy = 1;
|
|
driverTable->bowRudderServo1 = 1;
|
|
driverTable->bowRudderServo2 = 1;
|
|
driverTable->bowWaterInet1 = 1;
|
|
driverTable->bowWaterInet2 = 1;
|
|
driverTable->bowWaterInet3 = 1;
|
|
driverTable->bowWaterInet4 = 1;
|
|
driverTable->bowWaterInet5 = 1;
|
|
driverTable->bowWaterInet6 = 1;
|
|
driverTable->bowWaterInet7 = 1;
|
|
driverTable->bowWaterInet8 = 1;
|
|
driverTable->waterInject = 1;
|
|
driverTable->mastLiftingServo = 1;
|
|
driverTable->buoyancyAdjust1 = 1;
|
|
driverTable->buoyancyAdjust2 = 1;
|
|
driverTable->buoyancyAdjust3 = 1;
|
|
driverTable->buoyancyAdjust4 = 1;
|
|
driverTable->buoyancyAdjust5 = 1;
|
|
driverTable->sternRudderServo1 = 1;
|
|
driverTable->sternRudderServo2 = 1;
|
|
driverTable->sternRudderServo3 = 1;
|
|
driverTable->sternRudderServo4 = 1;
|
|
driverTable->thruster = 1;
|
|
driverTable->bowThrow = 1;
|
|
driverTable->sternThrow = 1;
|
|
}
|
|
|
|
void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = 1;
|
|
driverTable->depth2 = 1;
|
|
driverTable->depth3 = 1;
|
|
driverTable->overDeep1 = 1;
|
|
driverTable->overDeep2 = 1;
|
|
driverTable->ctd1 = 1;
|
|
driverTable->ctd2 = 1;
|
|
driverTable->soundVeloc = 1;
|
|
driverTable->commMast = 1;
|
|
driverTable->ins = 1;
|
|
driverTable->ntp = 1;
|
|
driverTable->inputWaterSensor1 = 1;
|
|
driverTable->inputWaterSensor2 = 1;
|
|
driverTable->inputWaterSensor3 = 1;
|
|
|
|
// 允许启动负载
|
|
driverTable->photoSensor = 0;
|
|
driverTable->electSensor = 0;
|
|
driverTable->launchControler = 0;
|
|
driverTable->sideSonar = 0;
|
|
driverTable->buoyage = 0;
|
|
|
|
// 所有水声设备待机
|
|
driverTable->singleBeamSonar1 = 0;
|
|
driverTable->singleBeamSonar2 = 0;
|
|
driverTable->singleBeamSonar3 = 0;
|
|
driverTable->singleBeamSonar4 = 0;
|
|
driverTable->singleBeamSonar5 = 0;
|
|
driverTable->singleBeamSonar6 = 0;
|
|
driverTable->singleBeamSonar7 = 0;
|
|
driverTable->singleBeamSonar8 = 0;
|
|
driverTable->DVL = 0;
|
|
driverTable->forwardSonar = 0;
|
|
driverTable->lowFreqSonar = 0;
|
|
driverTable->USBL = 0;
|
|
|
|
// 打开必要的执行机构
|
|
driverTable->bowCover1 = 1;
|
|
driverTable->bowCover2 = 1;
|
|
driverTable->bowCover3 = 1;
|
|
driverTable->bowCover4 = 1;
|
|
driverTable->bowCover5 = 1;
|
|
driverTable->bowCover6 = 1;
|
|
driverTable->bowRudderDeploy = 1;
|
|
driverTable->bowRudderServo1 = 1;
|
|
driverTable->bowRudderServo2 = 1;
|
|
driverTable->bowWaterInet1 = 1;
|
|
driverTable->bowWaterInet2 = 1;
|
|
driverTable->bowWaterInet3 = 1;
|
|
driverTable->bowWaterInet4 = 1;
|
|
driverTable->bowWaterInet5 = 1;
|
|
driverTable->bowWaterInet6 = 1;
|
|
driverTable->bowWaterInet7 = 1;
|
|
driverTable->bowWaterInet8 = 1;
|
|
driverTable->waterInject = 1;
|
|
driverTable->mastLiftingServo = 1;
|
|
driverTable->buoyancyAdjust1 = 1;
|
|
driverTable->buoyancyAdjust2 = 1;
|
|
driverTable->buoyancyAdjust3 = 1;
|
|
driverTable->buoyancyAdjust4 = 1;
|
|
driverTable->buoyancyAdjust5 = 1;
|
|
driverTable->sternRudderServo1 = 1;
|
|
driverTable->sternRudderServo2 = 1;
|
|
driverTable->sternRudderServo3 = 1;
|
|
driverTable->sternRudderServo4 = 1;
|
|
driverTable->thruster = 1;
|
|
driverTable->bowThrow = 1;
|
|
driverTable->sternThrow = 1;
|
|
}
|
|
|
|
void Driver::getCRUISE_MODEable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = 1;
|
|
driverTable->depth2 = 1;
|
|
driverTable->depth3 = 1;
|
|
driverTable->overDeep1 = 1;
|
|
driverTable->overDeep2 = 1;
|
|
driverTable->ctd1 = 1;
|
|
driverTable->ctd2 = 1;
|
|
driverTable->soundVeloc = 1;
|
|
driverTable->commMast = 1;
|
|
driverTable->ins = 1;
|
|
driverTable->ntp = 1;
|
|
driverTable->inputWaterSensor1 = 1;
|
|
driverTable->inputWaterSensor2 = 1;
|
|
driverTable->inputWaterSensor3 = 1;
|
|
|
|
// 所有负载设备关机
|
|
driverTable->photoSensor = 0;
|
|
driverTable->electSensor = 0;
|
|
driverTable->launchControler = 0;
|
|
driverTable->sideSonar = 0;
|
|
driverTable->buoyage = 0;
|
|
|
|
// 打开必要的执行机构
|
|
// 关闭非必要的执行机构
|
|
driverTable->bowCover1 = 0;
|
|
driverTable->bowCover2 = 0;
|
|
driverTable->bowCover3 = 0;
|
|
driverTable->bowCover4 = 0;
|
|
driverTable->bowCover5 = 0;
|
|
driverTable->bowCover6 = 0;
|
|
driverTable->bowRudderDeploy = 1;
|
|
driverTable->bowRudderServo1 = 1;
|
|
driverTable->bowRudderServo2 = 1;
|
|
driverTable->bowWaterInet1 = 0;
|
|
driverTable->bowWaterInet2 = 0;
|
|
driverTable->bowWaterInet3 = 0;
|
|
driverTable->bowWaterInet4 = 0;
|
|
driverTable->bowWaterInet5 = 0;
|
|
driverTable->bowWaterInet6 = 0;
|
|
driverTable->bowWaterInet7 = 0;
|
|
driverTable->bowWaterInet8 = 0;
|
|
driverTable->waterInject = 0;
|
|
driverTable->mastLiftingServo = 1;
|
|
driverTable->buoyancyAdjust1 = 1;
|
|
driverTable->buoyancyAdjust2 = 1;
|
|
driverTable->buoyancyAdjust3 = 1;
|
|
driverTable->buoyancyAdjust4 = 1;
|
|
driverTable->buoyancyAdjust5 = 1;
|
|
driverTable->sternRudderServo1 = 1;
|
|
driverTable->sternRudderServo2 = 1;
|
|
driverTable->sternRudderServo3 = 1;
|
|
driverTable->sternRudderServo4 = 1;
|
|
driverTable->thruster = 1;
|
|
driverTable->bowThrow = 1;
|
|
driverTable->sternThrow = 1;
|
|
}
|
|
|
|
|
|
void Driver::getHIGH_SPEED_MODEable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
|
|
|
|
// 所有负载设备关机
|
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
|
driverTable->launchControler = DRIVER_POWER_OFF;
|
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
|
|
|
// 打开必要的执行机构,只打开操纵机构
|
|
// 关闭非必要的执行机构
|
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
|
driverTable->mastLiftingServo = DRIVER_POWER_OFF;
|
|
driverTable->buoyancyAdjust1 = DRIVER_POWER_OFF;
|
|
driverTable->buoyancyAdjust2 = DRIVER_POWER_OFF;
|
|
driverTable->buoyancyAdjust3 = DRIVER_POWER_OFF;
|
|
driverTable->buoyancyAdjust4 = DRIVER_POWER_OFF;
|
|
driverTable->buoyancyAdjust5 = DRIVER_POWER_OFF;
|
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
|
}
|
|
|
|
// 上浮下潜与巡航模式一致
|
|
void Driver::getASCEND_DESCENDable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
|
|
|
|
// 所有负载设备关机
|
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
|
driverTable->launchControler = DRIVER_POWER_OFF;
|
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
|
|
|
// 打开必要的执行机构
|
|
// 关闭非必要的执行机构
|
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
|
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
|
}
|
|
|
|
// 浮标调整与巡航模式一致
|
|
void Driver::getBUOYANCY_ADJUSTable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
|
|
|
|
// 所有负载设备关机
|
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
|
driverTable->launchControler = DRIVER_POWER_OFF;
|
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
|
|
|
// 打开必要的执行机构
|
|
// 关闭非必要的执行机构
|
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
|
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
|
}
|
|
|
|
// 水下侦查
|
|
void Driver::getUNDERWATER_RECONable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
|
|
|
|
// 所有负载设备关机
|
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
|
driverTable->launchControler = DRIVER_POWER_OFF;
|
|
driverTable->sideSonar = DRIVER_STANDBY;
|
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
|
|
|
// 打开必要的执行机构
|
|
// 关闭非必要的执行机构
|
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
|
driverTable->mastLiftingServo = DRIVER_POWER_OFF;
|
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
|
}
|
|
|
|
// 水面探测
|
|
void Driver::getSURFACE_RECONable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
|
|
|
|
// 所有负载设备关机
|
|
driverTable->photoSensor = DRIVER_STANDBY;
|
|
driverTable->electSensor = DRIVER_STANDBY;
|
|
driverTable->launchControler = DRIVER_POWER_OFF;
|
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
|
driverTable->buoyage = DRIVER_POWER_OFF;
|
|
|
|
// 打开必要的执行机构
|
|
// 关闭非必要的执行机构
|
|
driverTable->bowCover1 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover2 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover3 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover4 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover5 = DRIVER_POWER_OFF;
|
|
driverTable->bowCover6 = DRIVER_POWER_OFF;
|
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet1 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet2 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet3 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet4 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet5 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet6 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet7 = DRIVER_POWER_OFF;
|
|
driverTable->bowWaterInet8 = DRIVER_POWER_OFF;
|
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
|
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
|
}
|
|
|
|
void Driver::getDJ_MODEable(DriverTable* driverTable)
|
|
{
|
|
// 打开所有传感器
|
|
driverTable->depth1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->depth3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->overDeep2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->ctd2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->soundVeloc = DRIVER_FULL_POWER_ON;
|
|
driverTable->commMast = DRIVER_FULL_POWER_ON;
|
|
driverTable->ins = DRIVER_FULL_POWER_ON;
|
|
driverTable->ntp = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->inputWaterSensor3 = DRIVER_FULL_POWER_ON;
|
|
|
|
// 所有负载设备关机
|
|
driverTable->photoSensor = DRIVER_POWER_OFF;
|
|
driverTable->electSensor = DRIVER_POWER_OFF;
|
|
driverTable->launchControler = DRIVER_FULL_POWER_ON;
|
|
driverTable->sideSonar = DRIVER_POWER_OFF;
|
|
driverTable->buoyage = DRIVER_STANDBY;
|
|
|
|
// 打开必要的执行机构
|
|
// 关闭非必要的执行机构
|
|
driverTable->bowCover1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowCover2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowCover3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowCover4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowCover5 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowCover6 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet5 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet6 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet7 = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowWaterInet8 = DRIVER_FULL_POWER_ON;
|
|
driverTable->waterInject = DRIVER_POWER_OFF;
|
|
driverTable->mastLiftingServo = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->buoyancyAdjust5 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo1 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo2 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo3 = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternRudderServo4 = DRIVER_FULL_POWER_ON;
|
|
driverTable->thruster = DRIVER_FULL_POWER_ON;
|
|
driverTable->bowThrow = DRIVER_FULL_POWER_ON;
|
|
driverTable->sternThrow = DRIVER_FULL_POWER_ON;
|
|
}
|
|
|
|
std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
|
|
{
|
|
Json::Value root;
|
|
|
|
// 添加所有成员到json
|
|
root["depth1_uint8"] = driverTable->depth1;
|
|
root["depth2_uint8"] = driverTable->depth2;
|
|
root["depth3_uint8"] = driverTable->depth3;
|
|
root["overDeep1_uint8"] = driverTable->overDeep1;
|
|
root["overDeep2_uint8"] = driverTable->overDeep2;
|
|
root["ctd1_uint8"] = driverTable->ctd1;
|
|
root["ctd2_uint8"] = driverTable->ctd2;
|
|
root["soundVeloc_uint8"] = driverTable->soundVeloc;
|
|
root["commDev_uint8"] = driverTable->commMast;
|
|
root["ins_uint8"] = driverTable->ins;
|
|
root["ntp_uint8"] = driverTable->ntp;
|
|
root["inputWaterSensor1_uint8"] = driverTable->inputWaterSensor1;
|
|
root["inputWaterSensor2_uint8"] = driverTable->inputWaterSensor2;
|
|
root["inputWaterSensor3_uint8"] = driverTable->inputWaterSensor3;
|
|
|
|
root["singleBeamSonar1_uint8"] = driverTable->singleBeamSonar1;
|
|
root["singleBeamSonar2_uint8"] = driverTable->singleBeamSonar2;
|
|
root["singleBeamSonar3_uint8"] = driverTable->singleBeamSonar3;
|
|
root["singleBeamSonar4_uint8"] = driverTable->singleBeamSonar4;
|
|
root["singleBeamSonar5_uint8"] = driverTable->singleBeamSonar5;
|
|
root["singleBeamSonar6_uint8"] = driverTable->singleBeamSonar6;
|
|
root["singleBeamSonar7_uint8"] = driverTable->singleBeamSonar7;
|
|
root["singleBeamSonar8_uint8"] = driverTable->singleBeamSonar8;
|
|
root["forwardSonar_uint8"] = driverTable->forwardSonar;
|
|
root["DVL_uint8"] = driverTable->DVL;
|
|
root["lowFreqSonar_uint8"] = driverTable->lowFreqSonar;
|
|
root["USBL_uint8"] = driverTable->USBL;
|
|
root["bowCover1_uint8"] = driverTable->bowCover1;
|
|
root["bowCover2_uint8"] = driverTable->bowCover2;
|
|
root["bowCover3_uint8"] = driverTable->bowCover3;
|
|
root["bowCover4_uint8"] = driverTable->bowCover4;
|
|
root["bowCover5_uint8"] = driverTable->bowCover5;
|
|
root["bowCover6_uint8"] = driverTable->bowCover6;
|
|
root["bowRudderDeploy_uint8"] = driverTable->bowRudderDeploy;
|
|
root["bowRudderServo1_uint8"] = driverTable->bowRudderServo1;
|
|
root["bowRudderServo2_uint8"] = driverTable->bowRudderServo2;
|
|
root["bowWaterInet1_uint8"] = driverTable->bowWaterInet1;
|
|
root["bowWaterInet2_uint8"] = driverTable->bowWaterInet2;
|
|
root["bowWaterInet3_uint8"] = driverTable->bowWaterInet3;
|
|
root["bowWaterInet4_uint8"] = driverTable->bowWaterInet4;
|
|
root["bowWaterInet5_uint8"] = driverTable->bowWaterInet5;
|
|
root["bowWaterInet6_uint8"] = driverTable->bowWaterInet6;
|
|
root["bowWaterInet7_uint8"] = driverTable->bowWaterInet7;
|
|
root["bowWaterInet8_uint8"] = driverTable->bowWaterInet8;
|
|
root["waterInject_uint8"] = driverTable->waterInject;
|
|
root["mastLiftingServo_uint8"] = driverTable->mastLiftingServo;
|
|
root["buoyancyAdjust1_uint8"] = driverTable->buoyancyAdjust1;
|
|
root["buoyancyAdjust2_uint8"] = driverTable->buoyancyAdjust2;
|
|
root["buoyancyAdjust3_uint8"] = driverTable->buoyancyAdjust3;
|
|
root["buoyancyAdjust4_uint8"] = driverTable->buoyancyAdjust4;
|
|
root["buoyancyAdjust5_uint8"] = driverTable->buoyancyAdjust5;
|
|
root["sternRudderServo1_uint8"] = driverTable->sternRudderServo1;
|
|
root["sternRudderServo2_uint8"] = driverTable->sternRudderServo2;
|
|
root["sternRudderServo3_uint8"] = driverTable->sternRudderServo3;
|
|
root["sternRudderServo4_uint8"] = driverTable->sternRudderServo4;
|
|
root["thruster_uint8"] = driverTable->thruster;
|
|
root["bowThrow_uint8"] = driverTable->bowThrow;
|
|
root["sternThrow_uint8"] = driverTable->sternThrow;
|
|
root["photoSensor_uint8"] = driverTable->photoSensor;
|
|
root["electSensor_uint8"] = driverTable->electSensor;
|
|
root["launchControler_uint8"] = driverTable->launchControler;
|
|
root["sideSonar_uint8"] = driverTable->sideSonar;
|
|
root["buoyage_uint8"] = driverTable->buoyage;
|
|
return root.toStyledString();
|
|
}
|
|
std::string Driver::getDriverTableJson()
|
|
{
|
|
return saveDriverTableToJson(currentDriverTable);
|
|
}
|
|
|
|
std::string Driver::getSubDisCmdJson(const DriverTable* driverTable)
|
|
{
|
|
return saveDriverTableToJson(currentDriverTable);
|
|
}
|
|
|
|
std::string Driver::getDriveStateJson(const DriverTable* driverTable)
|
|
{
|
|
return saveDriverTableToJson(currentDriverTable);
|
|
}
|
|
|
|
|
|
int Driver::SafeReadUInt(const Json::Value& root, const std::string& key, unsigned char& value) {
|
|
if (!root.isMember(key)) {
|
|
// std::cerr << "错误: 缺少字段 " << key << std::endl;
|
|
return -1; // 返回-1表示缺少字段
|
|
}
|
|
|
|
if (!root[key].isUInt()) {
|
|
std::cerr << "错误: 字段 " << key << " 数据类型不正确,应为无符号整数" << std::endl;
|
|
return -2; // 返回-2表示数据类型错误
|
|
}
|
|
|
|
value = root[key].asUInt();
|
|
return 0; // 成功读取
|
|
}
|
|
|
|
vector<DriverCommand> Driver::loadDriverIdFromJson(const std::string &strJson) {
|
|
Json::CharReaderBuilder builder;
|
|
Json::Value root;
|
|
std::string errs;
|
|
vector<DriverCommand> driverCmd;
|
|
|
|
// 解析JSON字符串
|
|
std::istringstream s(strJson);
|
|
if (!Json::parseFromStream(builder, s, &root, &errs)) {
|
|
std::cerr << "JSON解析失败: " << errs << std::endl;
|
|
return driverCmd;
|
|
}
|
|
// 设备字段名到ID的映射
|
|
const std::map<std::string, int> fieldToId = {
|
|
{"depth1_uint8", 18}, {"depth2_uint8", 19}, {"depth3_uint8", 20},
|
|
{"overDeep1_uint8", 21}, {"overDeep2_uint8", 22},
|
|
{"ctd1_uint8", 23}, {"ctd2_uint8", 24}, {"soundVeloc_uint8", 25},
|
|
{"commDev_uint8", 40}, {"ins_uint8", 57}, {"ntp_uint8", 58},
|
|
{"inputWaterSensor1_uint8", 59}, {"inputWaterSensor2_uint8", 60}, {"inputWaterSensor3_uint8", 61},
|
|
{"singleBeamSonar1_uint8", 0}, {"singleBeamSonar2_uint8", 1}, {"singleBeamSonar3_uint8", 2},
|
|
{"singleBeamSonar4_uint8", 3}, {"singleBeamSonar5_uint8", 4}, {"singleBeamSonar6_uint8", 5},
|
|
{"singleBeamSonar7_uint8", 6}, {"singleBeamSonar8_uint8", 7}, {"forwardSonar_uint8", 8},
|
|
{"DVL_uint8", 43}, {"lowFreqSonar_uint8", 36}, {"USBL_uint8", 42},
|
|
{"bowCover1_uint8", 9}, {"bowCover2_uint8", 10}, {"bowCover3_uint8", 11},
|
|
{"bowCover4_uint8", 12}, {"bowCover5_uint8", 13}, {"bowCover6_uint8", 14},
|
|
{"bowRudderDeploy_uint8", 15}, {"bowRudderServo1_uint8", 16}, {"bowRudderServo2_uint8", 17},
|
|
{"bowWaterInet1_uint8", 27}, {"bowWaterInet2_uint8", 28}, {"bowWaterInet3_uint8", 29},
|
|
{"bowWaterInet4_uint8", 30}, {"bowWaterInet5_uint8", 31}, {"bowWaterInet6_uint8", 32},
|
|
{"bowWaterInet7_uint8", 33}, {"bowWaterInet8_uint8", 34}, {"waterInject_uint8", 26},
|
|
{"mastLiftingServo_uint8_uint8", 41}, {"buoyancyAdjust1_uint8", 44}, {"buoyancyAdjust2_uint8", 45},
|
|
{"buoyancyAdjust3_uint8", 46}, {"buoyancyAdjust4_uint8", 47}, {"buoyancyAdjust5_uint8", 48},
|
|
{"sternRudderServo1_uint8", 49}, {"sternRudderServo2_uint8", 50}, {"sternRudderServo3_uint8", 51},
|
|
{"sternRudderServo4_uint8", 52}, {"thruster_uint8", 53}, {"bowThrow_uint8", 54},
|
|
{"sternThrow_uint8", 55}, {"photoSensor_uint8", 38}, {"electSensor_uint8", 39},
|
|
{"launchControler_uint8", 37}, {"sideSonar_uint8", 35}, {"buoyage_uint8", 56}
|
|
};
|
|
|
|
for (const auto& [field, id] : fieldToId) {
|
|
if (root.isMember(field)) {
|
|
unsigned char newValue = root[field].asUInt();
|
|
DriverCommand cmd;
|
|
cmd.id = id;
|
|
cmd.cmd = newValue;
|
|
driverCmd.push_back(cmd);
|
|
}
|
|
}
|
|
|
|
return driverCmd;
|
|
}
|
|
|
|
int Driver::loadDriverTableFromJson(const std::string &strJson, DriverTable& table)
|
|
{
|
|
Json::CharReaderBuilder builder;
|
|
Json::Value root;
|
|
std::string errs;
|
|
|
|
// 解析JSON字符串
|
|
std::istringstream s(strJson);
|
|
if (!Json::parseFromStream(builder, s, &root, &errs))
|
|
{
|
|
std::cerr << "JSON解析失败: " << errs << std::endl;
|
|
return -3; // 解析失败
|
|
|
|
}
|
|
// 读取 JSON 数据并填充结构体,逐个字段检查
|
|
int error_code = 0;
|
|
|
|
error_code = SafeReadUInt(root, "depth1_uint8", table.depth1);
|
|
|
|
error_code = SafeReadUInt(root, "depth2_uint8", table.depth2);
|
|
|
|
error_code = SafeReadUInt(root, "depth3_uint8", table.depth3);
|
|
|
|
// error_code = SafeReadUInt(root, "overDeep1_uint8", table.overDeep1);
|
|
// if (error_code != 0) return error_code;
|
|
|
|
// error_code = SafeReadUInt(root, "overDeep2_uint8", table.overDeep2);
|
|
// if (error_code != 0) return error_code;
|
|
|
|
error_code = SafeReadUInt(root, "ctd1_uint8", table.ctd1);
|
|
|
|
error_code = SafeReadUInt(root, "ctd2_uint8", table.ctd2);
|
|
|
|
error_code = SafeReadUInt(root, "soundVeloc_uint8", table.soundVeloc);
|
|
|
|
error_code = SafeReadUInt(root, "commDev_uint8", table.commMast);
|
|
|
|
error_code = SafeReadUInt(root, "ins_uint8", table.ins);
|
|
|
|
error_code = SafeReadUInt(root, "ntp_uint8", table.ntp);
|
|
|
|
error_code = SafeReadUInt(root, "inputWaterSensor1_uint8", table.inputWaterSensor1);
|
|
|
|
error_code = SafeReadUInt(root, "inputWaterSensor2_uint8", table.inputWaterSensor2);
|
|
|
|
error_code = SafeReadUInt(root, "inputWaterSensor3_uint8", table.inputWaterSensor3);
|
|
|
|
// 水声设备
|
|
error_code = SafeReadUInt(root, "singleBeamSonar1_uint8", table.singleBeamSonar1);
|
|
|
|
error_code = SafeReadUInt(root, "singleBeamSonar2_uint8", table.singleBeamSonar2);
|
|
|
|
error_code = SafeReadUInt(root, "singleBeamSonar3_uint8", table.singleBeamSonar3);
|
|
|
|
error_code = SafeReadUInt(root, "singleBeamSonar4_uint8", table.singleBeamSonar4);
|
|
|
|
error_code = SafeReadUInt(root, "singleBeamSonar5_uint8", table.singleBeamSonar5);
|
|
|
|
error_code = SafeReadUInt(root, "singleBeamSonar6_uint8", table.singleBeamSonar6);
|
|
|
|
error_code = SafeReadUInt(root, "singleBeamSonar7_uint8", table.singleBeamSonar7);
|
|
|
|
error_code = SafeReadUInt(root, "singleBeamSonar8_uint8", table.singleBeamSonar8);
|
|
|
|
error_code = SafeReadUInt(root, "forwardSonar_uint8", table.forwardSonar);
|
|
|
|
error_code = SafeReadUInt(root, "DVL_uint8", table.DVL);
|
|
|
|
error_code = SafeReadUInt(root, "lowFreqSonar_uint8", table.lowFreqSonar);
|
|
|
|
error_code = SafeReadUInt(root, "USBL_uint8", table.USBL);
|
|
|
|
// 执行机构
|
|
error_code = SafeReadUInt(root, "bowWaterInet1_uint8", table.bowWaterInet1);
|
|
|
|
error_code = SafeReadUInt(root, "bowWaterInet2_uint8", table.bowWaterInet2);
|
|
|
|
error_code = SafeReadUInt(root, "bowWaterInet3_uint8", table.bowWaterInet3);
|
|
|
|
error_code = SafeReadUInt(root, "bowWaterInet4_uint8", table.bowWaterInet4);
|
|
|
|
error_code = SafeReadUInt(root, "bowWaterInet5_uint8", table.bowWaterInet5);
|
|
|
|
error_code = SafeReadUInt(root, "bowWaterInet6_uint8", table.bowWaterInet6);
|
|
|
|
error_code = SafeReadUInt(root, "bowWaterInet7_uint8", table.bowWaterInet7);
|
|
|
|
error_code = SafeReadUInt(root, "bowWaterInet8_uint8", table.bowWaterInet8);
|
|
|
|
error_code = SafeReadUInt(root, "bowRudderDeploy_uint8", table.bowRudderDeploy);
|
|
|
|
error_code = SafeReadUInt(root, "bowRudderServo1_uint8", table.bowRudderServo1);
|
|
|
|
error_code = SafeReadUInt(root, "bowRudderServo2_uint8", table.bowRudderServo2);
|
|
|
|
error_code = SafeReadUInt(root, "bowCover1_uint8", table.bowCover1);
|
|
|
|
error_code = SafeReadUInt(root, "bowCover2_uint8", table.bowCover2);
|
|
|
|
error_code = SafeReadUInt(root, "bowCover3_uint8", table.bowCover3);
|
|
|
|
error_code = SafeReadUInt(root, "bowCover4_uint8", table.bowCover4);
|
|
|
|
error_code = SafeReadUInt(root, "bowCover5_uint8", table.bowCover5);
|
|
|
|
error_code = SafeReadUInt(root, "bowCover6_uint8", table.bowCover6);
|
|
|
|
error_code = SafeReadUInt(root, "waterInject_uint8", table.waterInject);
|
|
|
|
error_code = SafeReadUInt(root, "mastLiftingServo_uint8", table.mastLiftingServo);
|
|
|
|
error_code = SafeReadUInt(root, "buoyancyAdjust1_uint8", table.buoyancyAdjust1);
|
|
|
|
error_code = SafeReadUInt(root, "buoyancyAdjust2_uint8", table.buoyancyAdjust2);
|
|
|
|
error_code = SafeReadUInt(root, "buoyancyAdjust3_uint8", table.buoyancyAdjust3);
|
|
|
|
error_code = SafeReadUInt(root, "buoyancyAdjust4_uint8", table.buoyancyAdjust4);
|
|
|
|
error_code = SafeReadUInt(root, "buoyancyAdjust5_uint8", table.buoyancyAdjust5);
|
|
|
|
error_code = SafeReadUInt(root, "sternRudderServo1_uint8", table.sternRudderServo1);
|
|
|
|
error_code = SafeReadUInt(root, "sternRudderServo2_uint8", table.sternRudderServo2);
|
|
|
|
error_code = SafeReadUInt(root, "sternRudderServo3_uint8", table.sternRudderServo3);
|
|
|
|
error_code = SafeReadUInt(root, "sternRudderServo4_uint8", table.sternRudderServo4);
|
|
|
|
error_code = SafeReadUInt(root, "thruster_uint8", table.thruster);
|
|
|
|
error_code = SafeReadUInt(root, "bowThrow_uint8", table.bowThrow);
|
|
|
|
error_code = SafeReadUInt(root, "sternThrow_uint8", table.sternThrow);
|
|
|
|
// 负载
|
|
error_code = SafeReadUInt(root, "photoSensor_uint8", table.photoSensor);
|
|
|
|
error_code = SafeReadUInt(root, "electSensor_uint8", table.electSensor);
|
|
|
|
error_code = SafeReadUInt(root, "launchControler_uint8", table.launchControler);
|
|
|
|
error_code = SafeReadUInt(root, "sideSonar_uint8", table.sideSonar);
|
|
|
|
error_code = SafeReadUInt(root, "buoyage_uint8", table.buoyage);
|
|
|
|
return 0; // 返回0表示所有数据成功读取
|
|
} |