📄 robindlg.cpp
字号:
for(iL=0;iL<nByteN;iL++)
{
strT1.Format("%02X ",dataRead[iL]);
if(iL%10==0)
{
strT2 += "\r\n";
}
strT2+=strT1;
}
//AfxMessageBox(strT2);
//***********************************//
CString str,str2;
// short int szYear,szMonth,szDay,szHour,szMinute,szSecond;
// UpdateData(TRUE);
m_Data.AddNew();
switch(((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))
{
case 0x00:
str="Encoder";
break;
case 0x40:
str="ScanCounter-1";
break;
case 0x41:
str="ScanCounter-2";
break;
case 0x60:
str="InVision-1";
break;
case 0x70:
str="InVision-2";
break;
default:
str.Format("%c%c",dataRead[21],dataRead[22]);
break;
}
m_Data.m_strtype = str;
switch(((dataRead[27]&0x0F)<<4)|(dataRead[28]&0x0F))
{
case 0x00:
str="none";
break;
case 0x01:
str="cubic metres";
break;
case 0x02:
str="US gallons*1000";
break;
case 0x03:
str="Imperial gallons";
break;
case 0x04:
str="litres";
break;
case 0x05:
str="cubic feet*100";
break;
case 0x06:
str="US gallons";
break;
case 0x07:
str="k multiplier";
break;
case 0x08:
str="kilo-litres";
break;
default:
str="";
break;
}
m_Data.m_strunits = str;
str.Format("%c%c",dataRead[23],dataRead[24]);
m_Data.m_strsxylf = str;
str.Format("%c%c%c%c%c%c%c%c%c%c",dataRead[1],dataRead[2],dataRead[3],dataRead[4],dataRead[5],dataRead[6],dataRead[7],dataRead[8],dataRead[9],dataRead[10]);
m_Data.m_strnumber = str;
str.Format("%c%c%c%c%c%c%c%c%c%c",dataRead[59],dataRead[60],dataRead[61],dataRead[62],dataRead[63],dataRead[64],dataRead[65],dataRead[66],dataRead[67],dataRead[68]);
m_Data.m_strnumber2 = str;
if((((dataRead[21]&0x0F)<<4))==0x40)
{
switch(dataRead[19]&0x0F)
{
case 0x04:
str.Format("%c%c%c%c",dataRead[15],dataRead[16],dataRead[17],dataRead[18]);
break;
case 0x05:
str.Format("%c%c%c%c%c",dataRead[14],dataRead[15],dataRead[16],dataRead[17],dataRead[18]);
break;
case 0x06:
str.Format("%c%c%c%c%c%c",dataRead[13],dataRead[14],dataRead[15],dataRead[16],dataRead[17],dataRead[18]);
break;
case 0x07:
str.Format("%c%c%c%c%c%c%c",dataRead[12],dataRead[13],dataRead[14],dataRead[15],dataRead[16],dataRead[17],dataRead[18]);
break;
case 0x08:
str.Format("%c%c%c%c%c%c%c%c",dataRead[11],dataRead[12],dataRead[13],dataRead[14],dataRead[15],dataRead[16],dataRead[17],dataRead[18]);
break;
default:
str.Format("%c%c%c%c",dataRead[15],dataRead[16],dataRead[17],dataRead[18]);
break;
}
/*
if((dataRead[29]&0x01)!=0)
{
if((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x40)
{
switch(dataRead[20]&0x0F)
{
case 0x01:
str.Insert(((dataRead[19]&0x0F)-0x01),'.');
break;
case 0x02:
str.Insert(((dataRead[19]&0x0F)-0x02),'.');
break;
case 0x04:
str.Insert(((dataRead[19]&0x0F)-0x03),'.');
break;
default:
break;
}
}
if((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x41)
{
if((dataRead[20]&0x0F)!=(dataRead[19]&0x0F))
str.Insert((dataRead[20]&0x0F),'.');
}
}
else
{
if((dataRead[29]&0x02)!=0)
{
*/
if((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x40)
{
switch(dataRead[20]&0x0F)
{
case 0x01:
str.Insert(((dataRead[19]&0x0F)-0x01),'.');
break;
case 0x02:
str.Insert(((dataRead[19]&0x0F)-0x02),'.');
break;
case 0x04:
str.Insert(((dataRead[19]&0x0F)-0x03),'.');
break;
default:
break;
}
}
if((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x41)
{
if((dataRead[20]&0x0F)!=(dataRead[19]&0x0F))
str.Insert((dataRead[20]&0x0F),'.');
}
// }
//}
}
else
{
switch(dataRead[19]&0x0F)
{
case 0x04:
str.Format("%c%c%c%c",dataRead[13],dataRead[14],dataRead[15],dataRead[16]);
break;
case 0x05:
str.Format("%c%c%c%c%c",dataRead[13],dataRead[14],dataRead[15],dataRead[16],dataRead[17]);
break;
case 0x06:
str.Format("%c%c%c%c%c%c",dataRead[13],dataRead[14],dataRead[15],dataRead[16],dataRead[17],dataRead[18]);
break;
default:
str.Format("%c%c%c%c",dataRead[13],dataRead[14],dataRead[15],dataRead[16]);
break;
}
if((dataRead[20]&0x0F)!=(dataRead[19]&0x0F))
str.Insert((dataRead[20]&0x0F),'.');
}
if(dataRead[20]>dataRead[19])
{
str2=str;
switch(dataRead[20]-dataRead[19])
{
case 0x01:
str.Format("%s%c",str2,'0');
break;
case 0x02:
str.Format("%s%c%c",str2,'0','0');
break;
case 0x03:
str.Format("%s%c%c%c",str2,'0','0','0');
break;
case 0x04:
str.Format("%s%c%c%c%c",str2,'0','0','0','0');
break;
default:
break;
}
}
m_Data.m_strsxyyz = str;
str.Format("%c",' ');
if(((dataRead[21]&0x0F)==0x04)&&((dataRead[30]&0x01)!=0))
str.Format("%s_%c",str,'X');
if(((dataRead[21]&0x0F)==0x04)&&((dataRead[30]&0x02)!=0))
str.Format("%s_%c",str,'T');
if(((dataRead[21]&0x0F)==0x04)&&((dataRead[30]&0x04)!=0))
str.Format("%s_%c",str,'L');
if(((dataRead[21]&0x0F)==0x04)&&((dataRead[30]&0x08)!=0))
str.Format("%s_%c",str,'S');
if(((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x41)&&((dataRead[29]&0x04)!=0))
str.Format("%s_%c",str,'B');
if((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x41)
{
if((dataRead[32]&0x01)!=0) str.Format("%s_%c",str,'M');
else if((dataRead[32]&0x02)!=0) str.Format("%s_%c",str,'Y');
}
if(((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x41)&&((dataRead[32]&0x04)!=0))
str.Format("%s_%c",str,'V');
////////******** add by ljh ***********************
///////********************************************
m_Data.m_strsxfjf = str;
str.Format("%c",' ');
if((dataRead[25]&0x01)!=0)
str.Format("%s_%c",str,'S');
if((dataRead[25]&0x02)!=0)
str.Format("%s_%c",str,'T');
if((dataRead[25]&0x04)!=0)
str.Format("%s_%c",str,'L');
if((dataRead[25]&0x08)!=0)
str.Format("%s_%c",str,'M');
if((dataRead[26]&0x08)!=0)
str.Format("%s_%c",str,'P');
if((dataRead[26]&0x04)!=0)
str.Format("%s_%c",str,'F');
if((dataRead[26]&0x02)!=0)
str.Format("%s_%c",str,'S');
if((dataRead[26]&0x01)!=0)
str.Format("%s_%c",str,'O');
//////////*** add by ljh ********
if ((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x41)
{
if (m_Data.m_strsxylf=="07")
{
str.Format("%c",' ');
if((dataRead[25]&0x02)!=0)
str.Format("%s_%c",str,'B');
if((dataRead[25]&0x08)!=0)
str.Format("%s_%c",str,'P');
if((dataRead[26]&0x01)!=0)
str.Format("%s_%c",str,'S');
if((dataRead[26]&0x02)!=0)
str.Format("%s_%c",str,'T');
if((dataRead[26]&0x04)!=0)
str.Format("%s_%c",str,'L');
//meter type *special
m_Data.m_strtype = "Falcon_encoded";
}
}
//******************************
m_Data.m_strsxwxk = str;
if(((((dataRead[21]&0x0F)<<4)|(dataRead[22]&0x0F))==0x41)/*&&((dataRead[32]&0x04)!=0)*/)
{
switch(dataRead[19]&0x0F)
{
case 0x04:
str.Format("%c%c%c%c",dataRead[51],dataRead[52],dataRead[53],dataRead[54]);
break;
case 0x05:
str.Format("%c%c%c%c%c",dataRead[50],dataRead[51],dataRead[52],dataRead[53],dataRead[54]);
break;
case 0x06:
str.Format("%c%c%c%c%c%c",dataRead[49],dataRead[50],dataRead[51],dataRead[52],dataRead[53],dataRead[54]);
break;
case 0x07:
str.Format("%c%c%c%c%c%c%c",dataRead[48],dataRead[49],dataRead[50],dataRead[51],dataRead[52],dataRead[53],dataRead[54]);
break;
case 0x08:
str.Format("%c%c%c%c%c%c%c%c",dataRead[47],dataRead[48],dataRead[49],dataRead[50],dataRead[51],dataRead[52],dataRead[53],dataRead[54]);
break;
default:
str.Format("%c%c%c%c%c%c",dataRead[47],dataRead[48],dataRead[49],dataRead[50],dataRead[51],dataRead[52],dataRead[53],dataRead[54]);
break;
}
if((dataRead[20]&0x0F)!=(dataRead[19]&0x0F))
str.Insert((dataRead[20]&0x0F),'.');
//********************* add by ljh **************//
unsigned char TempExtStatus;
TempExtStatus=((dataRead[31] & 0x0F)<<4)+(dataRead[32] & 0x0F);
if((TempExtStatus & 0x40)!=0)
{
str="REV:"+str;
}
else if((TempExtStatus & 0x04)!=0)
{
str="LRD:"+str;
}
//********************************************//
m_Data.m_strlrdv = str;
str.Format("%c%c%c",dataRead[55],dataRead[56],dataRead[57]);
//********************* add by ljh **************//
if((TempExtStatus & 0x40)!=0)
{
str="REV:"+str;
}
else if((TempExtStatus & 0x04)!=0)
{
str="LRD:"+str;
}
//********************************************//
m_Data.m_strlrdd = str;
}
if(dataRead[58]==0x31) str="Program";
else str="Read";
m_Data.m_strcomm = str;
Read_date = CTime::GetCurrentTime();
m_Data.m_trkdate = Read_date.Format("%Y-%m-%d");
/*
szYear=(short int)(dataRead[33]&0x0F)*1000+(short int)(dataRead[34]&0x0F)*100+(short int)(dataRead[35]&0x0F)*10+(short int)(dataRead[36]&0x0F);
szMonth=(short int)(dataRead[37]&0x0F)*10+(short int)(dataRead[38]&0x0F);
szDay=(short int)(dataRead[39]&0x0F)*10+(short int)(dataRead[40]&0x0F);
szHour=(short int)(dataRead[41]&0x0F)*10+(short int)(dataRead[42]&0x0F);
szMinute=(short int)(dataRead[43]&0x0F)*10+(short int)(dataRead[44]&0x0F);
szSecond=(short int)(dataRead[45]&0x0F)*10+(short int)(dataRead[46]&0x0F);
m_Data.m_tccdate = CTime::CTime(szYear,szMonth,szDay,szHour,szMinute,szSecond);
*/
//str.Format("%c%c%c%c-%c%c-%c%c %c%c:%c%c:%c%c",dataRead[33],dataRead[34],dataRead[35],dataRead[36],dataRead[37],dataRead[38],dataRead[39],dataRead[40],dataRead[41],dataRead[42],dataRead[43],dataRead[44],dataRead[45],dataRead[46]);
str.Format("%c%c%c%c-%c%c-%c%c",dataRead[33],dataRead[34],dataRead[35],dataRead[36],dataRead[37],dataRead[38],dataRead[39],dataRead[40]);
m_Data.m_tccdate = str;
str.Format("%c%c:%c%c:%c%c",dataRead[41],dataRead[42],dataRead[43],dataRead[44],dataRead[45],dataRead[46]);
m_Data.m_tcctime = str;
m_Data.Update();
m_Data.Requery();
if((nUser%50)==0) DataBaseToCtrl();
// DataBaseToCtrl();
// UpdateData(FALSE);
}
if((success)&&(nUser>=0))
{
if(!PurgeComm(hDev1, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR)) // device 1 fails
{
//m_output = "Error: Failed to purge COM port for device 1.";
MessageBox("Error: Failed to purge COM port for Device 1.");
}
else
{
if(!WriteFile(hDev1, (LPCVOID)dataAck, toBeWritten, written, &o))//send START flag
{
if(GetLastError() == ERROR_IO_PENDING)
{
if(WaitForSingleObject(o.hEvent, INFINITE) == WAIT_OBJECT_0)
if(GetOverlappedResult(hDev1, &o, written, FALSE))
success = true;
}
// surprise removal case
else if (GetLastError() == ERROR_OPERATION_ABORTED)
{
MessageBox("Surprise Removal on Device Write!");
CloseHandle(hDev1);
hDev1 = INVALID_HANDLE_VALUE;
CommFlag = false;
m_buttonul.SetWindowText("&Start");
m_comstatus.Replace("ON","OFF");
UpdateData(FALSE);
}
}
else
success = true;
if(*written != toBeWritten)
success = false;
if(success) // read the sum of users that will be uploaded
{
TimeOutRd=500;
phase=2;
SetTimer(1,10,NULL);
}
}
}
//
if((!success)&&(nUser>=0))
{
if(!PurgeComm(hDev1, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR)) // device 1 fails
{
//m_output = "Error: Failed to purge COM port for device 1.";
MessageBox("Error: Failed to purge COM port for Device 1.");
}
else
{
if(!WriteFile(hDev1, (LPCVOID)dataError, toBeWritten, written, &o))//send START flag
{
if(GetLastError() == ERROR_IO_PENDING)
{
if(WaitForSingleObject(o.hEvent, INFINITE) == WAIT_OBJECT_0)
if(GetOverlappedResult(hDev1, &o, written, FALSE))
success = true;
}
// surprise removal case
else if (GetLastError() == ERROR_OPERATION_ABORTED)
{
MessageBox("Surprise Removal on Device Write!");
CloseHandle(hDev1);
hDev1 = INVALID_HANDLE_VALUE;
CommFlag = false;
m_buttonul.SetWindowText("&Start");
m_comstatus.Replace("ON","OFF");
UpdateData(FALSE);
}
}
else
success = true;
if(*written != toBeWritten)
success = false;
if(success) // read the sum of users that will be uploaded
{
TimeOutRd=500;
phase=2;
SetTimer(1,10,NULL);
}
}
}
}
else
{
if(phase==2) SetTimer(1,10,NULL);
}
TimeOutRd--;
if(TimeOutRd==0)
{
KillTimer(1);
CloseHandle(hDev1);
hDev1 = INVALID_HANDLE_VALUE;
CommFlag = false;
m_buttonul.SetWindowText("&Start");
m_comstatus.Replace("ON","OFF");
UpdateData(FALSE);
MessageBox("Data transfered failed (2).");
}
if(nUser==0)
{
KillTimer(1);
CloseHandle(hDev1);
hDev1 = INVALID_HANDLE_VALUE;
CommFlag = false;
m_buttonul.SetWindowText("&Start");
m_comstatus.Replace("ON","OFF");
UpdateData(FALSE);
MessageBox("Data transfered successfully.");
}
ETSLayoutDialog::OnTimer(nIDEvent);
}
void CMyDlg::OnButtonUl()
{
// TODO: Add your control notification handler code here
if(!CommFlag)
{
MessageBox("start Data transfer.");
CommFlag = true;
m_buttonul.SetWindowText("Stop");
FillDeviceList();
}
else
{
KillTimer(1);
CloseHandle(hDev1);
hDev1 = INVALID_HANDLE_VALUE;
CommFlag = false;
m_buttonul.SetWindowText("&Start");
m_comstatus.Replace("ON","OFF");
UpdateData(FALSE);
MessageBox("Data transfer is stopped.");
}
}
/***********************************************************
* Save the data uploaded as .csv file.
************************************************************/
void CMyDlg::OnSave()
{
// TODO: Add your control notification handler code here
if(0==m_theList.GetItemCount())
{
MessageBox("Database is empty !");
return;
}
CFileDialog dlgFile(
FALSE, _T("*.csv"), NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
NULL, this);
dlgFile.m_ofn.lStructSize = sizeof(OPENFILENAME);
dlgFile.m_ofn.lpstrFilter = "CSV file(*.csv)\0*.csv\0\0";
dlgFile.m_ofn.lpstrTitle = "Select the file to save";
if (dlgFile.DoModal() == IDCANCEL)
return ;
CString sPath = dlgFile.GetPathName();
CString sExt = dlgFile.GetFileExt();
sExt.MakeLower();
SaveAsCSVFile((LPCTSTR)sPath);
//CString str1, str2;
//str1.LoadString(IDS_SAVEOVER);
//str2.Format("%s:%s", str1, sPath);
//GetDlgItem(IDC_PATH_COUNTING)->SetWindowText(str2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -