476 lines
25 KiB
C++
476 lines
25 KiB
C++
#include "CXFlatLaserClient.h"
|
||
#include "Modbus.h"
|
||
#include "../utils/DataByte.h"
|
||
#include <bitset>
|
||
#include "../external/imgui/imgui_custom.h"
|
||
#include "../Toast.h"
|
||
#include "../LanguageManager.h"
|
||
#include "../global.h"
|
||
#include "../Logger.h"
|
||
|
||
CXFlatLaserClient::CXFlatLaserClient(CommunicationCfg* cfg, AlarmCfg* alarm) :TcpClient(cfg), m_LaserAlarm(alarm)
|
||
{
|
||
|
||
}
|
||
|
||
CXFlatLaserClient::~CXFlatLaserClient()
|
||
{
|
||
Shutdown();
|
||
}
|
||
|
||
void CXFlatLaserClient::InitCommand()
|
||
{
|
||
unsigned char addr = m_Config->m_Addr->GetValue();
|
||
Modbus* c1 = new ReadModbus(addr, 0x05, 12);
|
||
c1->m_Fun = &CXFlatLaserClient::PorcReadInfo1;
|
||
c1->m_Ref = this;
|
||
c1->isNeedDel = false;
|
||
|
||
Modbus* c2 = new ReadModbus(addr, 0x96, 4);
|
||
c2->m_Fun = &CXFlatLaserClient::PorcReadInfo2;
|
||
c2->m_Ref = this;
|
||
c2->isNeedDel = false;
|
||
|
||
Modbus* c3 = new ReadModbus(addr, 0x8005, 3);
|
||
c3->m_Fun = &CXFlatLaserClient::PorcReadInfo3;
|
||
c3->m_Ref = this;
|
||
c3->isNeedDel = false;
|
||
|
||
m_CycleCommands.push_back(c1);
|
||
m_CycleCommands.push_back(c2);
|
||
m_CycleCommands.push_back(c3);
|
||
}
|
||
|
||
void CXFlatLaserClient::SetPwmFrequency(unsigned short pwmf)
|
||
{
|
||
WriteModbus* pSet = new WriteModbus(m_Config->m_Addr->GetValue(), 0x97);
|
||
pSet->AddUshort(pwmf);
|
||
pSet->m_Fun = &CXFlatLaserClient::ProcWrite;
|
||
pSet->m_Ref = this;
|
||
|
||
EnterCriticalSection(&m_RtcCS);
|
||
m_RTCommands.push(pSet);
|
||
LeaveCriticalSection(&m_RtcCS);
|
||
}
|
||
|
||
void CXFlatLaserClient::SetPwmDutyCycle(float fvalue)
|
||
{
|
||
unsigned short realvalue = (unsigned short)(fvalue * 10);
|
||
WriteModbus* pSet = new WriteModbus(m_Config->m_Addr->GetValue(), 0x98);
|
||
pSet->AddShort(realvalue);
|
||
pSet->m_Fun = &CXFlatLaserClient::ProcWrite;
|
||
pSet->m_Ref = this;
|
||
|
||
EnterCriticalSection(&m_RtcCS);
|
||
m_RTCommands.push(pSet);
|
||
LeaveCriticalSection(&m_RtcCS);
|
||
}
|
||
void CXFlatLaserClient::SetPwmPower(float fvalue)
|
||
{
|
||
unsigned short realvalue = (unsigned short)(fvalue * 10);
|
||
WriteModbus* pSet = new WriteModbus(m_Config->m_Addr->GetValue(), 0x99);
|
||
pSet->AddShort(realvalue);
|
||
pSet->m_Fun = &CXFlatLaserClient::ProcWrite;
|
||
pSet->m_Ref = this;
|
||
|
||
EnterCriticalSection(&m_RtcCS);
|
||
m_RTCommands.push(pSet);
|
||
LeaveCriticalSection(&m_RtcCS);
|
||
}
|
||
|
||
void CXFlatLaserClient::PorcReadInfo1(void* pobject, Command* pcommand)
|
||
{
|
||
if (pobject == NULL)return;
|
||
CXFlatLaserClient* client = (CXFlatLaserClient*)pobject;
|
||
unsigned char* rseq = pcommand->m_RespSeq;
|
||
USHORTDATA alarmTemp(false, &rseq[3]);
|
||
bitset<16> alarm(alarmTemp.usValue);
|
||
USHORTDATA pumpSourceTemperatureTemp(false, &rseq[7]);
|
||
USHORTDATA OpticalPathTemperatureTemp(false, &rseq[9]);
|
||
USHORTDATA CircuitTemperatureTemp(false, &rseq[11]);
|
||
USHORTDATA DriveBoard1CurrentTemp(false, &rseq[15]);
|
||
USHORTDATA DriveBoard2CurrentTemp(false, &rseq[17]);
|
||
USHORTDATA DriveBoard3CurrentTemp(false, &rseq[19]);
|
||
USHORTDATA DriveBoard4CurrentTemp(false, &rseq[21]);
|
||
USHORTDATA SensorHumidityTemp(false, &rseq[25]);
|
||
|
||
EnterCriticalSection(&client->m_ValueCS);
|
||
client->m_CXFlatLaserState.m_PumpSourceTemperatureAlarm = alarm[0]; //泵源温度报警
|
||
client->m_CXFlatLaserState.m_OpticalPathTemperatureAlarm = alarm[1]; //光路温度报警
|
||
client->m_CXFlatLaserState.m_CircuitTemperatureAlarm = alarm[2]; //电路温度报警
|
||
client->m_CXFlatLaserState.m_EncryptionExpirationAlarm = alarm[3]; //加密过期报警
|
||
client->m_CXFlatLaserState.m_DriveBoard1OvercurrentAlarm = alarm[5]; //驱动板1过流报警
|
||
client->m_CXFlatLaserState.m_DriveBoard2OvercurrentAlarm = alarm[6]; //驱动板2过流报警
|
||
client->m_CXFlatLaserState.m_DriveBoard3OvercurrentAlarm = alarm[7]; //驱动板3过流报警
|
||
client->m_CXFlatLaserState.m_DriveBoard4OvercurrentAlarm = alarm[8]; //驱动板4过流报警
|
||
client->m_CXFlatLaserState.m_QbhTemperatureAlarm = alarm[9]; //QBH温度报警
|
||
client->m_CXFlatLaserState.m_ExternalBeamCombinerTemperatureAlarm = alarm[10]; //外合束器温度报警
|
||
client->m_CXFlatLaserState.m_WaterFlowMeterAlarm = alarm[11]; //水流量计报警
|
||
|
||
client->m_CXFlatLaserState.m_PumpSourceTemperature = pumpSourceTemperatureTemp.usValue; //泵源温度
|
||
client->m_CXFlatLaserState.m_OpticalPathTemperature = OpticalPathTemperatureTemp.usValue; //光路温度
|
||
client->m_CXFlatLaserState.m_CircuitTemperature = CircuitTemperatureTemp.usValue; //电路温度
|
||
client->m_CXFlatLaserState.m_DriveBoard1Current = (float)DriveBoard1CurrentTemp.usValue / 100.0f; //驱动板1电流
|
||
client->m_CXFlatLaserState.m_DriveBoard2Current = (float)DriveBoard2CurrentTemp.usValue / 100.0f; //驱动板2电流
|
||
client->m_CXFlatLaserState.m_DriveBoard3Current = (float)DriveBoard3CurrentTemp.usValue / 100.0f; //驱动板3电流
|
||
client->m_CXFlatLaserState.m_DriveBoard4Current = (float)DriveBoard4CurrentTemp.usValue / 100.0f; //驱动板4电流
|
||
client->m_CXFlatLaserState.m_SensorHumidity = SensorHumidityTemp.usValue; //传感器湿度
|
||
LeaveCriticalSection(&client->m_ValueCS);
|
||
}
|
||
|
||
void CXFlatLaserClient::PorcReadInfo2(void* pobject, Command* pcommand)
|
||
{
|
||
if (pobject == NULL)return;
|
||
CXFlatLaserClient* client = (CXFlatLaserClient*)pobject;
|
||
unsigned char* rseq = pcommand->m_RespSeq;
|
||
|
||
USHORTDATA InternalControlPowerTemp(false, &rseq[3]);
|
||
USHORTDATA PwmFrequencyTemp(false, &rseq[5]);
|
||
USHORTDATA PwmDutyCycleTemp(false, &rseq[7]);
|
||
USHORTDATA PwmPowerTemp(false, &rseq[9]);
|
||
|
||
EnterCriticalSection(&client->m_ValueCS);
|
||
client->m_CXFlatLaserState.m_InternalControlPower = (float)InternalControlPowerTemp.usValue / 10.0f; //内控功率
|
||
client->m_CXFlatLaserState.m_PwmFrequency = PwmFrequencyTemp.usValue; //PWM频率
|
||
client->m_CXFlatLaserState.m_PwmDutyCycle = (float)PwmDutyCycleTemp.usValue / 10.0f; //PWM占空比
|
||
client->m_CXFlatLaserState.m_PwmPower = (float)PwmPowerTemp.usValue / 10.0f; //PWM功率
|
||
LeaveCriticalSection(&client->m_ValueCS);
|
||
}
|
||
|
||
void CXFlatLaserClient::PorcReadInfo3(void* pobject, Command* pcommand)
|
||
{
|
||
if (pobject == NULL)return;
|
||
CXFlatLaserClient* client = (CXFlatLaserClient*)pobject;
|
||
unsigned char* rseq = pcommand->m_RespSeq;
|
||
USHORTDATA alarm1Temp(false, &rseq[3]);
|
||
bitset<16> alarm1(alarm1Temp.usValue);
|
||
USHORTDATA alarm2Temp(false, &rseq[5]);
|
||
bitset<16> alarm2(alarm2Temp.usValue);
|
||
USHORTDATA m_AnalogPowerTemp(false, &rseq[7]);
|
||
EnterCriticalSection(&client->m_ValueCS);
|
||
client->m_CXFlatLaserState.m_InternalPd1Alarm = alarm1[0]; //内部PD1报警
|
||
client->m_CXFlatLaserState.m_Interna2Pd1Alarm = alarm1[1]; //内部PD2报警
|
||
client->m_CXFlatLaserState.m_PulseEnergyAlarm = alarm1[2]; //脉冲能量报警
|
||
client->m_CXFlatLaserState.m_QbhContactAlarm = alarm1[3]; //QBH触点报警
|
||
client->m_CXFlatLaserState.m_EmergencyStopAlarm = alarm1[4]; //急停报警
|
||
client->m_CXFlatLaserState.m_WaterFlowSwitchAlarm = alarm1[5]; //水流量开关报警
|
||
client->m_CXFlatLaserState.m_InterlockAlarm = alarm1[6]; //互锁报警
|
||
client->m_CXFlatLaserState.m_AveragePowerAlarm = alarm1[7]; //平均功率报警
|
||
client->m_CXFlatLaserState.m_MAlarm = alarm1[8]; //M报警
|
||
client->m_CXFlatLaserState.m_ExternalBeamCombinerPdAlarm = alarm1[9]; //外合束器PD报警
|
||
client->m_CXFlatLaserState.m_ExternalAnalogAlarm = alarm1[10]; //外部模拟量报警
|
||
client->m_CXFlatLaserState.m_AbnormalLaserEmissionAlarm = alarm1[11]; //异常出光报警
|
||
client->m_CXFlatLaserState.m_UpperEmergencyStopAlarm = alarm1[12]; //上位机急停报警
|
||
client->m_CXFlatLaserState.m_PowerAlarm = alarm1[13]; //功率报警
|
||
client->m_CXFlatLaserState.m_MainPowerSupply1Alarm = alarm1[14]; //主电源1报警
|
||
client->m_CXFlatLaserState.m_MainPowerSupply2Alarm = alarm1[15]; //主电源2报警
|
||
client->m_CXFlatLaserState.m_IoEN = alarm2[0];
|
||
client->m_CXFlatLaserState.m_IoPWM = alarm2[1];
|
||
client->m_CXFlatLaserState.m_IoStop = alarm2[2];
|
||
client->m_CXFlatLaserState.m_IoRed = alarm2[3];
|
||
client->m_CXFlatLaserState.m_LaserState = alarm2[4]; //激光状态
|
||
client->m_CXFlatLaserState.m_RedLightState = alarm2[5]; //红光状态
|
||
client->m_CXFlatLaserState.m_IoStart = alarm2[6];
|
||
client->m_CXFlatLaserState.m_IoControl = alarm2[7];
|
||
client->m_CXFlatLaserState.m_PwmStartError = alarm2[10]; //PWM开启报警
|
||
client->m_CXFlatLaserState.m_PdPowerError = alarm2[11]; //PD电源报警
|
||
client->m_CXFlatLaserState.m_AnalogPower = (float)m_AnalogPowerTemp.usValue * 100.0f / 4095.0f;
|
||
LeaveCriticalSection(&client->m_ValueCS);
|
||
}
|
||
|
||
void CXFlatLaserClient::GetState(CXFlatLaserState& state)
|
||
{
|
||
EnterCriticalSection(&m_ValueCS);
|
||
state.m_PumpSourceTemperatureAlarm = m_CXFlatLaserState.m_PumpSourceTemperatureAlarm; //泵源温度报警
|
||
state.m_OpticalPathTemperatureAlarm = m_CXFlatLaserState.m_OpticalPathTemperatureAlarm; //光路温度报警
|
||
state.m_CircuitTemperatureAlarm = m_CXFlatLaserState.m_CircuitTemperatureAlarm; //电路温度报警
|
||
state.m_EncryptionExpirationAlarm = m_CXFlatLaserState.m_EncryptionExpirationAlarm; //加密过期报警
|
||
state.m_DriveBoard1OvercurrentAlarm = m_CXFlatLaserState.m_DriveBoard1OvercurrentAlarm; //驱动板1过流报警
|
||
state.m_DriveBoard2OvercurrentAlarm = m_CXFlatLaserState.m_DriveBoard2OvercurrentAlarm; //驱动板2过流报警
|
||
state.m_DriveBoard3OvercurrentAlarm = m_CXFlatLaserState.m_DriveBoard3OvercurrentAlarm; //驱动板3过流报警
|
||
state.m_DriveBoard4OvercurrentAlarm = m_CXFlatLaserState.m_DriveBoard4OvercurrentAlarm; //驱动板4过流报警
|
||
state.m_QbhTemperatureAlarm = m_CXFlatLaserState.m_QbhTemperatureAlarm; //QBH温度报警
|
||
state.m_ExternalBeamCombinerTemperatureAlarm = m_CXFlatLaserState.m_ExternalBeamCombinerTemperatureAlarm; //外合束器温度报警
|
||
state.m_WaterFlowMeterAlarm = m_CXFlatLaserState.m_WaterFlowMeterAlarm; //水流量计报警
|
||
state.m_PumpSourceTemperature = m_CXFlatLaserState.m_PumpSourceTemperature; //泵源温度
|
||
state.m_OpticalPathTemperature = m_CXFlatLaserState.m_OpticalPathTemperature; //光路温度
|
||
state.m_CircuitTemperature = m_CXFlatLaserState.m_CircuitTemperature; //电路温度
|
||
state.m_DriveBoard1Current = m_CXFlatLaserState.m_DriveBoard1Current; //驱动板1电流
|
||
state.m_DriveBoard2Current = m_CXFlatLaserState.m_DriveBoard2Current; //驱动板2电流
|
||
state.m_DriveBoard3Current = m_CXFlatLaserState.m_DriveBoard3Current; //驱动板3电流
|
||
state.m_DriveBoard4Current = m_CXFlatLaserState.m_DriveBoard4Current; //驱动板4电流
|
||
state.m_SensorHumidity = m_CXFlatLaserState.m_SensorHumidity; //传感器湿度
|
||
state.m_InternalControlPower = m_CXFlatLaserState.m_InternalControlPower; //内控功率
|
||
state.m_PwmFrequency = m_CXFlatLaserState.m_PwmFrequency; //PWM频率
|
||
state.m_PwmDutyCycle = m_CXFlatLaserState.m_PwmDutyCycle; //PWM占空比
|
||
state.m_PwmPower = m_CXFlatLaserState.m_PwmPower; //PWM功率
|
||
state.m_InternalPd1Alarm = m_CXFlatLaserState.m_InternalPd1Alarm; //内部PD1报警
|
||
state.m_Interna2Pd1Alarm = m_CXFlatLaserState.m_Interna2Pd1Alarm; //内部PD2报警
|
||
state.m_PulseEnergyAlarm = m_CXFlatLaserState.m_PulseEnergyAlarm; //脉冲能量报警
|
||
state.m_QbhContactAlarm = m_CXFlatLaserState.m_QbhContactAlarm; //QBH触点报警
|
||
state.m_EmergencyStopAlarm = m_CXFlatLaserState.m_EmergencyStopAlarm; //急停报警
|
||
state.m_WaterFlowSwitchAlarm = m_CXFlatLaserState.m_WaterFlowSwitchAlarm; //水流量开关报警
|
||
state.m_InterlockAlarm = m_CXFlatLaserState.m_InterlockAlarm; //互锁报警
|
||
state.m_AveragePowerAlarm = m_CXFlatLaserState.m_AveragePowerAlarm; //平均功率报警
|
||
state.m_MAlarm = m_CXFlatLaserState.m_MAlarm; //M报警
|
||
state.m_ExternalBeamCombinerPdAlarm = m_CXFlatLaserState.m_ExternalBeamCombinerPdAlarm; //外合束器PD报警
|
||
state.m_ExternalAnalogAlarm = m_CXFlatLaserState.m_ExternalAnalogAlarm; //外部模拟量报警
|
||
state.m_AbnormalLaserEmissionAlarm = m_CXFlatLaserState.m_AbnormalLaserEmissionAlarm; //异常出光报警
|
||
state.m_UpperEmergencyStopAlarm = m_CXFlatLaserState.m_UpperEmergencyStopAlarm; //上位机急停报警
|
||
state.m_PowerAlarm = m_CXFlatLaserState.m_PowerAlarm; //功率报警
|
||
state.m_MainPowerSupply1Alarm = m_CXFlatLaserState.m_MainPowerSupply1Alarm; //主电源1报警
|
||
state.m_MainPowerSupply2Alarm = m_CXFlatLaserState.m_MainPowerSupply2Alarm; //主电源2报警
|
||
state.m_IoEN = m_CXFlatLaserState.m_IoEN;
|
||
state.m_IoPWM = m_CXFlatLaserState.m_IoPWM;
|
||
state.m_IoStop = m_CXFlatLaserState.m_IoStop;
|
||
state.m_IoRed = m_CXFlatLaserState.m_IoRed;
|
||
state.m_LaserState = m_CXFlatLaserState.m_LaserState; //激光状态
|
||
state.m_RedLightState = m_CXFlatLaserState.m_RedLightState; //红光状态
|
||
state.m_IoStart = m_CXFlatLaserState.m_IoStart;
|
||
state.m_IoControl = m_CXFlatLaserState.m_IoControl;
|
||
state.m_PwmStartError = m_CXFlatLaserState.m_PwmStartError; //PWM开启报警
|
||
state.m_PdPowerError = m_CXFlatLaserState.m_PdPowerError; //PD电源报警
|
||
state.m_AnalogPower = m_CXFlatLaserState.m_AnalogPower;
|
||
LeaveCriticalSection(&m_ValueCS);
|
||
}
|
||
|
||
//void CXFlatLaserClient::DrawClientState()
|
||
//{
|
||
// CXFlatLaserState state;
|
||
// GetState(state);
|
||
// if (ImGui::BeginTabItem(GetConfig()->m_ClientCode.c_str())) {
|
||
// ImGui::BeginGroup();
|
||
// ImGui::Text(_(u8"激光端口连接:").c_str()); ImGui::SameLine();
|
||
// if (IsServerConnected()) {
|
||
// ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"正常").c_str());
|
||
// }
|
||
// else {
|
||
// ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"断开").c_str());
|
||
// }
|
||
// ImGui::Text(_(u8"激光通讯连接:").c_str()); ImGui::SameLine();
|
||
// if (IsComConnected()) {
|
||
// ImGui::TextColored(ImVec4(0.0, 1.0, 0.0, 1.0), _(u8"正常").c_str());
|
||
// }
|
||
// else ImGui::TextColored(ImVec4(1.0, 0.0, 0.0, 1.0), _(u8"断开").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"泵源温度:").c_str()); ImGui::SameLine(); ImGui::Text(u8"%d℃", state.m_PumpSourceTemperature);
|
||
// ImGui::Text(_(u8"光路温度:").c_str()); ImGui::SameLine(); ImGui::Text(u8"%d℃", state.m_OpticalPathTemperature);
|
||
// ImGui::Text(_(u8"电路温度:").c_str()); ImGui::SameLine(); ImGui::Text(u8"%d℃", state.m_CircuitTemperature);
|
||
// ImGui::Text(_(u8"驱动板1电流:").c_str()); ImGui::SameLine(); ImGui::Text("%.1fA", state.m_DriveBoard1Current);
|
||
// ImGui::Text(_(u8"驱动板2电流:").c_str()); ImGui::SameLine(); ImGui::Text("%.1fA", state.m_DriveBoard2Current);
|
||
// ImGui::Text(_(u8"驱动板3电流:").c_str()); ImGui::SameLine(); ImGui::Text("%.1fA", state.m_DriveBoard3Current);
|
||
// ImGui::Text(_(u8"驱动板4电流:").c_str()); ImGui::SameLine(); ImGui::Text("%.1fA", state.m_DriveBoard4Current);
|
||
// ImGui::Text(_(u8"传感器湿度:").c_str()); ImGui::SameLine(); ImGui::Text("%d%%", state.m_SensorHumidity);
|
||
// ImGui::Text(_(u8"内控功率:").c_str()); ImGui::SameLine(); ImGui::Text("%.1f%%", state.m_InternalControlPower);
|
||
// ImGui::Text(_(u8"模拟功率:").c_str()); ImGui::SameLine(); ImGui::Text("%.1f%%", state.m_AnalogPower);
|
||
//
|
||
//
|
||
// ImGui::Text(_(u8"PWM频率:").c_str()); ImGui::SameLine();
|
||
// ImGui::PushID("PwmFrequency");
|
||
// ImGui::PushItemWidth(80);
|
||
// state.m_PwmFrequencyAssist = state.m_PwmFrequency;
|
||
// if (ImGui::InputScalar(u8"Hz", ImGuiDataType_U16, &state.m_PwmFrequencyAssist, 0, 0, 0, ImGuiInputTextFlags_EnterReturnsTrue)) {
|
||
// SetPwmFrequency(state.m_PwmFrequencyAssist);
|
||
// g_log->TraceInfo(_(u8"更改PWM频率:%u").c_str(), state.m_PwmFrequencyAssist);
|
||
// }
|
||
// ImGui::PopItemWidth();
|
||
// ImGui::PopID();
|
||
//
|
||
// ImGui::Text(_(u8"PWM占空比:").c_str()); ImGui::SameLine();
|
||
// ImGui::PushID("PwmDutyCycle");
|
||
// ImGui::PushItemWidth(80);
|
||
// state.m_PwmDutyCycleAssist = state.m_PwmDutyCycle;
|
||
// if (ImGui::InputFloatEx(u8"%", &state.m_PwmDutyCycleAssist, 0, 0, 1, ImGuiInputTextFlags_EnterReturnsTrue)) {
|
||
// SetPwmDutyCycle(state.m_PwmDutyCycleAssist);
|
||
// g_log->TraceInfo(_(u8"更改PWM占空比:%.1f").c_str(), state.m_PwmDutyCycleAssist);
|
||
// }
|
||
// ImGui::PopItemWidth();
|
||
// ImGui::PopID();
|
||
//
|
||
// ImGui::Text(_(u8"PWM功率:").c_str()); ImGui::SameLine();
|
||
// ImGui::PushID("PwmPower");
|
||
// ImGui::PushItemWidth(80);
|
||
// state.m_PwmPowerAssist = state.m_PwmPower;
|
||
// if (ImGui::InputFloatEx(u8"%", &state.m_PwmPowerAssist, 0, 0, 1, ImGuiInputTextFlags_EnterReturnsTrue)) {
|
||
// SetPwmPower(state.m_PwmPowerAssist);
|
||
// g_log->TraceInfo(_(u8"更改PWM功率:%.1f").c_str(), state.m_PwmPowerAssist);
|
||
// }
|
||
// ImGui::PopItemWidth();
|
||
// ImGui::PopID();
|
||
//
|
||
//
|
||
// ImGui::EndGroup();
|
||
//
|
||
// ImGui::SameLine(0, 20);
|
||
// ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical);
|
||
// ImGui::SameLine();
|
||
//
|
||
// ImGui::BeginGroup();
|
||
// ImGui::Text(_(u8"泵源温度报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_PumpSourceTemperatureAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"光路温度报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_OpticalPathTemperatureAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"电路温度报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_CircuitTemperatureAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"加密过期报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_EncryptionExpirationAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"驱动板1过流报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_DriveBoard1OvercurrentAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"驱动板2过流报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_DriveBoard2OvercurrentAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"驱动板3过流报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_DriveBoard3OvercurrentAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"驱动板4过流报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_DriveBoard4OvercurrentAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"QBH温度报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_QbhTemperatureAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"外合束器温度报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_ExternalBeamCombinerTemperatureAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"水流量计报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_WaterFlowMeterAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"内部PD1报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_InternalPd1Alarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"内部PD2报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_Interna2Pd1Alarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::EndGroup();
|
||
//
|
||
// ImGui::SameLine(0, 20);
|
||
// ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical);
|
||
// ImGui::SameLine();
|
||
//
|
||
// ImGui::BeginGroup();
|
||
// ImGui::Text(_(u8"脉冲能量报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_PulseEnergyAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"QBH触点报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_QbhContactAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"急停报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_EmergencyStopAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"水流量开关报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_WaterFlowSwitchAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"互锁报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_InterlockAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"平均功率报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_AveragePowerAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"M报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_MAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"外合束器PD报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_ExternalBeamCombinerPdAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"外部模拟量报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_ExternalAnalogAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"异常出光报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_AbnormalLaserEmissionAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"上位机急停报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_UpperEmergencyStopAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"功率报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_PowerAlarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::EndGroup();
|
||
//
|
||
// ImGui::SameLine(0, 20);
|
||
// ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical);
|
||
// ImGui::SameLine();
|
||
//
|
||
// ImGui::BeginGroup();
|
||
// ImGui::Text(_(u8"主电源1报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_MainPowerSupply1Alarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"主电源2报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_MainPowerSupply2Alarm) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"PWM开启报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_PwmStartError) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"PD电源报警:").c_str()); ImGui::SameLine();
|
||
// if (state.m_PdPowerError) ImGui::TextColored(Toast::COLOR_RED, _(u8"报警").c_str());
|
||
// else ImGui::TextColored(Toast::COLOR_GREEN, _(u8"正常").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"m_IoEN:").c_str()); ImGui::SameLine();
|
||
// if (state.m_IoEN) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"m_IoPWM:").c_str()); ImGui::SameLine();
|
||
// if (state.m_IoPWM) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"m_IoStop:").c_str()); ImGui::SameLine();
|
||
// if (state.m_IoStop) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"m_IoRed:").c_str()); ImGui::SameLine();
|
||
// if (state.m_IoRed) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"激光状态:").c_str()); ImGui::SameLine();
|
||
// if (state.m_LaserState) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"红光状态:").c_str()); ImGui::SameLine();
|
||
// if (state.m_RedLightState) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"m_IoStart:").c_str()); ImGui::SameLine();
|
||
// if (state.m_IoStart) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::Text(_(u8"m_IoControl:").c_str()); ImGui::SameLine();
|
||
// if (state.m_IoControl) ImGui::Text(_(u8"是").c_str());
|
||
// else ImGui::Text(_(u8"否").c_str());
|
||
//
|
||
// ImGui::EndGroup();
|
||
// ImGui::SameLine(0, 20);
|
||
// ImGui::Spacing();
|
||
// ImGui::EndTabItem();
|
||
// }
|
||
//}
|