修复了udp的错误发送数据就报错的故障,莫名其妙好的,真是奇怪

This commit is contained in:
zjk
2025-04-07 22:16:56 +08:00
parent b5a746c2ef
commit 35e5d5230e
4 changed files with 8 additions and 82 deletions
+5 -9
View File
@@ -16,8 +16,10 @@ LowerCommManager::LowerCommManager(PowerManger* pm, long myPort, long ccuPort, c
m_udpComm->ccuHost = cccHost;
m_udpComm->ccuPort = ccuPort;
m_udpComm->udpScoket = new XPCUdpSocket(m_port);
m_udpSocket = new XPCUdpSocket(2000);
std::cout << "PORT = " << m_port << std::endl;
std::cout << "CCUHOST = " << m_udpComm->ccuHost << std::endl;
std::cout << "CCUPORT = " << m_udpComm->ccuPort << std::endl;
}
LowerCommManager::~LowerCommManager(){
@@ -33,16 +35,12 @@ LowerCommManager::~LowerCommManager(){
}
bool LowerCommManager::initUdpComm(){
//设置UDP监听端口
// XPCUdpSocket* m_udpSocket = new XPCUdpSocket(m_port);
if(m_udpComm->udpScoket)
{
try
{
m_udpComm->udpScoket->vBindSocket();
m_udpComm->ccuHost = m_ccuHost;
m_udpComm->ccuPort = m_ccuPort;
cout<<MOOS::ConsoleColours::green()<< "UDP set succeed!"<< MOOS::ConsoleColours::reset() << endl;
// m_udpComm->udpScoket = m_udpSocket;
}
catch(const std::exception& e)
{
@@ -60,10 +58,8 @@ bool LowerCommManager::initUdpComm(){
return true;
}
void LowerCommManager::processPeriodicTasks() {
// sendCcuCommand(m_pm->m_CcuColCmd);
// sendDisSysCommand(m_pm->m_targetDisBreakerState);
m_udpSocket->iSendMessageTo((void*) "hello", 5, m_ccuPort, m_ccuHost);
int msg = 10;
sendCcuCommand(m_pm->m_CcuColCmd);
sendDisSysCommand(m_pm->m_targetDisBreakerState);
m_udpComm->clearMsgQueue();
}
+1 -2
View File
@@ -33,7 +33,7 @@ public:
bool initUdpComm();
// 更新设备状态
bool updateDeviceStates();
bool updatePoweSystemStates();
// 发送CCU控制命令
bool sendCcuCommand(const ccuColCmd cmd);
@@ -57,7 +57,6 @@ public:
PowerManger* m_pm;
udpComm* m_udpComm;
XPCUdpSocket* m_udpSocket;
CMOOSThread m_ListenThread;
int m_connectState;
+1 -71
View File
@@ -14,12 +14,6 @@
using namespace std;
// bool _ListenCB(void * pParam)
// {
// // PowerManger* pMe = (PowerManger* )pParam;
// // return pMe->ListenLoopUDP();
// }
bool _FsmCB(void * pParam)
{
PowerManger* pMe = (PowerManger* )pParam;
@@ -73,7 +67,6 @@ PowerManger::PowerManger()
//初始化UDP通信
m_lowerCommManager = new LowerCommManager(this,IPORT,CCUPORT,CCUHOST);
m_lowerCommManager->initUdpComm();
// 初始化状态机
@@ -194,6 +187,7 @@ bool PowerManger::Iterate()
writeDataToDB();
}
m_lowerCommManager->processPeriodicTasks();
///////////////////////
// string a = m_driver.getSubDisCmdJson(&m_subDisSysCmd);
// saveStringToJsonFile(a,"/home/zjk/project/H100/H100PowerManger/data/subDisSysCmd.json");
@@ -479,70 +473,6 @@ bool PowerManger::IsSkewed(double dfTimeNow, double * pdfSkew)
return (dfSkew > SKEW_TOLERANCE) ? true : false;
}
// void PowerManger::ccuOption()
// {
// m_db->insertCcuSysCmd(m_CcuColCmd);
// if(!m_udpComm.sendCcuColCmd(m_CcuColCmd))
// cout << "send ccu col cmd failed!" << endl;
// }
// void PowerManger::disSysOption()
// {
// //根据目标状态进行断路器操作
// //a. 高压母线的断路器
// disHighVolBusCmd a;
// a.fuelCellCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fuelCellCircuitBreaker);
// a.lithiumBatteryGroupInstrumentCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.lithiumBatteryGroupInstrumentCircuitBreaker);
// a.dcDc5ModuleCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.dcDc5ModuleCircuitBreaker);
// a.powerLithiumBatteryCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.powerLithiumBatteryCircuitBreaker);
// a.propulsionMotorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.propulsionMotorCircuitBreaker);
// a.bowHighVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.bowHighVoltageDistributionBoxCircuitBreaker);
// a.tyzReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.tyzReservedCircuitBreaker);
// a.sternFTDevice45CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternFTDevice45CircuitBreaker);
// a.sternRudderSwitch1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch1CircuitBreaker);
// a.sternRudderSwitch2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.sternRudderSwitch2CircuitBreaker);
// a.reservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.reservedCircuitBreaker);
// a.fbReservedCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus1Breaker.fbReservedCircuitBreaker);
// m_udpComm.sendDisSysCmd(a);
// //b. 高压汇流排A断路器
// disHighAVolBusCmd b;
// b.bowFTDevice123CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowFTDevice123CircuitBreaker);
// b.actuatorCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.actuatorCircuitBreaker);
// b.mastSteeringGearControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.mastSteeringGearControlBoxCircuitBreaker);
// b.xczCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.xczCircuitBreaker);
// b.bowRudderControlBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.bowRudderControlBoxCircuitBreaker);
// b.openWaterCoverStartCylinderCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus2Breaker.openWaterCoverStartCylinderCircuitBreaker);
// m_udpComm.sendDisSysCmd(b);
// //c. 高压汇流排B断路器
// disHighBVolBusCmd c;
// c.lithiumBatteryGroupInstrumentCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.lithiumBatteryGroupInstrumentCircuitBreaker);
// c.bowLowVoltageDistributionBoxCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.bowLowVoltageDistributionBoxCircuitBreaker);
// c.unit4InstrumentDC48VCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker);
// c.dcC1DCDistributionPanelCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.dcC1DCDistributionPanelCircuitBreaker);
// c.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker1);
// c.reservedCircuitBreaker2 = getBreakerOption(m_targetDisBreakerState.bus3Breaker.reservedCircuitBreaker2);
// c.emergencyLithiumBatteryGroup2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus3Breaker.emergencyLithiumBatteryGroup2CircuitBreaker);
// m_udpComm.sendDisSysCmd(c);
// //d. 闭合低压汇流排断路器
// disLowBusCmd d;
// d.unit1CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit1CircuitBreaker);
// d.unit2CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit2CircuitBreaker);
// d.unit3CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit3CircuitBreaker);
// d.unit5CircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.unit5CircuitBreaker);
// d.bowPZDeviceCircuitBreaker = getBreakerOption(m_targetDisBreakerState.bus4Breaker.bowPZDeviceCircuitBreaker);
// d.reservedCircuitBreaker1 = getBreakerOption(m_targetDisBreakerState.bus4Breaker.reservedCircuitBreaker1);
// 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);
// m_db->insertDisSysCmd(c);
// m_db->insertDisSysCmd(d);
// }
bool PowerManger::saveStringToJsonFile(const string &strJson, const string &filePath)
{
std::ofstream file(filePath, std::ios::trunc);
+1
View File
@@ -50,6 +50,7 @@ public:
bool sendDisSysCmd(const disHighBVolBusCmd cmd);
bool sendDisSysCmd(const disLowBusCmd cmd);
bool sendMsg(const unsigned char* msg,unsigned int size){
// cout << "sendMsgTo" << ccuHost << ":" << ccuPort << endl;
udpScoket->iSendMessageTo((void*) msg, size, ccuPort, ccuHost);
return true;
}