📄 trans.cpp
字号:
{
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 + -