⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trans.cpp

📁 VC环境下电力系统故障录波数据管理系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
{
	CListCtrl *temp;
	temp = (CListCtrl *)GetDlgItem(IDC_LIST2);
    
	((CButton *)GetDlgItem(IDC_SEND))->EnableWindow(FALSE);
	((CButton *)GetDlgItem(IDC_RECEIVE))->EnableWindow(TRUE);
    
	UINT Count = temp->GetItemCount();
	LV_ITEM lvItem;
    char FileName[13];

	for(UINT i=0; i<Count; i++)
	   {
	     memset(&lvItem, 0x00, sizeof(LV_ITEM));

         lvItem.mask = LVIF_TEXT|LVIF_STATE;
		 lvItem.iItem = i;
		 lvItem.iSubItem = 0;
         lvItem.pszText = FileName;
         lvItem.cchTextMax = 12;
         lvItem.stateMask = LVIS_SELECTED;
                  
		 BOOL WWW = ((CListCtrl *)GetDlgItem(IDC_LIST2))->GetItem(&lvItem);

		 if(lvItem.mask & LVIF_STATE)
		   {
		    if(lvItem.state & LVIS_SELECTED)break;
		   }
	   }
    if(i==Count)return;
	char tempstr[13];
	temp->GetItemText(i, 0, tempstr, 13);
	lstrcpy(szName, m_strDataPath);
	if(szName[lstrlen(szName)-1] == '\\')
       lstrcat(szName, tempstr);
    else
	   {
			lstrcat(szName, "\\");
			lstrcat(szName, tempstr);
		}
	lstrcpy(ReceFileName, tempstr);
	int kkk = WyyReceFile();
    if(kkk > 0)
		{
			if(AfxMessageBox("文件已正确接收, 是否将其加入故障文件数据库!", MB_OKCANCEL) == IDOK)
				{
					struct FAULT_RECORD Rece ={"0","1998-09-28 12:20:20","77",
		"99999.99","武汉市邮电局","武汉市邮电局","广宁线","wyy100","A","1",
		"wgu34.wgl","zhx","3","1998.092812","1","1"};
					char drive[_MAX_DRIVE];
					char dir[_MAX_DIR];
					char fname[_MAX_FNAME];
					char ext[_MAX_EXT];

					CAnalysis Analysis;
					
					Analysis.m_ConfigFileName1 = m_strRecordPath + _T("sys1.dat");
					Analysis.m_ConfigFileName2 = m_strRecordPath + _T("sys2.dat");
					Analysis.m_StrglconfigFile = m_strRecordPath + _T("glconfig.dat");
					Analysis.m_FaultFileName   = WyyFileName;
					_splitpath(WyyFileName, drive, dir, fname, ext);
					Analysis.m_strReportFile.Empty();
					Analysis.m_strReportFile += _T(drive);
					Analysis.m_strReportFile += _T(dir);
					Analysis.m_strReportFile += _T(fname);
					Analysis.m_strReportFile += _T(".rpt");
					
					if(Analysis.InitSys() == -1)return;
					if(Analysis.ReadFile() == -1)return;
					if(Analysis.tab1(1) == -1)return;
					if(Analysis.fFaultJL == -1)
					{
						AfxMessageBox("本次数据无故障,将不加入故障数据库!");
						return;
					}
					
					lstrcpy(Rece.StartDateTime, Analysis.m_DateTime);
					char *ptemp, tempstr[10];
					ptemp = Rece.StartDateTime;
					ptemp[lstrlen(ptemp)-3]=0x00;
					struct tm tt;
					
					ptemp = strrchr(Analysis.m_DateTime, '.');
					lstrcpy(tempstr, ptemp+1);
					tempstr[3] =0x00;
					lstrcpy(Rece.StartMTime, tempstr);
					*ptemp = 0x00;
				
					ptemp = strrchr(Analysis.m_DateTime, ':');
					tt.tm_sec = atoi(ptemp+1);  
					*ptemp =0x00;
				
					ptemp = strrchr(Analysis.m_DateTime, ':');
					tt.tm_min = atoi(ptemp+1);  
					*ptemp =0x00;

					ptemp = strrchr(Analysis.m_DateTime, ',');
					tt.tm_hour = atoi(ptemp+1);  
					*ptemp =0x00;

					ptemp = strrchr(Analysis.m_DateTime, '//');
					tt.tm_year = atoi(ptemp+1);  
					if(tt.tm_year > 60)tt.tm_year+=1900;
					else tt.tm_year += 2000;
					*ptemp =0x00;

					ptemp = strrchr(Analysis.m_DateTime, '//');
					tt.tm_mday = atoi(ptemp+1);  
					*ptemp =0x00;

					tt.tm_mon = atoi(Analysis.m_DateTime);
					double datestr = tt.tm_year + tt.tm_mon/100. + tt.tm_mday/10000. + tt.tm_hour/1000000.;
					sprintf(Rece.Reserve1,  "%lf", datestr);

				//	lstrcpy(Rece.DelayTime,Analysis.FaultDelayTime);   //char DelayTime[3];
					lstrcpy(Rece.LineName, Analysis.m_strFaultLineName);

					ptemp = strrchr(dir,'\\');
					*ptemp = 0x00;
					ptemp = strrchr(dir,'\\');
					lstrcpy(Rece.RecordID, ptemp+1);
					*ptemp = 0x00;

					ptemp = strrchr(dir,'\\');
					lstrcpy(Rece.StationName, ptemp+1);
					*ptemp = 0x00;

					ptemp = strrchr(dir,'\\');
					lstrcpy(Rece.CityName, ptemp+1);
					
										////JumpPhase
					lstrcpy(Rece.FileName, fname);
					lstrcat(Rece.FileName, ext);

					char wyyTemp[256];
					BYTE ch1 = 0xce;
					char ch2 = '(';
					lstrcpy(wyyTemp,Analysis.m_strFaultPhase);
				    if(wyyTemp[3] == ch1)
						lstrcpy(Rece.FaultType,"1");
					else if(wyyTemp[4] == ch2)
						lstrcpy(Rece.FaultType,"2");
					else if(strstr(wyyTemp,"ABC")!=NULL || strstr(wyyTemp,"ABCN") != NULL)
                        lstrcpy(Rece.FaultType,"3");
					else if(wyyTemp[5] == ch1)
                        lstrcpy(Rece.FaultType,"4");
					else 						
                        lstrcpy(Rece.FaultType,"5");

				    char *pTempWyy;
					pTempWyy = strchr(Analysis.m_strFaultPhase, '(');
					if(pTempWyy != NULL)*pTempWyy=0x00;
					lstrcpy(Rece.PhaseName, Analysis.m_strFaultPhase);
		/*			
					char CityName[20];
					char StationName[20];
					char LineName[20];
					char RecordID[20];
					char PhaseName[20];
					char JumpPhase[10];
					char FileName[254];
					char AnalyFile[254];
					char FaultType[5];
					char Reserve1[48];
					char Reserve2[48];
					char Reserve3[3];*/
					AddARecord(Rece);
				}
		}
	*pResult = 0;
}


int CTrans::AddDirList(void)
{
 FILE *fp;
 int i;
 CString fName, fDateTime, fSize;
 struct ModemFile
  {
   char FileName[13];
   char DateTime[18];
   char FileLength[12];
   char EndChar[3];
  }WyyFile;

 LV_ITEM lv_Item;

 ((CListCtrl *)GetDlgItem(IDC_LIST2))->DeleteAllItems( );

 fp = fopen("modem.d", "rt");
 if(fp == NULL)
   { return(-1); } 
 fseek(fp,0,SEEK_SET);
 i=0;
 while(!feof(fp))
   {
    fseek(fp, (long)(i*sizeof(WyyFile)), SEEK_SET);
	memset(&WyyFile, 0x00, sizeof(WyyFile));
	fread(&WyyFile, sizeof(WyyFile), 1, fp);
    WyyFile.FileName[12] = 0;
	WyyFile.FileLength[19] = 0;
	WyyFile.DateTime[17] = 0;
	memset(&lv_Item, 0x00, sizeof(LV_ITEM));
    lv_Item.mask = LVIF_TEXT | LVIF_DI_SETITEM;
	lv_Item.iItem = i;
	lv_Item.iSubItem = 0;
	lv_Item.pszText = WyyFile.FileName;
    lv_Item.cchTextMax = lstrlen(WyyFile.FileName);
    
	((CListCtrl *)GetDlgItem(IDC_LIST2))->InsertItem(&lv_Item);

    memset(&lv_Item, 0x00, sizeof(LV_ITEM));
    lv_Item.mask = LVIF_TEXT ;
	lv_Item.iItem = i;
	lv_Item.iSubItem = 2;
	lv_Item.pszText = WyyFile.FileLength;
    lv_Item.cchTextMax = lstrlen(WyyFile.FileLength);
	    
	((CListCtrl *)GetDlgItem(IDC_LIST2))->SetItem(&lv_Item);
    memset(&lv_Item, 0x00, sizeof(LV_ITEM));
    lv_Item.mask = LVIF_TEXT ;
	lv_Item.iItem = i;
	lv_Item.iSubItem = 1;
	lv_Item.pszText = WyyFile.DateTime;
    lv_Item.cchTextMax = lstrlen(WyyFile.DateTime);
    
	((CListCtrl *)GetDlgItem(IDC_LIST2))->SetItem(&lv_Item);
    
	i++;
   }
 fclose(fp);
  
 return (1);
}


int CTrans::AddLeftList(void)
{
    long HFile;
    int j=0;
	int i=0;
	char tempstr[10];
	struct _finddata_t c_file;
    LV_ITEM lv_Item;
	memset(&NameIndex, 0x00, sizeof(NameIndex));
    CString FileName = m_strRecordPath + _T("wgu*.wgl");

    HFile = _findfirst( FileName, &c_file ) ;
    if(HFile==-1)return (-1);
	while(j==0)
	{
     if(lstrcmp(c_file.name, ".")!=0 && lstrcmp(c_file.name, "..")!=0 && c_file.attrib != _A_SUBDIR)
	 {
		lstrcpy(tempstr, c_file.name+3);
		tempstr[2]=0x00;
		int k = atoi(tempstr);
		if( k<100 && k >=0 )NameIndex[k] = 1;
        memset(&lv_Item, 0x00, sizeof(LV_ITEM));
        lv_Item.mask = LVIF_TEXT | LVIF_DI_SETITEM;
	    lv_Item.iItem = i;
	    lv_Item.iSubItem = 0;
	    lv_Item.pszText = c_file.name;
        lv_Item.cchTextMax = lstrlen(c_file.name);
        ((CListCtrl *)GetDlgItem(IDC_LIST1))->InsertItem(&lv_Item);

        memset(&lv_Item, 0x00, sizeof(LV_ITEM));
        lv_Item.mask = LVIF_TEXT ;
	    lv_Item.iItem = i;
	    lv_Item.iSubItem = 2;
        char Temp[40];
        sprintf(Temp, "%ld",c_file.size);
	    lv_Item.pszText = Temp;
        lv_Item.cchTextMax = lstrlen(Temp);
	    ((CListCtrl *)GetDlgItem(IDC_LIST1))->SetItem(&lv_Item);

        memset(&lv_Item, 0x00, sizeof(LV_ITEM));
        lv_Item.mask = LVIF_TEXT ;
	    lv_Item.iItem = i;
	    lv_Item.iSubItem = 1;

        CTime FileTime((time_t)(c_file.time_write));

        sprintf(Temp,"%d-%02d-%02d %02d:%02d", FileTime.GetYear(),
		         FileTime.GetMonth(), FileTime.GetDay(), FileTime.GetHour(), FileTime.GetMinute());
        
	    lv_Item.pszText = Temp;
        lv_Item.cchTextMax = lstrlen(Temp);
        ((CListCtrl *)GetDlgItem(IDC_LIST1))->SetItem(&lv_Item);	   
		i++;
        j = _findnext( HFile, &c_file ) ;
    }
   }       
 return (1);
}


BOOL CTrans::MissConnected(void)
{

 DWORD Status;
 BOOL i = GetCommModemStatus(COMDEV(MyTTY.npTTYInfo ), &Status);
 
 if(i && (Status &MS_RLSD_ON))
    return FALSE;
 else return TRUE;
 
}

LONG CTrans::OnWMTRANSMESSAGE( UINT wParam, LONG lParam)
{
 
	switch(wParam)//AfxMessageBox("-1 OK");
	{
		case 512:
		     Sleep(500);
			 if(CheckLink())
			    WyyReceList();
		     break;
		case RECE_SOH_FOR_START_OF_SEND:
			 AfxMessageBox("-1 OK");
			 break;
		case RECE_ACK_FOR_HEAD_OF_SEND:
			 break;
		case RECE_ACK_FOR_SOH_OF_SEND:
			break;
		case RECE_ACK_FOR_BLOCK_OF_SEND:
			break;
		case RECE_ACK_FOR_REQST_OF_SEND:
			break;
		case RECE_512_REQST_OF_SEND:
			break;
		case RECE_OTHER_OF_SEND:
			break;
		case RECE_ACK_FOR_START_OF_RECE:
			break;
		case RECE_80_HEAD_OF_RECE:
			break;
		case RECE_SOH_FOR_BLOCK_OF_RECE:
			break;
		case RECE_4100BLOCK_OF_SEND:
			break;
		case RECE_ACK_FOR_REQST_OF_RECE:
			break;
		case RECE_512_REQST_OF_RECE:
			break;
		case RECE_OTHER_OF_RECE:
			break;
		default :
			break;
	}
 return 0L;
}

void CTrans::OnGetdir() 
{
	WyyReceList();
}

void CTrans::OnReceiveConfig() 
{
  WyyReceConfig();
 	
}

int CTrans::CheckLink(void)
{
  if(abs(MyTTY.npTTYInfo->HeadPtr - MyTTY.npTTYInfo->TailPtr)<512)return(0);
  if(MyTTY.npTTYInfo->HeadPtr > MyTTY.npTTYInfo->TailPtr)
     MyTTY.npTTYInfo->TailPtr = MyTTY.npTTYInfo->HeadPtr - 512;
  else 
	 MyTTY.npTTYInfo->TailPtr = MyTTY.npTTYInfo->HeadPtr - 512 + 5000;
  
  char flag[256];
  sscanf((char *)(MyTTY.npTTYInfo->Queue + MyTTY.npTTYInfo->TailPtr+8),"%s",flag);
	 if((strcmp(flag,"OK")==0) )
	   {
			lstrcpy(StatusStr,"远方已经准备就绪...");
			MyTTY.npTTYInfo->TailPtr = MyTTY.npTTYInfo->HeadPtr = 0;
		    InvalidateRect(&m_StatusRect);
			UpdateWindow();
			return (1);
	    }
  return (0);
}

void CTrans::OnRedial() 
{
  if(MissConnected())
  {
  WriteCommBlock( MyTTY.npTTYInfo, (BYTE *)PhoneNumber,  lstrlen(PhoneNumber));
  
  MyTTY.npTTYInfo->TailPtr=0;
  MyTTY.npTTYInfo->HeadPtr=0;

  MMyDialing.m_strPhoneNumber = PhoneNumber+4;

  int i = MMyDialing.DoModal();

  if(i == IDCANCEL)
    { 
	  MyTTY.CloseConnection(); 
	  return; 
	}
  CONNECTEDTO(MyTTY.npTTYInfo) = TRUE;	
  }
}

int CTrans::AddARecord(struct FAULT_RECORD FaultRecord)
{
	int i=0;
	if(CMySet.IsOpen())
		CMySet.Close();
	CMySet.Open();
	if(CMySet.GetRecordCount() >0)
	{
		CMySet.MoveFirst();
		while(!CMySet.IsEOF())
			{
				i++;
				CMySet.MoveNext();
			}
		CMySet.Close();
		if(CMySet.IsOpen())
			CMySet.Close();	
		CMySet.Open();
		CMySet.MoveFirst();
		CMySet.AddNew();
	}
	else
	{
		CMySet.AddNew();
	}
    char zhx[200];
	sprintf(zhx,"%d",i);
	CString s=_T(zhx);
	CMySet.m_recordno=s;
    CMySet.m_startdatet=FaultRecord.StartDateTime;
	CMySet.m_startmtime=FaultRecord.StartMTime;
	CMySet.m_delaytime=FaultRecord.DelayTime;
	CMySet.m_cityname= FaultRecord.CityName;
	CMySet.m_stationnam=FaultRecord.StationName;
	CMySet.m_linename =FaultRecord.LineName;
	CMySet.m_recordid =FaultRecord.RecordID;
	CMySet.m_phasename=FaultRecord.PhaseName;
	CMySet.m_jumpphase=FaultRecord.JumpPhase;
	CMySet.m_filename=FaultRecord.FileName;
	CMySet.m_analyfile=FaultRecord.AnalyFile;
	CMySet.m_faulttype=FaultRecord.FaultType;
	CMySet.m_reserve1=FaultRecord.Reserve1;
	CMySet.m_reserve2=FaultRecord.Reserve2;
	CMySet.m_reserve3=FaultRecord.Reserve3;
	CMySet.Update();
	CMySet.MoveFirst();	
	CMySet.Close();
	//CMySet.Update();
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -