📄 ptcmdf.cpp
字号:
//{
// CString strTip ;
// strTip.Format( "异常:执行MDF响应命令ACmd50H发生异常:%s ",(LPCSTR)e.Description() ) ;
// cAdo.WriteLog(strTip) ;
// return -1 ;
//}
return -1;
}
//##ModelId=44B6F88400E0
int CPtcMDF::ACmd51H(sCommItem *pItem)
{
char acEQ[10];
char acComp[20] ;
char* pTemp ;
UCHAR ucCover ;
int i,nLen ;
CString strTip ;
CString strTemp1,strTemp2 ;
CAdoDB cAdo ;
try
{
//cAdo.InitDB() ;
nLen = pItem->strBuf.GetLength() ;
if( nLen < 80 )
{
strTip.Format("异常:设备 %s 获取监厂家信息 响应命令 格式出错 ",pItem->pEQ->strName) ;
theApp.DebugShow(strTip) ;
cAdo.WriteLog(strTip) ;
return -1 ;
}
memset(acEQ,0,sizeof(acEQ)) ;
memset(acComp,0,sizeof(acComp)) ;
pTemp = (char*)pItem->InPack.INFO ;
i = strlen( pTemp ) ;
memcpy(acEQ,pTemp,i) ;
acEQ[i] = '\0' ;
strTemp1 = acEQ ;
strTemp2 = "采集器名称:" + strTemp1 ;
ucCover = *(pItem->InPack.INFO+11) ;
if(ucCover > 0x09)
strTemp1.Format("厂家软件版本:%d.1%d ", *(pItem->InPack.INFO+10),ucCover-0x0A) ;
else
strTemp1.Format("厂家软件版本:%d.0%d ", *(pItem->InPack.INFO+10),ucCover) ;
strTemp2 += strTemp1 ;
pTemp += 12 ;
i = strlen(pTemp) ;
memcpy( acComp, pTemp , i) ;
acComp[i] = '\0' ;
strTemp1 = acComp ;
strTemp2 += "厂家名称:" + strTemp1 ;
//-测试-
theApp.DebugShow(strTemp2) ;
return 0 ;
}
catch(_com_error e)
{
strTip.Format( "异常:执行MDF响应命令ACmd51H发生异常:%s ",(LPCSTR)e.Description() ) ;
cAdo.WriteLog(strTip) ;
return -1 ;
}
}
//##ModelId=44B6F88400DE
int CPtcMDF::ACmd60H(sCommItem *pItem)
{
int nLen ;
CString strTip ;
CAdoDB cAdo ;
try
{
//cAdo.InitDB() ;
nLen = pItem->strBuf.GetLength() ;
if( nLen < 16 )
{
strTip.Format("异常:设备 %s 初始化响应命令格式出错 %s ",pItem->pEQ->strName,pItem->strBuf) ;
theApp.DebugShow(strTip) ;
cAdo.WriteLog(strTip) ;
return -1 ;
}
if( pItem->pEQ->nTimeOut >= CONFIRM_TIME )
{
pItem->pEQ->nTimeOut = 0 ;
strTip.Format("系统:设备 %s 通讯恢复正常",pItem->pEQ->strName) ;
theApp.DebugShow(strTip) ;
cAdo.WriteLog(strTip) ;
}
strTip.Format("系统:设备 %s 初始化 成功",pItem->pEQ->strName) ;
theApp.DebugShow(strTip) ;
cAdo.WriteLog(strTip) ;
pItem->pEQ->unCommState = 1 ;//设置设备为已初始化状态
pItem->pEQ->nTimeOut = 0 ;//超时复位
return 0 ;
}
catch(_com_error e)
{
strTip.Format( "异常:执行MDF响应命令ACmd60H发生异常:%s ",(LPCSTR)e.Description() ) ;
cAdo.WriteLog(strTip) ;
return -1 ;
}
}
//##ModelId=44B6F88400DC
int CPtcMDF::Order(sCommItem *pItem)
{
return 0 ;
}
//##ModelId=44B6F88400CE
int CPtcMDF::Build( sCommEQ *pEQ, UCHAR ucCmd, CString& strSend )
{
UCHAR* ucpSend ;
DWORD dwCHKSUM ;
DWORD len ;
int nYear ;
char cTemp[3] ;
UCHAR cTimeSrc[10] ;
char cTimeDst[10] ;
CString strCHKSUM ;
CString strTemp ;
CString strTime ;
CString strTip ;
if(pEQ == NULL )
return -1 ; // 添加未知设备处理
try
{
BytesToString(&ucCmd,cTemp,1) ;
strSend.Empty() ;
if( pEQ->strIDAddr.GetLength() != 2 )
{
strSend.Empty() ;
strTip.Format("异常:监测模块:%s 非法地址:%s 无法生成 %s 命令包 %s",pEQ->strName,pEQ->strIDAddr,(LPSTR)cTemp ) ;
theApp.WriteTxtLog(strTip) ;
return -1 ;
}
if( pEQ->strType.GetLength() != 2 )
{
strSend.Empty() ;
strTip.Format("异常:监测模块:%s 非法类型:%s 无法生成 %s 命令包 %s",pEQ->strName,pEQ->strIDAddr,(LPSTR)cTemp ) ;
theApp.WriteTxtLog(strTip) ;
return -1 ;
}
strSend = char(0X7E) ;
strSend += "10" ;
strSend += pEQ->strIDAddr ;
strSend += pEQ->strType ;
if( ucCmd > 0xF0 )
strSend += "00" ;
else
strSend += (LPSTR)cTemp ;
switch (ucCmd)
{
case 0x4E : //设置监测模块时间
strTemp = m_fun.GetLENGTH(14) ; //生成LENGTH
nYear = atoi(CTime::GetCurrentTime().Format("%Y")) ;
cTimeSrc[0] = nYear >> 8 ;
cTimeSrc[1] = nYear & 0xFF ;
cTimeSrc[2] = atoi(CTime::GetCurrentTime().Format("%m")) ;
cTimeSrc[3] = atoi(CTime::GetCurrentTime().Format("%d")) ;
cTimeSrc[4] = atoi(CTime::GetCurrentTime().Format("%H")) ;
cTimeSrc[5] = atoi(CTime::GetCurrentTime().Format("%M")) ;
cTimeSrc[6] = atoi(CTime::GetCurrentTime().Format("%S")) ;
BytesToString(cTimeSrc,cTimeDst,7) ;
strTime = (LPSTR)cTimeDst ;
strSend += strTemp + strTime ;
break ;
case 0xF2 ://生成相应报警包
break ;
default :
strTemp = m_fun.GetLENGTH(0) ;
strSend += strTemp ;
break ;
}
//if(strTemp.GetLength() > 4) //出错误的LENGTH将大于正常的4字节
//return -1 ;
len = strSend.GetLength() - 1 ; //数据内容长度
ucpSend = (UCHAR*)strSend.GetBuffer(0) ;
dwCHKSUM = m_fun.GetCHKSUM(++ucpSend,len) ;
strSend += m_fun.CHKSUMToString(dwCHKSUM) ;
strSend += char(0X0D) ;
return 0 ;
}
catch(_com_error e)
{
strTip.Format( "异常:监测模块:%s 组包发生异常:%s",pEQ->strName,(LPCSTR)e.Description() ) ;
theApp.WriteTxtLog(strTip) ;
return -1 ;
}
return -1;
}
//##ModelId=44B6F88400CE
CString CPtcMDF::Build( CString strAddr,CString strType, UCHAR ucCmd)
{
UCHAR* ucpSend ;
DWORD dwCHKSUM ;
DWORD len ;
int nYear ;
char cTemp[3] ;
//BYTE btTemp;
UCHAR cTimeSrc[10] ;
char cTimeDst[10] ;
CString strSend;
CString strCHKSUM ;
CString strTemp ;
CString strTime ;
CString strTip ;
try
{
BytesToString(&ucCmd,cTemp,1) ;
strSend.Empty();
strTemp.Empty();
if( strAddr.GetLength() == 0 )
{
return "";
}
if( strType.GetLength() == 0 )
{
return "" ;
}
strSend = char(0X7E) ;
strSend += ID_VER ;
strSend += strAddr ;
strSend += strType ;
if( ucCmd > 0xF0 )
strSend += "00" ;
else
{
String2Hex(strTemp,&ucCmd,1);
strSend += strTemp;
}
switch (ucCmd)
{
case 0x4E : //设置监测模块时间
strTemp = m_fun.GetLENGTH(14) ; //生成LENGTH
nYear = atoi(CTime::GetCurrentTime().Format("%Y")) ;
cTimeSrc[0] = nYear >> 8 ;
cTimeSrc[1] = nYear & 0xFF ;
cTimeSrc[2] = atoi(CTime::GetCurrentTime().Format("%m")) ;
cTimeSrc[3] = atoi(CTime::GetCurrentTime().Format("%d")) ;
cTimeSrc[4] = atoi(CTime::GetCurrentTime().Format("%H")) ;
cTimeSrc[5] = atoi(CTime::GetCurrentTime().Format("%M")) ;
cTimeSrc[6] = atoi(CTime::GetCurrentTime().Format("%S")) ;
BytesToString(cTimeSrc,cTimeDst,7) ;
strTime = (LPSTR)cTimeDst ;
strSend += strTemp + strTime ;
break ;
case 0xF2 ://生成相应报警包
break ;
default :
strTemp = m_fun.GetLENGTH(0) ;
strSend += strTemp ;
break ;
}
//if(strTemp.GetLength() > 4) //出错误的LENGTH将大于正常的4字节
//return -1 ;
len = strSend.GetLength() - 1 ; //数据内容长度
ucpSend = (UCHAR*)strSend.GetBuffer(0) ;
dwCHKSUM = m_fun.GetCHKSUM(++ucpSend,len) ;
strSend += m_fun.CHKSUMToString(dwCHKSUM) ;
strSend += char(0X0D) ;
return strSend;
}
catch(_com_error e)
{
strTip.Format( "监测模块发生异常:%s",(LPCSTR)e.Description() ) ;
TRACE0(strTip) ;
return "";
}
return "";
}
//##ModelId=44B6F88400CC
CString CPtcMDF::GetCmdNote(UCHAR ucCmd)
{
CString strNote ;
switch( ucCmd )
{
case 0x44 :
strNote = "获取监测模块告警" ;
break ;
case 0x4d :
strNote = "获取检测模块时间" ;
break ;
case 0x4e :
strNote = "设定检测模块时间" ;
break ;
case 0x4f :
strNote = "获取通信协议版本号" ;
break ;
case 0x50 :
strNote = "获取设备地址" ;
break ;
case 0x51 :
strNote = "获取设备厂家信息" ;
break ;
case 0x55 :
strNote = "程序测试用码(获取命令格式)" ;
break ;
case 0x58 :
strNote = "系统复位启动" ;
break ;
case 0x60 :
strNote = "初始化检测模块" ;
break ;
case 0xe0 :
strNote = "设备告警上传" ;
break ;
default :
strNote = "未知命令" ;
break ;
}
return strNote ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -