顶针盘与电压电流串口常连接

main
admin 2 months ago
parent 7554c180e2
commit b3dbcfc5b7

@ -1058,81 +1058,85 @@ void COtherMonitorDevMgr::OnO2ConcentrationCommRecv()
} }
//读取机台的电流电压值 //读取机台的电流电压值
void COtherMonitorDevMgr::ReadDeviceCurrentAndVoltage() void COtherMonitorDevMgr::ReadDeviceCurrentAndVoltage()
{ {
ComComm Comm; if (!DevComm.IsOpen())
if(!Comm.Open(m_DeviceCurrentAndVoltageCommPort,COMM_BAUD_RATE_9600)) {
{ if (!DevComm.Open(m_DeviceCurrentAndVoltageCommPort, COMM_BAUD_RATE_9600))
return; {
} return;
ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent1, Comm); }
ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent2, Comm); }
ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent3, Comm); ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent1);
ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevVoltage1, Comm); ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent2);
ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevCurrent3);
ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevVoltage1);
#if 0 #if 0
ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevSmoke,CommMgr); ReadDeviceCurrentAndVoltageExt(_MonitorValType_DevSmoke);
#endif #endif
Comm.Close();
} }
void COtherMonitorDevMgr::ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType,ComComm &Comm) void COtherMonitorDevMgr::ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType)
{ {
Sleep(100); if (!DevComm.IsOpen())
{
unsigned char Buf[COM_BUF_LEN]; return;
memset(Buf,0,COM_BUF_LEN); }
//ADDR Sleep(100);
int i = 0; unsigned char Buf[COM_BUF_LEN];
double RangeScal = 1.0;//量程系数(固定值) memset(Buf, 0, COM_BUF_LEN);
switch(MonitorValType) //ADDR
{ int i = 0;
case _MonitorValType_DevCurrent1: double RangeScal = 1.0;//量程系数(固定值)
Buf[i++] = 0x01; switch (MonitorValType)
RangeScal = 40.0/10000/4; {
break; case _MonitorValType_DevCurrent1:
case _MonitorValType_DevCurrent2: Buf[i++] = 0x01;
Buf[i++] = 0x03; RangeScal = 40.0 / 10000 / 4;
RangeScal = 40.0 / 10000 / 4; break;
break; case _MonitorValType_DevCurrent2:
case _MonitorValType_DevCurrent3: Buf[i++] = 0x03;
Buf[i++] = 0x04; RangeScal = 40.0 / 10000 / 4;
RangeScal = 40.0 / 10000 / 4; break;
break; case _MonitorValType_DevCurrent3:
case _MonitorValType_DevVoltage1: Buf[i++] = 0x04;
Buf[i++] = 0x02; RangeScal = 40.0 / 10000 / 4;
RangeScal = 500.0 / 10000 ; break;
break; case _MonitorValType_DevVoltage1:
case _MonitorValType_DevSmoke: Buf[i++] = 0x02;
Buf[i++] = 0x05; RangeScal = 500.0 / 10000;
RangeScal = 1.0; break;
break; case _MonitorValType_DevSmoke:
default: Buf[i++] = 0x05;
return; RangeScal = 1.0;
break; break;
} default:
//功能码 return;
Buf[i++] = 0x03; break;
//开始地址 }
Buf[i++] = 0x00; //功能码
Buf[i++] = 0x0A; Buf[i++] = 0x03;
//寄存器个数 //开始地址
Buf[i++] = 0x00; Buf[i++] = 0x00;
Buf[i++] = 0x01; Buf[i++] = 0x0A;
//CRC校验码 //寄存器个数
int CRCH,CRCL; Buf[i++] = 0x00;
CRC_16(Buf, i, CRCH,CRCL); Buf[i++] = 0x01;
Buf[i++] = CRCH; //CRC校验码
Buf[i++] = CRCL; int CRCH, CRCL;
//发送 CRC_16(Buf, i, CRCH, CRCL);
Comm.Write(Buf,i); Buf[i++] = CRCH;
Sleep(100); Buf[i++] = CRCL;
memset(Buf,0,COM_BUF_LEN); //发送
Comm.Read(Buf,COM_BUF_LEN); DevComm.Write(Buf, i);
//从串口数据中提取读数 Sleep(100);
double ReadVal = -1; memset(Buf, 0, COM_BUF_LEN);
int high = Byte2Int(Buf[3]); DevComm.Read(Buf, COM_BUF_LEN);
int low = Byte2Int(Buf[4]); //从串口数据中提取读数
ReadVal = high * 256 + low; double ReadVal = -1;
ReadVal = ReadVal*RangeScal; int high = Byte2Int(Buf[3]);
SetMonitorDevVal(MonitorValType, ReadVal); int low = Byte2Int(Buf[4]);
ReadVal = high * 256 + low;
ReadVal = ReadVal*RangeScal;
SetMonitorDevVal(MonitorValType, ReadVal);
} }
void COtherMonitorDevMgr::DealAlarm(eAlarmType CurAlarmType, bool bThrow, CString ErrInfo) void COtherMonitorDevMgr::DealAlarm(eAlarmType CurAlarmType, bool bThrow, CString ErrInfo)

@ -102,10 +102,11 @@ public:
void FluoroscopyO2ConcentrationCommRecv(); void FluoroscopyO2ConcentrationCommRecv();
void PLCReadFFUVal(); void PLCReadFFUVal();
private: private:
void ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType,ComComm &Comm); void ReadDeviceCurrentAndVoltageExt(eMonitorValType MonitorValType);
void DealAlarm(eAlarmType CurAlarmType, bool bThrow, CString ErrInfo); void DealAlarm(eAlarmType CurAlarmType, bool bThrow, CString ErrInfo);
private: private:
CCommPortMgr m_O2ConcentrationComm;//氧气浓度串口管理 CCommPortMgr m_O2ConcentrationComm;//氧气浓度串口管理
ComComm DevComm;//设备电压电流串口
int m_O2ConcentrationCommPort;//氧气浓度串口端口 int m_O2ConcentrationCommPort;//氧气浓度串口端口
int m_nO2DevType;//氧浓度设备类型 0 TORAY 1 鸿瑞稻科 2 荧光学 int m_nO2DevType;//氧浓度设备类型 0 TORAY 1 鸿瑞稻科 2 荧光学
bool m_bCheckO2Concentration;//是否检测氧气浓度 bool m_bCheckO2Concentration;//是否检测氧气浓度

@ -71,10 +71,13 @@ int CSmartStraightLineSerDriverCtl::QueryPostion(int nTimeSecOut)
return -1; return -1;
} }
int nRet = -1; int nRet = -1;
bool bRet = m_comCtl.Open(m_nCom, m_nBaud); if (!m_comCtl.IsOpen())
if (!bRet)
{ {
return nRet; bool bRet = m_comCtl.Open(m_nCom, m_nBaud);
if (!bRet)
{
return nRet;
}
} }
if (m_comCtl.IsOpen()) if (m_comCtl.IsOpen())
{ {
@ -150,7 +153,7 @@ int CSmartStraightLineSerDriverCtl::QueryPostion(int nTimeSecOut)
} }
} while (m_bInit); } while (m_bInit);
} }
m_comCtl.Close(); //m_comCtl.Close();
return nRet; return nRet;
} }
@ -227,12 +230,15 @@ int CSmartStraightLineSerDriverCtl::SetPostion(int nPostion,int nTimeSecOut)
string strOUT; string strOUT;
//测试发现偶尔出现USB 转COM 掉线问题,以及此设备报文必须发送后等待应答了才能发送下一个 //测试发现偶尔出现USB 转COM 掉线问题,以及此设备报文必须发送后等待应答了才能发送下一个
//所以保险每次都重新打开串口 //所以保险每次都重新打开串口
m_comCtl.Close(); //m_comCtl.Close();
bool bRet = m_comCtl.Open(m_nCom, m_nBaud); if (!m_comCtl.IsOpen())
if (!bRet)
{ {
m_pLog->LogDebug( "´®¿Ú´ò¿ªÊ§°Ü:%ld", GetLastError()); bool bRet = m_comCtl.Open(m_nCom, m_nBaud);
return nRet; if (!bRet)
{
m_pLog->LogDebug("´®¿Ú´ò¿ªÊ§°Ü:%ld", GetLastError());
return nRet;
}
} }
do do
@ -304,7 +310,7 @@ int CSmartStraightLineSerDriverCtl::SetPostion(int nPostion,int nTimeSecOut)
break; break;
} }
} while (m_bInit); } while (m_bInit);
m_comCtl.Close(); //m_comCtl.Close();
return nRet; return nRet;
} }

Loading…
Cancel
Save