From b3dbcfc5b710031838c56be0bd8f42680bee297e Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 12 Aug 2024 10:10:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B6=E9=92=88=E7=9B=98=E4=B8=8E=E7=94=B5?= =?UTF-8?q?=E5=8E=8B=E7=94=B5=E6=B5=81=E4=B8=B2=E5=8F=A3=E5=B8=B8=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.cpp | 146 +++++++++--------- LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.h | 3 +- .../SmartStraightLineSerDriverCtl.cpp | 26 ++-- 3 files changed, 93 insertions(+), 82 deletions(-) diff --git a/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.cpp b/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.cpp index 8227c0c..7972125 100644 --- a/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.cpp +++ b/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.cpp @@ -1058,81 +1058,85 @@ void COtherMonitorDevMgr::OnO2ConcentrationCommRecv() } //读取机台的电流电压值 void COtherMonitorDevMgr::ReadDeviceCurrentAndVoltage() -{ - ComComm Comm; - if(!Comm.Open(m_DeviceCurrentAndVoltageCommPort,COMM_BAUD_RATE_9600)) - { - return; - } - ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent1, Comm); - ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent2, Comm); - ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent3, Comm); - ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevVoltage1, Comm); +{ + if (!DevComm.IsOpen()) + { + if (!DevComm.Open(m_DeviceCurrentAndVoltageCommPort, COMM_BAUD_RATE_9600)) + { + return; + } + } + ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent1); + ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent2); + ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent3); + ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevVoltage1); #if 0 - ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevSmoke,CommMgr); + ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevSmoke); #endif - Comm.Close(); } -void COtherMonitorDevMgr::ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType,ComComm &Comm) +void COtherMonitorDevMgr::ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType) { - Sleep(100); - - unsigned char Buf[COM_BUF_LEN]; - memset(Buf,0,COM_BUF_LEN); - //ADDR - int i = 0; - double RangeScal = 1.0;//量程系数(固定值) - switch(MonitorValType) - { - case _MonitorValType_DevCurrent1: - Buf[i++] = 0x01; - RangeScal = 40.0/10000/4; - break; - case _MonitorValType_DevCurrent2: - Buf[i++] = 0x03; - RangeScal = 40.0 / 10000 / 4; - break; - case _MonitorValType_DevCurrent3: - Buf[i++] = 0x04; - RangeScal = 40.0 / 10000 / 4; - break; - case _MonitorValType_DevVoltage1: - Buf[i++] = 0x02; - RangeScal = 500.0 / 10000 ; - break; - case _MonitorValType_DevSmoke: - Buf[i++] = 0x05; - RangeScal = 1.0; - break; - default: - return; - break; - } - //功能码 - Buf[i++] = 0x03; - //开始地址 - Buf[i++] = 0x00; - Buf[i++] = 0x0A; - //寄存器个数 - Buf[i++] = 0x00; - Buf[i++] = 0x01; - //CRC校验码 - int CRCH,CRCL; - CRC_16(Buf, i, CRCH,CRCL); - Buf[i++] = CRCH; - Buf[i++] = CRCL; - //发送 - Comm.Write(Buf,i); - Sleep(100); - memset(Buf,0,COM_BUF_LEN); - Comm.Read(Buf,COM_BUF_LEN); - //从串口数据中提取读数 - double ReadVal = -1; - int high = Byte2Int(Buf[3]); - int low = Byte2Int(Buf[4]); - ReadVal = high * 256 + low; - ReadVal = ReadVal*RangeScal; - SetMonitorDevVal(MonitorValType, ReadVal); + if (!DevComm.IsOpen()) + { + return; + } + Sleep(100); + unsigned char Buf[COM_BUF_LEN]; + memset(Buf, 0, COM_BUF_LEN); + //ADDR + int i = 0; + double RangeScal = 1.0;//量程系数(固定值) + switch (MonitorValType) + { + case _MonitorValType_DevCurrent1: + Buf[i++] = 0x01; + RangeScal = 40.0 / 10000 / 4; + break; + case _MonitorValType_DevCurrent2: + Buf[i++] = 0x03; + RangeScal = 40.0 / 10000 / 4; + break; + case _MonitorValType_DevCurrent3: + Buf[i++] = 0x04; + RangeScal = 40.0 / 10000 / 4; + break; + case _MonitorValType_DevVoltage1: + Buf[i++] = 0x02; + RangeScal = 500.0 / 10000; + break; + case _MonitorValType_DevSmoke: + Buf[i++] = 0x05; + RangeScal = 1.0; + break; + default: + return; + break; + } + //功能码 + Buf[i++] = 0x03; + //开始地址 + Buf[i++] = 0x00; + Buf[i++] = 0x0A; + //寄存器个数 + Buf[i++] = 0x00; + Buf[i++] = 0x01; + //CRC校验码 + int CRCH, CRCL; + CRC_16(Buf, i, CRCH, CRCL); + Buf[i++] = CRCH; + Buf[i++] = CRCL; + //发送 + DevComm.Write(Buf, i); + Sleep(100); + memset(Buf, 0, COM_BUF_LEN); + DevComm.Read(Buf, COM_BUF_LEN); + //从串口数据中提取读数 + double ReadVal = -1; + int high = Byte2Int(Buf[3]); + int low = Byte2Int(Buf[4]); + ReadVal = high * 256 + low; + ReadVal = ReadVal*RangeScal; + SetMonitorDevVal(MonitorValType, ReadVal); } void COtherMonitorDevMgr::DealAlarm(eAlarmType CurAlarmType, bool bThrow, CString ErrInfo) diff --git a/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.h b/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.h index f6207db..48cdfff 100644 --- a/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.h +++ b/LaiPuLaser/LaiPuLaser/OtherMonitorDevMgr.h @@ -102,10 +102,11 @@ public: void FluoroscopyO2ConcentrationCommRecv(); void PLCReadFFUVal(); private: - void ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType,ComComm &Comm); + void ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType); void DealAlarm(eAlarmType CurAlarmType, bool bThrow, CString ErrInfo); private: CCommPortMgr m_O2ConcentrationComm;//氧气浓度串口管理 + ComComm DevComm;//设备电压电流串口 int m_O2ConcentrationCommPort;//氧气浓度串口端口 int m_nO2DevType;//氧浓度设备类型 0 TORAY 1 鸿瑞稻科 2 荧光学 bool m_bCheckO2Concentration;//是否检测氧气浓度 diff --git a/LaiPuLaser/LaiPuLaser/YS_ThimblePlat/SmartStraightLineSerDriverCtl.cpp b/LaiPuLaser/LaiPuLaser/YS_ThimblePlat/SmartStraightLineSerDriverCtl.cpp index 49f327d..c4c8a62 100644 --- a/LaiPuLaser/LaiPuLaser/YS_ThimblePlat/SmartStraightLineSerDriverCtl.cpp +++ b/LaiPuLaser/LaiPuLaser/YS_ThimblePlat/SmartStraightLineSerDriverCtl.cpp @@ -71,10 +71,13 @@ int CSmartStraightLineSerDriverCtl::QueryPostion(int nTimeSecOut) return -1; } int nRet = -1; - bool bRet = m_comCtl.Open(m_nCom, m_nBaud); - if (!bRet) + if (!m_comCtl.IsOpen()) { - return nRet; + bool bRet = m_comCtl.Open(m_nCom, m_nBaud); + if (!bRet) + { + return nRet; + } } if (m_comCtl.IsOpen()) { @@ -150,7 +153,7 @@ int CSmartStraightLineSerDriverCtl::QueryPostion(int nTimeSecOut) } } while (m_bInit); } - m_comCtl.Close(); + //m_comCtl.Close(); return nRet; } @@ -227,12 +230,15 @@ int CSmartStraightLineSerDriverCtl::SetPostion(int nPostion,int nTimeSecOut) string strOUT; //测试发现偶尔出现USB 转COM 掉线问题,以及此设备报文必须发送后等待应答了才能发送下一个 //所以保险每次都重新打开串口 - m_comCtl.Close(); - bool bRet = m_comCtl.Open(m_nCom, m_nBaud); - if (!bRet) + //m_comCtl.Close(); + if (!m_comCtl.IsOpen()) { - m_pLog->LogDebug( "串口打开失败:%ld", GetLastError()); - return nRet; + bool bRet = m_comCtl.Open(m_nCom, m_nBaud); + if (!bRet) + { + m_pLog->LogDebug("串口打开失败:%ld", GetLastError()); + return nRet; + } } do @@ -304,7 +310,7 @@ int CSmartStraightLineSerDriverCtl::SetPostion(int nPostion,int nTimeSecOut) break; } } while (m_bInit); - m_comCtl.Close(); + //m_comCtl.Close(); return nRet; }