📄 103function.cpp
字号:
#include "103Function.h"// #include <qfile.h>// #include <qdatetime.h>#include <time.h>#include "baseclass/publicclass.h"#ifndef FALSE#define FALSE false#endif#ifndef TRUE#define TRUE true#endif#define _T//////////////////////////////////////////////////////////////////////// CModfiyDingzhi//////////////////////////////////////////////////////////////////////CModfiyDingzhi::CModfiyDingzhi(){ m_bGroup = 0x00; m_bEntry = 0x00; m_bType = 0x00; m_bLen = 0x00;}//////////////////////////////////////////////////////////////////////// CDistrubData//////////////////////////////////////////////////////////////////////CDistrubData::CDistrubData(){ m_iNOE = 0; m_iNOC = 0; m_iFAN = 0; m_iINT = 0;}CDistrubData::~CDistrubData(){}void CDistrubData::SaveACCInfo(BYTE* pData){ ACCInfo aData; aData.ACC = pData[0]; aData.RPV = *(float*)(pData+1); aData.RSV = *(float*)(pData+5); aData.RFA = *(float*)(pData+9); m_ACCInfo.Add(aData);}void CDistrubData::SaveACCInfo(BYTE ACC, float RPV, float RSV, float RFA){ ACCInfo aData; aData.ACC = ACC; aData.RPV = RPV; aData.RSV = RSV; aData.RFA = RFA; m_ACCInfo.Add(aData);}void CDistrubData::SaveSwitchData(BYTE* pData){ m_SwitchDataNOT.Add(pData[0]); SwitchData sData; memset(sData.byte, 0x00, sizeof(SwitchData)); int index = 3; WORD wtmp = 0; memcpy(&wtmp, &pData[1], 2*sizeof(BYTE)); if ((wtmp == 0) && (m_SwitchDataNOT.GetSize() == 2)) { m_SwitchDataNOT.RemoveAt(1); m_SwitchDataNOT.SetAt(0, m_SwitchDataNOT.GetAt(0)+pData[0]); } for (int i=0; i<pData[0]; i++) { sData.data.TAP=wtmp; memcpy(sData.byte+2, &pData[index], 3); index += 3; m_SwitchData.Add(sData); }}void CDistrubData::SaveChannelData(BYTE* pData){ CChannelData *pcData; WORD wtmp = 0; int iACC = -1; int step = 0; BYTE btmp; if (m_ChannelData.count() > 0) { pcData = m_ChannelData.at(m_ChannelData.count()-1); iACC = pcData->m_ACC; } if (m_ChannelData.count()>0&&iACC == pData[0]) { pcData = m_ChannelData.at(m_ChannelData.count()-1); btmp = *(pData+1); pcData->m_NDV.Add(btmp);#ifdef NR_WAVE_DEBUG cout<<"pcData->m_NDV.add(btmp);btmp="<<(int)btmp<<endl;#endif wtmp = *(WORD *)(pData+2); pcData->m_NFE.Add(wtmp);#ifdef NR_WAVE_DEBUG cout<<"pcData->m_NFE.add(wtmp);wtmp="<<(int)wtmp<<endl;#endif step = 0; int iNDV = pcData->m_NDV.GetAt(pcData->m_NDV.GetSize()-1); for (int i=0; i<iNDV; i++) { wtmp = *(WORD *)(pData+4+step); step += 2; pcData->m_SDV.Add(wtmp); } } else { pcData = new CChannelData; pcData->m_ACC = pData[0]; btmp = *(pData+1); pcData->m_NDV.Add(btmp); wtmp = *(WORD *)(pData+2); pcData->m_NFE.Add(wtmp); step = 0; for (int i=0; i<pcData->m_NDV[0]; i++) { wtmp = *(WORD *)(pData+4+step); step += 2; pcData->m_SDV.Add(wtmp); } m_ChannelData.append(pcData); }}CString CDistrubData::CreateWaveFile(int iCpuNo, CString szFilePath){ CString strtmp = ""; strtmp.sprintf("%s%04d%02d%02d%02d%02d%05d-%d", szFilePath.data(), m_FaultDataTime.Time.Years+2000, m_FaultDataTime.Time.Months, m_FaultDataTime.Time.DaysOfMonth, m_FaultDataTime.Time.Hours, m_FaultDataTime.Time.Minutes, m_FaultDataTime.Time.Milliseconds, m_iFAN); if (!SortData()) { printf("can not create SortData\n"); DeleteData(); return ""; } if (CreateDATFile(strtmp)) { CreateCFGFile(iCpuNo, strtmp); CreateHDRFile(strtmp); } else { printf("can not create Dat File\n"); strtmp = ""; } DeleteData(); return strtmp;}void CDistrubData::CreateCFGFile(int iCpuNo, CString szFileName){ szFileName += ".cfg"; CString strtmp = ""; QFile fFile(szFileName); if (!fFile.open(IO_WriteOnly)) return; QTextStream ts(&fFile); strtmp.sprintf("%sCPU%d,%d\r\n", m_szDeviceName.data(), iCpuNo, m_iDeviceNo); ts<<strtmp; m_iAnalogSum = m_ACCInfo.GetSize(); m_iSwitchSum = m_SwitchDataNOT.GetAt(0); strtmp.sprintf("%d,%dA,%dD\r\n", m_iAnalogSum+m_iSwitchSum, m_iAnalogSum, m_iSwitchSum); ts<<strtmp; CString szDesc1 = "", szDesc2 = "", sztmp = "", szfun = "", szinf = ""; float fFactor = 0.0; ACCInfo aData; int i = 0; sztmp.sprintf("%d", iCpuNo); QDomNode node, cnode; node = m_pXml->GetDomNodex(QString("body"), "WAVEANALOG", "cpuno", sztmp.data(),NULL,NULL); if (node.isNull()) { printf("CDistrubData::CreateCFGFile\n\tcan not get <WAVEANALOG/> with cpu %s\n",sztmp.data()); return; } for (i=1; i<=m_iAnalogSum; i++) { aData = m_ACCInfo.GetAt(i-1); fFactor = 1/aData.RFA; sztmp.sprintf("%d", aData.ACC); cnode = m_pXml->GetChildNode(node, "ELEMENT", "no", sztmp.data(),NULL,NULL); if (!m_pXml->GetNodeAttr(cnode, "value1", szDesc1)) return; if (!m_pXml->GetNodeAttr(cnode, "value2", szDesc2)) return; strtmp.sprintf("%d,", i); strtmp += m_szLineName; strtmp += " "; strtmp += szDesc1; CString szfactor = ""; szfactor.sprintf("%g", fFactor); strtmp += szfactor; strtmp += szDesc2; strtmp += "\r\n"; strtmp = strtmp; ts<<strtmp; } SwitchData sData; sztmp.sprintf("%d", iCpuNo); node = m_pXml->GetDomNodex(QString("body"), "WAVESWITCH", "cpuno", sztmp.data(),NULL,NULL); if (node.isNull()) { printf("CDistrubData::CreateCFGFile\n\tcan not get <WAVESWITCH/> with cpu %s\n",sztmp.data()); return; } for (i=1; i<=m_iSwitchSum; i++) { sData = m_SwitchData.GetAt(i-1); szinf.sprintf("%d", sData.data.INF); cnode = m_pXml->GetChildNode(node, "ELEMENT", "pinf", szinf.data(),NULL,NULL); if (cnode.isNull()) { szDesc1.sprintf("NOTFIND INF:%d", sData.data.INF); szDesc2 = "1"; } else { if (!m_pXml->GetNodeAttr(cnode, "desc", szDesc1)) { printf("CDistrubData::CreateCFGFile\n\tcan not get desc of WAVESWITCH %d \n",i); return; } if (!m_pXml->GetNodeAttr(cnode, "level", szDesc2)) { printf("CDistrubData::CreateCFGFile\n\tcan not get level of WAVESWITCH %d \n",i); return; } } strtmp.sprintf("%d,", m_iAnalogSum+i); strtmp += m_szLineName; strtmp += " "; strtmp += szDesc1; strtmp += ","; strtmp += szDesc2; strtmp += "\r\n"; strtmp = strtmp; ts<<strtmp; } strtmp.sprintf("50\r\n"); ts<<strtmp; strtmp.sprintf("1\r\n"); ts<<strtmp; strtmp.sprintf("%d,%d\r\n", 1000000/m_iINT, m_iNOE); ts<<strtmp; strtmp.sprintf("%02d/%02d/%d,%02d:%02d:%02d.%03d\r\n", m_FaultDataTime.Time.Months, m_FaultDataTime.Time.DaysOfMonth, m_FaultDataTime.Time.Years, m_FaultDataTime.Time.Hours, m_FaultDataTime.Time.Minutes, m_FaultDataTime.Time.Milliseconds/1000, m_FaultDataTime.Time.Milliseconds%1000); ts<<strtmp; strtmp.sprintf("%02d/%02d/%d,%02d:%02d:%02d.%03d\r\n", m_FaultStartTime.Time.Months, m_FaultStartTime.Time.DaysOfMonth, m_FaultStartTime.Time.Years, m_FaultStartTime.Time.Hours, m_FaultStartTime.Time.Minutes, m_FaultStartTime.Time.Milliseconds/1000, m_FaultStartTime.Time.Milliseconds%1000); ts<<strtmp; strtmp.sprintf("BINARY\r\n"); ts<<strtmp; fFile.close();}BOOL CDistrubData::CreateDATFile(CString szFileName){ szFileName += ".dat"; CString strtmp = ""; QFile fFile(szFileName); int index = 1; int iInt = 0; CChannelData *pcData; SwitchData sData; int i = 0, j = 0, k = 0; if (m_SwitchDataNOT.GetSize() == 0) { printf("m_SwitchDataNOT.GetSize() == 0\n"); return FALSE; } int iSwitchPoint = 0;//数字通道长度 int nLen = 0;//每个采样点总长 if (m_SwitchDataNOT.GetAt(0)%16 > 0) iSwitchPoint = m_SwitchDataNOT.GetAt(0)/16+1; else iSwitchPoint = m_SwitchDataNOT.GetAt(0)/16; nLen = /*sizeof(int)*2/sizeof(WORD)=4*/4+m_iNOC+iSwitchPoint; WORD *pData = new WORD[m_iNOE*nLen]; memset(pData, 0x00, m_iNOE*nLen*2); WORD tmp = 0; pcData = m_ChannelData.at(0); if (m_iNOE > pcData->m_SDV.GetSize()) { m_iNOE = pcData->m_SDV.GetSize(); } for (i=0; i<m_iNOE; i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -