增加了交互变量的状态,增加了设备状态和设备表的json解析和生成函数,修复了设备表类和通信协议中不同的地方

This commit is contained in:
zjk
2025-02-19 17:18:39 +08:00
parent 5b9934c6f2
commit 75575f935c
10 changed files with 724 additions and 346 deletions
+58 -57
View File
@@ -161,6 +161,10 @@ bool PowerManger::Iterate()
//c. 上位机反馈
buildPowerSysReport();
}
///////////////////////
string a = m_driver.getSubDisCmdJson(&m_subDisSysCmd);
saveStringToJsonFile(a,"/home/zjk/project/H100/H100PowerManger/data/subDisSysCmd.json");
///////////////////////
//4. 打印错误信息
if(!m_udpComm.sError.empty())
{
@@ -353,6 +357,23 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus1State = m_disHighVolBusCurrentState.data;
m_db->insertDisHighVolBusData(m_disHighVolBusCurrentState.data); //写入数据库
msg_disHighVolBusFbMsg_Update_time = time;
disBus1Breaker* pdis1=new disBus1Breaker;
(m_pmCurrentState.bus1State.fuelCellCircuitBreaker == BREAK_ON) ? pdis1 -> fuelCellCircuitBreaker = 1 : pdis1 -> fuelCellCircuitBreaker = 0;
(m_pmCurrentState.bus1State.powerLithiumBatteryCircuitBreaker == BREAK_ON) ? pdis1 -> powerLithiumBatteryCircuitBreaker = 1 : pdis1 -> powerLithiumBatteryCircuitBreaker = 0;
(m_pmCurrentState.bus1State.propulsionMotorCircuitBreaker == BREAK_ON) ? pdis1 -> propulsionMotorCircuitBreaker = 1 : pdis1 -> propulsionMotorCircuitBreaker = 0;
(m_pmCurrentState.bus1State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON) ? pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
(m_pmCurrentState.bus1State.dcDc5ModuleCircuitBreaker == BREAK_ON) ? pdis1 -> dcDc5ModuleCircuitBreaker = 1 : pdis1 -> dcDc5ModuleCircuitBreaker = 0;
(m_pmCurrentState.bus1State.bowHighVoltageDistributionBoxCircuitBreaker == BREAK_ON) ? pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 1 : pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 0;
(m_pmCurrentState.bus1State.sternFTDevice45CircuitBreaker == BREAK_ON) ? pdis1 -> sternFTDevice45CircuitBreaker = 1 : pdis1 -> sternFTDevice45CircuitBreaker = 0;
(m_pmCurrentState.bus1State.sternRudderSwitch1CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch1CircuitBreaker = 1 : pdis1 -> sternRudderSwitch1CircuitBreaker = 0;
(m_pmCurrentState.bus1State.sternRudderSwitch2CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch2CircuitBreaker = 1 : pdis1 -> sternRudderSwitch2CircuitBreaker = 0;
(m_pmCurrentState.bus1State.fbReservedCircuitBreaker == BREAK_ON) ? pdis1 -> fbReservedCircuitBreaker = 1 : pdis1 -> fbReservedCircuitBreaker = 0;
(m_pmCurrentState.bus1State.tyzReservedCircuitBreaker == BREAK_ON) ? pdis1 -> tyzReservedCircuitBreaker = 1 : pdis1 -> tyzReservedCircuitBreaker = 0;
(m_pmCurrentState.bus1State.reservedCircuitBreaker == BREAK_ON) ? pdis1 -> reservedCircuitBreaker = 1 : pdis1 -> reservedCircuitBreaker = 0;
pdis1 -> paceholder = 0;
m_currentDisBreakerState.bus1Breaker = *pdis1;
delete pdis1;
}
if(!m_udpComm.m_qReceiveDisHighAVolBusBuffer.empty())
{
@@ -361,6 +382,17 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus2State = m_disHighAVolBusCurrentState.data;
m_db->insertDisHighAVolBusData(m_disHighAVolBusCurrentState.data); //写入数据库
msg_disHighAVolBusFbMsg_Update_time = time;
disBus2Breaker* pdis2=new disBus2Breaker;
(m_pmCurrentState.bus2State.bowFTDevice123CircuitBreaker == BREAK_ON)? pdis2 -> bowFTDevice123CircuitBreaker = 1 : pdis2 -> bowFTDevice123CircuitBreaker = 0;
(m_pmCurrentState.bus2State.actuatorCircuitBreaker == BREAK_ON)? pdis2 -> actuatorCircuitBreaker = 1 : pdis2 -> actuatorCircuitBreaker = 0;
(m_pmCurrentState.bus2State.mastSteeringGearControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 1 : pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 0;
(m_pmCurrentState.bus2State.xczCircuitBreaker == BREAK_ON)? pdis2 -> xczCircuitBreaker = 1 : pdis2 -> xczCircuitBreaker = 0;
(m_pmCurrentState.bus2State.bowRudderControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> bowRudderControlBoxCircuitBreaker = 1 : pdis2 -> bowRudderControlBoxCircuitBreaker = 0;
(m_pmCurrentState.bus2State.openWaterCoverStartCylinderCircuitBreaker == BREAK_ON)? pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 1 : pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 0;
pdis2 -> paceholder = 0;
m_currentDisBreakerState.bus2Breaker = *pdis2;
delete pdis2;
}
if(!m_udpComm.m_qReceiveDisHighBVolBusBuffer.empty())
{
@@ -369,6 +401,18 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus3State = m_disHighBVolBusCurrentState.data;
m_db->insertDisHighBVolBusData(m_disHighBVolBusCurrentState.data); //写入数据库
msg_disHighBVolBusFbMsg_Update_time = time;
disBus3Breaker* pdis3=new disBus3Breaker;
(m_pmCurrentState.bus3State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON)? pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
(m_pmCurrentState.bus3State.bowLowVoltageDistributionBoxCircuitBreaker == BREAK_ON)? pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 1 : pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 0;
(m_pmCurrentState.bus3State.unit4InstrumentDC48VCircuitBreaker == BREAK_ON)? pdis3 -> unit4InstrumentDC48VCircuitBreaker = 1 : pdis3 -> unit4InstrumentDC48VCircuitBreaker = 0;
(m_pmCurrentState.bus3State.dcC1DCDistributionPanelCircuitBreaker == BREAK_ON)? pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 1 : pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 0;
(m_pmCurrentState.bus3State.reservedCircuitBreaker1 == BREAK_ON)? pdis3 -> reservedCircuitBreaker1 = 1 : pdis3 -> reservedCircuitBreaker1 = 0;
(m_pmCurrentState.bus3State.reservedCircuitBreaker2 == BREAK_ON)? pdis3 -> reservedCircuitBreaker2 = 1 : pdis3 -> reservedCircuitBreaker2 = 0;
(m_pmCurrentState.bus3State.emergencyLithiumBatteryGroup2CircuitBreaker == BREAK_ON)? pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 1 : pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 0;
pdis3->paceholder = 0;
m_currentDisBreakerState.bus3Breaker = *pdis3;
delete pdis3;
}
if(!m_udpComm.m_qReceiveDisLowBusBuffer.empty())
{
@@ -377,6 +421,19 @@ bool PowerManger::updatePmState()
m_pmCurrentState.bus4State = m_disLowBusState.data;
m_db->insertDisLowBusData(m_disLowBusState.data); //写入数据库
msg_disLowBusFbMsg_Update_time = time;
disBus4Breaker* pdis4=new disBus4Breaker;
(m_pmCurrentState.bus4State.unit1CircuitBreaker == BREAK_ON)? pdis4 -> unit1CircuitBreaker = 1 : pdis4 -> unit1CircuitBreaker = 0;
(m_pmCurrentState.bus4State.unit2CircuitBreaker == BREAK_ON)? pdis4 -> unit2CircuitBreaker = 1 : pdis4 -> unit2CircuitBreaker = 0;
(m_pmCurrentState.bus4State.unit3CircuitBreaker == BREAK_ON)? pdis4 -> unit3CircuitBreaker = 1 : pdis4 -> unit3CircuitBreaker = 0;
(m_pmCurrentState.bus4State.unit5CircuitBreaker == BREAK_ON)? pdis4 -> unit5CircuitBreaker = 1 : pdis4 -> unit5CircuitBreaker = 0;
(m_pmCurrentState.bus4State.bowPZDeviceCircuitBreaker == BREAK_ON)? pdis4 -> bowPZDeviceCircuitBreaker = 1 : pdis4 -> bowPZDeviceCircuitBreaker = 0;
(m_pmCurrentState.bus4State.reservedCircuitBreaker1 == BREAK_ON)? pdis4 -> reservedCircuitBreaker1 = 1 : pdis4 -> reservedCircuitBreaker1 = 0;
(m_pmCurrentState.bus4State.reservedCircuitBreaker2 == BREAK_ON)? pdis4 -> reservedCircuitBreaker2 = 1 : pdis4 -> reservedCircuitBreaker2 = 0;
(m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1CircuitBreaker == BREAK_ON)? pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 1 : pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 0;
pdis4 -> paceholder = 0;
m_currentDisBreakerState.bus4Breaker = *pdis4;
delete pdis4;
}
return true;
}
@@ -400,63 +457,8 @@ void PowerManger::ccuOption()
}
void PowerManger::disSysOption()
{
//1.更新断路器的状态
disBus1Breaker* pdis1=new disBus1Breaker;
(m_pmCurrentState.bus1State.fuelCellCircuitBreaker == BREAK_ON) ? pdis1 -> fuelCellCircuitBreaker = 1 : pdis1 -> fuelCellCircuitBreaker = 0;
(m_pmCurrentState.bus1State.powerLithiumBatteryCircuitBreaker == BREAK_ON) ? pdis1 -> powerLithiumBatteryCircuitBreaker = 1 : pdis1 -> powerLithiumBatteryCircuitBreaker = 0;
(m_pmCurrentState.bus1State.propulsionMotorCircuitBreaker == BREAK_ON) ? pdis1 -> propulsionMotorCircuitBreaker = 1 : pdis1 -> propulsionMotorCircuitBreaker = 0;
(m_pmCurrentState.bus1State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON) ? pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis1 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
(m_pmCurrentState.bus1State.dcDc5ModuleCircuitBreaker == BREAK_ON) ? pdis1 -> dcDc5ModuleCircuitBreaker = 1 : pdis1 -> dcDc5ModuleCircuitBreaker = 0;
(m_pmCurrentState.bus1State.bowHighVoltageDistributionBoxCircuitBreaker == BREAK_ON) ? pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 1 : pdis1 -> bowHighVoltageDistributionBoxCircuitBreaker = 0;
(m_pmCurrentState.bus1State.sternFTDevice45CircuitBreaker == BREAK_ON) ? pdis1 -> sternFTDevice45CircuitBreaker = 1 : pdis1 -> sternFTDevice45CircuitBreaker = 0;
(m_pmCurrentState.bus1State.sternRudderSwitch1CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch1CircuitBreaker = 1 : pdis1 -> sternRudderSwitch1CircuitBreaker = 0;
(m_pmCurrentState.bus1State.sternRudderSwitch2CircuitBreaker == BREAK_ON) ? pdis1 -> sternRudderSwitch2CircuitBreaker = 1 : pdis1 -> sternRudderSwitch2CircuitBreaker = 0;
(m_pmCurrentState.bus1State.fbReservedCircuitBreaker == BREAK_ON) ? pdis1 -> fbReservedCircuitBreaker = 1 : pdis1 -> fbReservedCircuitBreaker = 0;
(m_pmCurrentState.bus1State.tyzReservedCircuitBreaker == BREAK_ON) ? pdis1 -> tyzReservedCircuitBreaker = 1 : pdis1 -> tyzReservedCircuitBreaker = 0;
(m_pmCurrentState.bus1State.reservedCircuitBreaker == BREAK_ON) ? pdis1 -> reservedCircuitBreaker = 1 : pdis1 -> reservedCircuitBreaker = 0;
pdis1 -> paceholder = 0;
disBus2Breaker* pdis2=new disBus2Breaker;
(m_pmCurrentState.bus2State.bowFTDevice123CircuitBreaker == BREAK_ON)? pdis2 -> bowFTDevice123CircuitBreaker = 1 : pdis2 -> bowFTDevice123CircuitBreaker = 0;
(m_pmCurrentState.bus2State.actuatorCircuitBreaker == BREAK_ON)? pdis2 -> actuatorCircuitBreaker = 1 : pdis2 -> actuatorCircuitBreaker = 0;
(m_pmCurrentState.bus2State.mastSteeringGearControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 1 : pdis2 -> mastSteeringGearControlBoxCircuitBreaker = 0;
(m_pmCurrentState.bus2State.xczCircuitBreaker == BREAK_ON)? pdis2 -> xczCircuitBreaker = 1 : pdis2 -> xczCircuitBreaker = 0;
(m_pmCurrentState.bus2State.bowRudderControlBoxCircuitBreaker == BREAK_ON)? pdis2 -> bowRudderControlBoxCircuitBreaker = 1 : pdis2 -> bowRudderControlBoxCircuitBreaker = 0;
(m_pmCurrentState.bus2State.openWaterCoverStartCylinderCircuitBreaker == BREAK_ON)? pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 1 : pdis2 -> openWaterCoverStartCylinderCircuitBreaker = 0;
pdis2 -> paceholder = 0;
disBus3Breaker* pdis3=new disBus3Breaker;
(m_pmCurrentState.bus3State.lithiumBatteryGroupInstrumentCircuitBreaker == BREAK_ON)? pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 1 : pdis3 -> lithiumBatteryGroupInstrumentCircuitBreaker = 0;
(m_pmCurrentState.bus3State.bowLowVoltageDistributionBoxCircuitBreaker == BREAK_ON)? pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 1 : pdis3 -> bowLowVoltageDistributionBoxCircuitBreaker = 0;
(m_pmCurrentState.bus3State.unit4InstrumentDC48VCircuitBreaker == BREAK_ON)? pdis3 -> unit4InstrumentDC48VCircuitBreaker = 1 : pdis3 -> unit4InstrumentDC48VCircuitBreaker = 0;
(m_pmCurrentState.bus3State.dcC1DCDistributionPanelCircuitBreaker == BREAK_ON)? pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 1 : pdis3 -> dcC1DCDistributionPanelCircuitBreaker = 0;
(m_pmCurrentState.bus3State.reservedCircuitBreaker1 == BREAK_ON)? pdis3 -> reservedCircuitBreaker1 = 1 : pdis3 -> reservedCircuitBreaker1 = 0;
(m_pmCurrentState.bus3State.reservedCircuitBreaker2 == BREAK_ON)? pdis3 -> reservedCircuitBreaker2 = 1 : pdis3 -> reservedCircuitBreaker2 = 0;
(m_pmCurrentState.bus3State.emergencyLithiumBatteryGroup2CircuitBreaker == BREAK_ON)? pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 1 : pdis3 -> emergencyLithiumBatteryGroup2CircuitBreaker = 0;
pdis3->paceholder = 0;
disBus4Breaker* pdis4=new disBus4Breaker;
(m_pmCurrentState.bus4State.unit1CircuitBreaker == BREAK_ON)? pdis4 -> unit1CircuitBreaker = 1 : pdis4 -> unit1CircuitBreaker = 0;
(m_pmCurrentState.bus4State.unit2CircuitBreaker == BREAK_ON)? pdis4 -> unit2CircuitBreaker = 1 : pdis4 -> unit2CircuitBreaker = 0;
(m_pmCurrentState.bus4State.unit3CircuitBreaker == BREAK_ON)? pdis4 -> unit3CircuitBreaker = 1 : pdis4 -> unit3CircuitBreaker = 0;
(m_pmCurrentState.bus4State.unit5CircuitBreaker == BREAK_ON)? pdis4 -> unit5CircuitBreaker = 1 : pdis4 -> unit5CircuitBreaker = 0;
(m_pmCurrentState.bus4State.bowPZDeviceCircuitBreaker == BREAK_ON)? pdis4 -> bowPZDeviceCircuitBreaker = 1 : pdis4 -> bowPZDeviceCircuitBreaker = 0;
(m_pmCurrentState.bus4State.reservedCircuitBreaker1 == BREAK_ON)? pdis4 -> reservedCircuitBreaker1 = 1 : pdis4 -> reservedCircuitBreaker1 = 0;
(m_pmCurrentState.bus4State.reservedCircuitBreaker2 == BREAK_ON)? pdis4 -> reservedCircuitBreaker2 = 1 : pdis4 -> reservedCircuitBreaker2 = 0;
(m_pmCurrentState.bus4State.emergencyLithiumBatteryGroup1CircuitBreaker == BREAK_ON)? pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 1 : pdis4 -> emergencyLithiumBatteryGroup1CircuitBreaker = 0;
pdis4 -> paceholder = 0;
m_currentDisBreakerState.bus1Breaker = *pdis1;
m_currentDisBreakerState.bus2Breaker = *pdis2;
m_currentDisBreakerState.bus3Breaker = *pdis3;
m_currentDisBreakerState.bus4Breaker = *pdis4;
delete pdis1;
delete pdis2;
delete pdis3;
delete pdis4;
//2.根据目标状态进行断路器操作
//根据目标状态进行断路器操作
//a. 高压母线的断路器
disHighVolBusCmd a;
a.fuelCellCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fuelCellCircuitBreaker);
@@ -502,7 +504,6 @@ void PowerManger::disSysOption()
d.reservedCircuitBreaker2 = getBreakerOption(m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker2);
d.emergencyLithiumBatteryGroup1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.emergencyLithiumBatteryGroup1CircuitBreaker);
m_udpComm.sendDisSysCmd(d);
//将指令写入数据库
m_db->insertDisSysCmd(a);
m_db->insertDisSysCmd(b);
+11 -5
View File
@@ -101,6 +101,16 @@ class PowerManger : public AppCastingMOOSApp
protected:
//===========================交互状态变量==================================
Driver m_driver;
pmState m_pmCurrentState; //能源系统的当前状态
disSysBreakerList m_currentDisBreakerState; //配电断路器状态
disSysBreakerList m_targetDisBreakerState;
DriverTable m_currentDriverState;
DriverTable m_MSDriverCmd;
DriverTable m_subDisSysCmd;
DriverTable m_subDisSysState;
//===========================================================================
//系统运行状态
unsigned char workCondition;
unsigned char currentMod;
@@ -109,7 +119,7 @@ class PowerManger : public AppCastingMOOSApp
vector<unsigned int> faultCode;
unsigned int soc;
unsigned int sustainableTime;
pmState m_pmCurrentState; //能源系统的当前状态
// 配电和CCU的反馈状态
msg_CcuStateFbMsg m_CcuCurrentState;
@@ -120,8 +130,6 @@ class PowerManger : public AppCastingMOOSApp
//下位机操作函数
//断路器状态
disSysBreakerList m_currentDisBreakerState;
disSysBreakerList m_targetDisBreakerState;
ccuColCmd m_CcuColCmd;
void disSysOption();
void ccuOption();
@@ -146,8 +154,6 @@ class PowerManger : public AppCastingMOOSApp
unsigned int m_faultNum;
unsigned int m_ticker;
public:
//===========================状态机实现==============================================
void printState(FSM_State st, string desp);
+474 -181
View File
@@ -65,16 +65,20 @@ void Driver::getSTANDBYTable(DriverTable* driverTable)
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->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->zhfk = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
//关闭所有水声设备
@@ -88,31 +92,33 @@ void Driver::getSTANDBYTable(DriverTable* driverTable)
driverTable->singleBeamSonar8 = DRIVER_POWER_OFF;
driverTable->DVL = DRIVER_POWER_OFF;
driverTable->forwardSonar = DRIVER_POWER_OFF;
driverTable->zdp = DRIVER_POWER_OFF;
driverTable->usbl = DRIVER_POWER_OFF;
driverTable->lowFreqSonar = DRIVER_POWER_OFF;
driverTable->USBL = DRIVER_POWER_OFF;
//关闭所有执行机构
driverTable->bowOpen1 = DRIVER_POWER_OFF;
driverTable->bowOpen2 = DRIVER_POWER_OFF;
driverTable->bowOpen3 = DRIVER_POWER_OFF;
driverTable->bowOpen4 = DRIVER_POWER_OFF;
driverTable->bowOpen5 = DRIVER_POWER_OFF;
driverTable->bowOpen6 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_POWER_OFF;
driverTable->bowRudderServo1 = DRIVER_POWER_OFF;
driverTable->bowRudderServo2 = 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->bowCover7 = DRIVER_POWER_OFF;
driverTable->bowCover8 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_POWER_OFF;
driverTable->bowRudderServo1 = DRIVER_POWER_OFF;
driverTable->bowRudderServo2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = 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_POWER_OFF;
driverTable->sternRudderServo2 = DRIVER_POWER_OFF;
driverTable->sternRudderServo3 = DRIVER_POWER_OFF;
@@ -130,18 +136,21 @@ void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
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->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;
// 允许启动负载
// 关闭xcz
driverTable->photoSensor = DRIVER_STANDBY;
driverTable->electSensor = DRIVER_STANDBY;
driverTable->zhfk = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_STANDBY;
@@ -156,32 +165,34 @@ void Driver::getSHORE_BASED_READYable(DriverTable* driverTable)
driverTable->singleBeamSonar8 = DRIVER_POWER_OFF;
driverTable->DVL = DRIVER_POWER_OFF;
driverTable->forwardSonar = DRIVER_POWER_OFF;
driverTable->zdp = DRIVER_POWER_OFF;
driverTable->usbl = DRIVER_POWER_OFF;
driverTable->lowFreqSonar = DRIVER_POWER_OFF;
driverTable->USBL = DRIVER_POWER_OFF;
// 打开必要的执行机构
driverTable->bowOpen1 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen2 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen3 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen4 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen5 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen6 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_FULL_POWER_ON;
driverTable->bowCover8 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet3 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet4 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet5 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet6 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet7 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet8 = DRIVER_FULL_POWER_ON;
driverTable->waterInject = DRIVER_FULL_POWER_ON;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
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;
@@ -199,17 +210,20 @@ void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
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->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->zhfk = DRIVER_STANDBY;
driverTable->launchControler = DRIVER_STANDBY;
driverTable->sideSonar = DRIVER_STANDBY;
driverTable->buoyage = DRIVER_STANDBY;
@@ -225,32 +239,34 @@ void Driver::getWATER_BASED_READYable(DriverTable* driverTable)
driverTable->singleBeamSonar8 = DRIVER_STANDBY;
driverTable->DVL = DRIVER_FULL_POWER_ON;
driverTable->forwardSonar = DRIVER_STANDBY;
driverTable->zdp = DRIVER_STANDBY;
driverTable->usbl = DRIVER_STANDBY;
driverTable->lowFreqSonar = DRIVER_STANDBY;
driverTable->USBL = DRIVER_STANDBY;
// 打开必要的执行机构
driverTable->bowOpen1 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen2 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen3 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen4 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen5 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen6 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_FULL_POWER_ON;
driverTable->bowCover8 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet3 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet4 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet5 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet6 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet7 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet8 = DRIVER_FULL_POWER_ON;
driverTable->waterInject = DRIVER_FULL_POWER_ON;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
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;
@@ -268,44 +284,49 @@ void Driver::getCRUISE_MODEable(DriverTable* driverTable)
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->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->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = DRIVER_POWER_OFF;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
// 打开必要的执行机构
// 关闭非必要的执行机构
driverTable->bowOpen1 = DRIVER_POWER_OFF;
driverTable->bowOpen2 = DRIVER_POWER_OFF;
driverTable->bowOpen3 = DRIVER_POWER_OFF;
driverTable->bowOpen4 = DRIVER_POWER_OFF;
driverTable->bowOpen5 = DRIVER_POWER_OFF;
driverTable->bowOpen6 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_POWER_OFF;
driverTable->bowCover8 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
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;
@@ -324,44 +345,49 @@ void Driver::getHIGH_SPEED_MODEable(DriverTable* driverTable)
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->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->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = DRIVER_POWER_OFF;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
// 打开必要的执行机构,只打开操纵机构
// 关闭非必要的执行机构
driverTable->bowOpen1 = DRIVER_POWER_OFF;
driverTable->bowOpen2 = DRIVER_POWER_OFF;
driverTable->bowOpen3 = DRIVER_POWER_OFF;
driverTable->bowOpen4 = DRIVER_POWER_OFF;
driverTable->bowOpen5 = DRIVER_POWER_OFF;
driverTable->bowOpen6 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_POWER_OFF;
driverTable->bowCover8 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = 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;
@@ -380,44 +406,49 @@ void Driver::getASCEND_DESCENDable(DriverTable* driverTable)
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->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->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = DRIVER_POWER_OFF;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
// 打开必要的执行机构
// 关闭非必要的执行机构
driverTable->bowOpen1 = DRIVER_POWER_OFF;
driverTable->bowOpen2 = DRIVER_POWER_OFF;
driverTable->bowOpen3 = DRIVER_POWER_OFF;
driverTable->bowOpen4 = DRIVER_POWER_OFF;
driverTable->bowOpen5 = DRIVER_POWER_OFF;
driverTable->bowOpen6 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_POWER_OFF;
driverTable->bowCover8 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
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;
@@ -436,44 +467,49 @@ void Driver::getBUOYANCY_ADJUSTable(DriverTable* driverTable)
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->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->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = DRIVER_POWER_OFF;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
// 打开必要的执行机构
// 关闭非必要的执行机构
driverTable->bowOpen1 = DRIVER_POWER_OFF;
driverTable->bowOpen2 = DRIVER_POWER_OFF;
driverTable->bowOpen3 = DRIVER_POWER_OFF;
driverTable->bowOpen4 = DRIVER_POWER_OFF;
driverTable->bowOpen5 = DRIVER_POWER_OFF;
driverTable->bowOpen6 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_POWER_OFF;
driverTable->bowCover8 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
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;
@@ -492,44 +528,49 @@ void Driver::getUNDERWATER_RECONable(DriverTable* driverTable)
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->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->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = DRIVER_POWER_OFF;
driverTable->sideSonar = DRIVER_STANDBY;
driverTable->buoyage = DRIVER_POWER_OFF;
// 打开必要的执行机构
// 关闭非必要的执行机构
driverTable->bowOpen1 = DRIVER_POWER_OFF;
driverTable->bowOpen2 = DRIVER_POWER_OFF;
driverTable->bowOpen3 = DRIVER_POWER_OFF;
driverTable->bowOpen4 = DRIVER_POWER_OFF;
driverTable->bowOpen5 = DRIVER_POWER_OFF;
driverTable->bowOpen6 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_POWER_OFF;
driverTable->bowCover8 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = 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;
@@ -548,44 +589,49 @@ void Driver::getSURFACE_RECONable(DriverTable* driverTable)
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->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->zhfk = DRIVER_POWER_OFF;
driverTable->launchControler = DRIVER_POWER_OFF;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_POWER_OFF;
// 打开必要的执行机构
// 关闭非必要的执行机构
driverTable->bowOpen1 = DRIVER_POWER_OFF;
driverTable->bowOpen2 = DRIVER_POWER_OFF;
driverTable->bowOpen3 = DRIVER_POWER_OFF;
driverTable->bowOpen4 = DRIVER_POWER_OFF;
driverTable->bowOpen5 = DRIVER_POWER_OFF;
driverTable->bowOpen6 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_POWER_OFF;
driverTable->bowCover8 = DRIVER_POWER_OFF;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet2 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet3 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet4 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet5 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet6 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet7 = DRIVER_POWER_OFF;
driverTable->bowWaterlnet8 = DRIVER_POWER_OFF;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
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;
@@ -603,44 +649,49 @@ void Driver::getDJ_MODEable(DriverTable* driverTable)
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->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->zhfk = DRIVER_FULL_POWER_ON;
driverTable->launchControler = DRIVER_FULL_POWER_ON;
driverTable->sideSonar = DRIVER_POWER_OFF;
driverTable->buoyage = DRIVER_STANDBY;
// 打开必要的执行机构
// 关闭非必要的执行机构
driverTable->bowOpen1 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen2 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen3 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen4 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen5 = DRIVER_FULL_POWER_ON;
driverTable->bowOpen6 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
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->bowCover7 = DRIVER_FULL_POWER_ON;
driverTable->bowCover8 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderDeploy = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo1 = DRIVER_FULL_POWER_ON;
driverTable->bowRudderServo2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet1 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet2 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet3 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet4 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet5 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet6 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet7 = DRIVER_FULL_POWER_ON;
driverTable->bowWaterlnet8 = DRIVER_FULL_POWER_ON;
driverTable->waterInject = DRIVER_POWER_OFF;
driverTable->wgDJ = DRIVER_FULL_POWER_ON;
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;
@@ -660,12 +711,16 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
root["depth3"] = driverTable->depth3;
root["overDeep1"] = driverTable->overDeep1;
root["overDeep2"] = driverTable->overDeep2;
root["CTD1"] = driverTable->CTD1;
root["CTD2"] = driverTable->CTD2;
root["ctd1"] = driverTable->ctd1;
root["ctd2"] = driverTable->ctd2;
root["soundVeloc"] = driverTable->soundVeloc;
root["commMast"] = driverTable->commMast;
root["ins"] = driverTable->ins;
root["ntp"] = driverTable->ntp;
root["inputWaterSensor1"] = driverTable->inputWaterSensor1;
root["inputWaterSensor2"] = driverTable->inputWaterSensor2;
root["inputWaterSensor3"] = driverTable->inputWaterSensor3;
root["singleBeamSonar1"] = driverTable->singleBeamSonar1;
root["singleBeamSonar2"] = driverTable->singleBeamSonar2;
root["singleBeamSonar3"] = driverTable->singleBeamSonar3;
@@ -676,30 +731,32 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
root["singleBeamSonar8"] = driverTable->singleBeamSonar8;
root["forwardSonar"] = driverTable->forwardSonar;
root["DVL"] = driverTable->DVL;
root["zdp"] = driverTable->zdp;
root["usbl"] = driverTable->usbl;
root["bowOpen1"] = driverTable->bowOpen1;
root["bowOpen2"] = driverTable->bowOpen2;
root["bowOpen3"] = driverTable->bowOpen3;
root["bowOpen4"] = driverTable->bowOpen4;
root["bowOpen5"] = driverTable->bowOpen5;
root["bowOpen6"] = driverTable->bowOpen6;
root["bowRudderDeploy"] = driverTable->bowRudderDeploy;
root["bowRudderServo1"] = driverTable->bowRudderServo1;
root["bowRudderServo2"] = driverTable->bowRudderServo2;
root["lowFreqSonar"] = driverTable->lowFreqSonar;
root["USBL"] = driverTable->USBL;
root["bowCover1"] = driverTable->bowCover1;
root["bowCover2"] = driverTable->bowCover2;
root["bowCover3"] = driverTable->bowCover3;
root["bowCover4"] = driverTable->bowCover4;
root["bowCover5"] = driverTable->bowCover5;
root["bowCover6"] = driverTable->bowCover6;
root["bowCover7"] = driverTable->bowCover7;
root["bowCover8"] = driverTable->bowCover8;
root["bowRudderDeploy"] = driverTable->bowRudderDeploy;
root["bowRudderServo1"] = driverTable->bowRudderServo1;
root["bowRudderServo2"] = driverTable->bowRudderServo2;
root["bowWaterlnet1"] = driverTable->bowWaterlnet1;
root["bowWaterlnet2"] = driverTable->bowWaterlnet2;
root["bowWaterlnet3"] = driverTable->bowWaterlnet3;
root["bowWaterlnet4"] = driverTable->bowWaterlnet4;
root["bowWaterlnet5"] = driverTable->bowWaterlnet5;
root["bowWaterlnet6"] = driverTable->bowWaterlnet6;
root["bowWaterlnet7"] = driverTable->bowWaterlnet7;
root["bowWaterlnet8"] = driverTable->bowWaterlnet8;
root["waterInject"] = driverTable->waterInject;
root["wgDJ"] = driverTable->wgDJ;
root["mastLiftingServo"] = driverTable->mastLiftingServo;
root["buoyancyAdjust1"] = driverTable->buoyancyAdjust1;
root["buoyancyAdjust2"] = driverTable->buoyancyAdjust2;
root["buoyancyAdjust3"] = driverTable->buoyancyAdjust3;
root["buoyancyAdjust4"] = driverTable->buoyancyAdjust4;
root["buoyancyAdjust5"] = driverTable->buoyancyAdjust5;
root["sternRudderServo1"] = driverTable->sternRudderServo1;
root["sternRudderServo2"] = driverTable->sternRudderServo2;
root["sternRudderServo3"] = driverTable->sternRudderServo3;
@@ -709,13 +766,249 @@ std::string Driver::saveDriverTableToJson(const DriverTable* driverTable)
root["sternThrow"] = driverTable->sternThrow;
root["photoSensor"] = driverTable->photoSensor;
root["electSensor"] = driverTable->electSensor;
root["zhfk"] = driverTable->zhfk;
root["launchControler"] = driverTable->launchControler;
root["sideSonar"] = driverTable->sideSonar;
root["buoyage"] = 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; // 成功读取
}
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", table.depth1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "depth2", table.depth2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "depth3", table.depth3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "overDeep1", table.overDeep1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "overDeep2", table.overDeep2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ctd1", table.ctd1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ctd2", table.ctd2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "soundVeloc", table.soundVeloc);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "commMast", table.commMast);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ins", table.ins);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "ntp", table.ntp);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "inputWaterSensor1", table.inputWaterSensor1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "inputWaterSensor2", table.inputWaterSensor2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "inputWaterSensor3", table.inputWaterSensor3);
if (error_code != 0) return error_code;
// 水声设备
error_code = SafeReadUInt(root, "singleBeamSonar1", table.singleBeamSonar1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar2", table.singleBeamSonar2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar3", table.singleBeamSonar3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar4", table.singleBeamSonar4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar5", table.singleBeamSonar5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar6", table.singleBeamSonar6);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar7", table.singleBeamSonar7);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "singleBeamSonar8", table.singleBeamSonar8);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "forwardSonar", table.forwardSonar);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "DVL", table.DVL);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "lowFreqSonar", table.lowFreqSonar);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "USBL", table.USBL);
if (error_code != 0) return error_code;
// 执行机构
error_code = SafeReadUInt(root, "bowWaterlnet1", table.bowWaterlnet1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet2", table.bowWaterlnet2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet3", table.bowWaterlnet3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet4", table.bowWaterlnet4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet5", table.bowWaterlnet5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet6", table.bowWaterlnet6);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet7", table.bowWaterlnet7);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowWaterlnet8", table.bowWaterlnet8);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowRudderDeploy", table.bowRudderDeploy);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowRudderServo1", table.bowRudderServo1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowRudderServo2", table.bowRudderServo2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover1", table.bowCover1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover2", table.bowCover2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover3", table.bowCover3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover4", table.bowCover4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover5", table.bowCover5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowCover6", table.bowCover6);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "waterInject", table.waterInject);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "mastLiftingServo", table.mastLiftingServo);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust1", table.buoyancyAdjust1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust2", table.buoyancyAdjust2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust3", table.buoyancyAdjust3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust4", table.buoyancyAdjust4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyancyAdjust5", table.buoyancyAdjust5);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo1", table.sternRudderServo1);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo2", table.sternRudderServo2);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo3", table.sternRudderServo3);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternRudderServo4", table.sternRudderServo4);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "thruster", table.thruster);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "bowThrow", table.bowThrow);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sternThrow", table.sternThrow);
if (error_code != 0) return error_code;
// 负载
error_code = SafeReadUInt(root, "photoSensor", table.photoSensor);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "electSensor", table.electSensor);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "launchControler", table.launchControler);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "sideSonar", table.sideSonar);
if (error_code != 0) return error_code;
error_code = SafeReadUInt(root, "buoyage", table.buoyage);
if (error_code != 0) return error_code;
return 0; // 返回0表示所有数据成功读取
}
+33 -20
View File
@@ -2,6 +2,8 @@
#define DRIVER_H
#include "json/json.h"
#include "iostream"
#include <sstream>
#define DRIVER_POWER_OFF 0x00
#define DRIVER_FULL_POWER_ON 0x01
@@ -16,12 +18,15 @@ struct DriverTable
unsigned char depth3;
unsigned char overDeep1;
unsigned char overDeep2;
unsigned char CTD1;
unsigned char CTD2;
unsigned char ctd1;
unsigned char ctd2;
unsigned char soundVeloc;
unsigned char commMast;
unsigned char ins;
unsigned char ntp;
unsigned char inputWaterSensor1;
unsigned char inputWaterSensor2;
unsigned char inputWaterSensor3;
//水声设备
unsigned char singleBeamSonar1;
unsigned char singleBeamSonar2;
@@ -33,15 +38,17 @@ struct DriverTable
unsigned char singleBeamSonar8;
unsigned char forwardSonar;
unsigned char DVL;
unsigned char zdp;
unsigned char usbl;
unsigned char lowFreqSonar;
unsigned char USBL;
//执行机构
unsigned char bowOpen1;
unsigned char bowOpen2;
unsigned char bowOpen3;
unsigned char bowOpen4;
unsigned char bowOpen5;
unsigned char bowOpen6;
unsigned char bowWaterlnet1;
unsigned char bowWaterlnet2;
unsigned char bowWaterlnet3;
unsigned char bowWaterlnet4;
unsigned char bowWaterlnet5;
unsigned char bowWaterlnet6;
unsigned char bowWaterlnet7;
unsigned char bowWaterlnet8;
unsigned char bowRudderDeploy;
unsigned char bowRudderServo1;
unsigned char bowRudderServo2;
@@ -51,13 +58,13 @@ struct DriverTable
unsigned char bowCover4;
unsigned char bowCover5;
unsigned char bowCover6;
unsigned char bowCover7;
unsigned char bowCover8;
unsigned char waterInject;
unsigned char wgDJ;
unsigned char mastLiftingServo;
unsigned char buoyancyAdjust1;
unsigned char buoyancyAdjust2;
unsigned char buoyancyAdjust3;
unsigned char buoyancyAdjust4;
unsigned char buoyancyAdjust5;
unsigned char sternRudderServo1;
unsigned char sternRudderServo2;
unsigned char sternRudderServo3;
@@ -68,17 +75,17 @@ struct DriverTable
//负载
unsigned char photoSensor;
unsigned char electSensor;
unsigned char zhfk;
unsigned char launchControler;
unsigned char sideSonar;
unsigned char buoyage;
};
enum DriverState
{
POWER_OFF, // 断电
POWER_OFF, // 断电
FULL_POWER_ON, // 全电
INSTRUMENT_POWER_ON, // 仪表电上电
MOTIVE_POWER_ON, // 动力电上电
INSTRUMENT_POWER_ON, // 仪表电上电
MOTIVE_POWER_ON, // 动力电上电
};
enum workCondition
@@ -119,12 +126,18 @@ public:
void getUNDERWATER_RECONable(DriverTable* driverTable);
void getSURFACE_RECONable(DriverTable* driverTable);
void getDJ_MODEable(DriverTable* driverTable);
std::string saveDriverTableToJson(const DriverTable* driverTable);
std::string getDriverTableJson();
std::string getSubDisCmdJson(const DriverTable* driverTable);
std::string getDriveStateJson(const DriverTable* driverTable);
std::string saveDriverTableToJson(const DriverTable* driverTable);
int loadDriverTableFromJson(const std::string &strJson, DriverTable& table);
int SafeReadUInt(const Json::Value& root, const std::string& key, unsigned char& value);
private:
bool debug;
};