📄 irdlg.cpp
字号:
for(i=0;i<18+Len;i++)
{
recvbuf[k++]=((Cmd[i])/16<0x0A)?((Cmd[i])/16+'0'):((Cmd[i])/16+'A'-0x0A);
recvbuf[k++]=(((Cmd[i])&0x0F)<0x0A)?((Cmd[i])&0x0F)+'0':((Cmd[i])&0x0F)+'A'-0x0A;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
AfxMessageBox(strSave);
wFlag=SendData(Cmd);
return wFlag;
}
BOOL CIRDlg::GetParam_Read(unsigned char *DATA,unsigned char *Bs,unsigned char *Bh)
{
bool rFlag=FALSE;
// Flag=TRUE;
BYTE Get[255];
BYTE GetBh[6];
unsigned char tt[6];
// unsigned short tt1[12];
for(int i=0;i<6;i++) tt[i]=0x99;
for(i=0;i<255;i++)
Get[i]='\0';
dataflag=FALSE;
int cnt=0;
do{
cnt++;
if(cnt>2)
{
return FALSE;
}
dataflag=FALSE;
RtnData = Get;
RtnBh=GetBh;
UpdateData(TRUE);
if(m_Bh1!="")
{
ExchangeBh(m_Bh1,tt);
}
if(!ReadCommand(tt,Bs))
{
AfxMessageBox(TEXT("Send data error"));
return FALSE;
}
Flag=TRUE;
WaitForSingleObject(eventGetData.m_hObject,5000);
if(dataflag)
{
dataflag=FALSE;
Flag=FALSE;
int rr=0;
if(dataLength>100)
{
AfxMessageBox(TEXT("Error1 length"));
return FALSE;
}
if(ACKFLAG!=0x81)
{
AfxMessageBox(TEXT("Error data length"));
return FALSE;
}
for(int i=0;i<dataLength;i++)
{
DATA[rr++]=Get[2+i];
}
for(i=0;i<6;i++)
{
Bh[i]=GetBh[i];
}
return TRUE;
}
else
{
return FALSE;
}
}while(TRUE);
return TRUE;
}
BOOL CIRDlg::GetParam_Write(unsigned char *DATA,unsigned char *Bs,unsigned char *Bh,unsigned char Len,unsigned char nLen)
{
Flag=FALSE;
BYTE Get[255];
BYTE GetBh[6];
unsigned char tt[6];
for(int i=0;i<6;i++) tt[i]=0x99;
for(i=0;i<255;i++)
Get[i]='\0';
dataflag=FALSE;
int cnt=0;
do{
cnt++;
if(cnt>2)
{
return FALSE;
}
dataflag=FALSE;
RtnData = Get;
RtnBh=GetBh;
UpdateData(TRUE);
if(m_Bh1!="")
{
ExchangeBh(m_Bh1,tt);
//AfxMessageBox(m_Bh1);
}
if(!WriteCommand(tt,Bs,DATA,Len,nLen))
{
AfxMessageBox(TEXT("Send data error"));
return FALSE;
}
Flag=TRUE;
WaitForSingleObject(eventGetData.m_hObject,1000);
if(dataflag)
{
dataflag=FALSE;
Flag=FALSE;
int rr=0;
if(ACKFLAG!=0x84)
{
AfxMessageBox(TEXT("Error data length"));
return FALSE;
}
return TRUE;
}
else
{
return FALSE;
}
}while(TRUE);
return TRUE;
}
void CIRDlg::ShowRecv(unsigned char *RECV,int Length)
{
CEdit * pEdit;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_RECV);
BYTE* recvbuf;
int bufLen=Length;
recvbuf=new BYTE[bufLen*3+1];
int k=0;
CString strOld;
CString strSave;
for(int i=0;i<bufLen;i++)
{
recvbuf[k++]=((RECV[i])/16<0x0A)?((RECV[i])/16+'0'):((RECV[i])/16+'A'-0x0A);
recvbuf[k++]=(((RECV[i])&0x0F)<0x0A)?((RECV[i])&0x0F)+'0':((RECV[i])&0x0F)+'A'-0x0A;
recvbuf[k++]=0x20;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
pEdit->SetWindowText(strSave);
}
BOOL CIRDlg::Connect(void)
{
if(!Connected)
{
if(!m_CSerial->OpenPort(L"COM2:",1200,EVENPARITY,8,ONESTOPBIT))
{
AfxMessageBox(TEXT("OPEN COM ERROR"));
return FALSE;
}
Connected=TRUE;
if(hThreadProc = CreateThread(NULL,0,ThreadProc,this,0,&dwThreadId))
{
return TRUE;
}
else
{
AfxMessageBox(TEXT("CREATE THREAD ERROR"));
return FALSE;
}
}
else
return TRUE;
}
BOOL CIRDlg::Disconnect(void)
{
if(Connected)
{
if(m_CSerial->ClosePort())
{
Connected=FALSE;
if(hThreadProc)
{
TerminateThread(hThreadProc,0);
CloseHandle(hThreadProc);
}
return TRUE;
}
else
{
return FALSE;
}
}
else
return TRUE;
}
void CIRDlg::OnButtonConnect()
{
// TODO: Add your control notification handler code here
if(!Connect()) AfxMessageBox(TEXT("Open serial port error"));
}
void CIRDlg::OnButtonDisconnect()
{
// TODO: Add your control notification handler code here
if(!Disconnect()) AfxMessageBox(TEXT("Close serial port error"));
//delete [] TEST;
//TEST=NULL;
//delete m_CSerial;
//m_CSerial=NULL;
}
void CIRDlg::OnButtonSend()
{
// TODO: Add your control notification handler code here
BYTE DATA[255];
int i;
unsigned char Bs[2];
unsigned char Bh[6];
BYTE recvbuf[20];
CEdit * pEdit,*pEdit1,*pEdit2,*pEdit3,*pEdit4;
CButton *pButton,*pButton1,*pButton2,*pButton3;
pEdit = (CEdit*)GetDlgItem(IDC_edtTotal);
pEdit1 = (CEdit*)GetDlgItem(IDC_edtRate1);
pEdit2 = (CEdit*)GetDlgItem(IDC_edtRate2);
pEdit3 = (CEdit*)GetDlgItem(IDC_edtRate3);
pEdit4 = (CEdit*)GetDlgItem(IDC_edtRate4);
pButton= (CButton*)GetDlgItem(IDC_RADIO1);
pButton1= (CButton*)GetDlgItem(IDC_RADIO2);
pButton2= (CButton*)GetDlgItem(IDC_RADIO3);
pButton3= (CButton*)GetDlgItem(IDC_RADIO4);
m_CbTime = _T("");
m_Total = _T("");
m_Rate1 = _T("");
m_Rate2 = _T("");
m_Rate3 = _T("");
m_Rate4 = _T("");
for(i=0;i<255;i++)
DATA[i]='\0';
//时间没取
//m_CbTime="2007-07-07 17:00:00";
CTime CrtTime;
char cFormatStr[20] = {0};
CrtTime = CTime::GetCurrentTime();
sprintf(cFormatStr,"%4d-%2d-%2d %2d:%2d:%2d", CrtTime.GetYear(),CrtTime.GetMonth(),CrtTime.GetDay(),CrtTime.GetHour(),CrtTime.GetMinute(),
CrtTime.GetSecond());
m_CbTime=(CString)cFormatStr;
m_CbTime=FormatTime(m_CbTime);
// AfxMessageBox(m_CbTime);
if(!Connect()) AfxMessageBox(TEXT("Open serial port error"));
if(pButton->GetCheck())
{
Bs[0]=0x90;
Bs[1]=0x1f;
int k=0;
if(GetParam_Read(DATA,Bs,Bh))
{
CString strSave;
UpdateData(FALSE);
k=0;
for(i=0;i<6;i++)
{
recvbuf[k++]=((Bh[5-i])/16<0x0A)?((Bh[5-i])/16+'0'):((Bh[5-i])/16+'A'-0x0A);
recvbuf[k++]=(((Bh[5-i])&0x0F)<0x0A)?((Bh[5-i])&0x0F)+'0':((Bh[5-i])&0x0F)+'A'-0x0A;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
m_Bh=strSave;
//pEdit4->SetWindowText(strSave);
k=0;
for(int i=0;i<4;i++)
{
recvbuf[k++]=((DATA[3-i]-0x33)/16<0x0A)?((DATA[3-i]-0x33)/16+'0'):((DATA[3-i]-0x33)/16+'A'-0x0A);
recvbuf[k++]=(((DATA[3-i]-0x33)&0x0F)<0x0A)?((DATA[3-i]-0x33)&0x0F)+'0':((DATA[3-i]-0x33)&0x0F)+'A'-0x0A;
if(i==2) recvbuf[k++]=46;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
pEdit->SetWindowText(strSave);
k=0;
for(i=0;i<4;i++)
{
recvbuf[k++]=((DATA[7-i]-0x33)/16<0x0A)?((DATA[7-i]-0x33)/16+'0'):((DATA[7-i]-0x33)/16+'A'-0x0A);
recvbuf[k++]=(((DATA[7-i]-0x33)&0x0F)<0x0A)?((DATA[7-i]-0x33)&0x0F)+'0':((DATA[7-i]-0x33)&0x0F)+'A'-0x0A;
if(i==2) recvbuf[k++]=46;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
pEdit1->SetWindowText(strSave);
k=0;
for(i=0;i<4;i++)
{
recvbuf[k++]=((DATA[11-i]-0x33)/16<0x0A)?((DATA[11-i]-0x33)/16+'0'):((DATA[11-i]-0x33)/16+'A'-0x0A);
recvbuf[k++]=(((DATA[11-i]-0x33)&0x0F)<0x0A)?((DATA[11-i]-0x33)&0x0F)+'0':((DATA[11-i]-0x33)&0x0F)+'A'-0x0A;
if(i==2) recvbuf[k++]=46;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
pEdit2->SetWindowText(strSave);
k=0;
for(i=0;i<4;i++)
{
recvbuf[k++]=((DATA[15-i]-0x33)/16<0x0A)?((DATA[15-i]-0x33)/16+'0'):((DATA[15-i]-0x33)/16+'A'-0x0A);
recvbuf[k++]=(((DATA[15-i]-0x33)&0x0F)<0x0A)?((DATA[15-i]-0x33)&0x0F)+'0':((DATA[15-i]-0x33)&0x0F)+'A'-0x0A;
if(i==2) recvbuf[k++]=46;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
pEdit3->SetWindowText(strSave);
k=0;
for(i=0;i<4;i++)
{
recvbuf[k++]=((DATA[19-i]-0x33)/16<0x0A)?((DATA[19-i]-0x33)/16+'0'):((DATA[19-i]-0x33)/16+'A'-0x0A);
recvbuf[k++]=(((DATA[19-i]-0x33)&0x0F)<0x0A)?((DATA[19-i]-0x33)&0x0F)+'0':((DATA[19-i]-0x33)&0x0F)+'A'-0x0A;
if(i==2) recvbuf[k++]=46;
}
recvbuf[k]='\0';
strSave = (char*)recvbuf;
pEdit4->SetWindowText(strSave);
UpdateData(TRUE);
CEnergy energyData ;
CFile stuFile;
//FILE * fp;
ZeroMemory(&energyData,sizeof(energyData));
wcscpy(energyData.Bh,m_Bh);
wcscpy(energyData.cbTime,m_CbTime);
wcscpy(energyData.eRate1,m_Rate1);
wcscpy(energyData.eRate2,m_Rate2);
wcscpy(energyData.eRate3,m_Rate3);
wcscpy(energyData.eRate4,m_Rate4);
wcscpy(energyData.eTotal,m_Total);
stuFile.Open(ENERGYFILEPATH,CFile::modeRead | CFile::modeWrite);
stuFile.SeekToEnd();
stuFile.Write(&energyData,sizeof(energyData));
stuFile.Close();
//fp=fopen("\\ResidentFlash\\cEnergy.dat","wb");
//fseek(fp,0,2);
//fwrite(&energyData,sizeof(energyData),1,fp);
//fclose(fp);
//更新内存队列
// m_lstEnergy.AddTail(energyData);
/*
if(!FirstStep())
{
AfxMessageBox(TEXT("Send 1 error"));
delete [] DATA;
DATA=NULL;
delete [] recvbuf;
recvbuf=NULL;
return ;
}
*/
AfxMessageBox(TEXT("Communication Success!"));
}
else
{
AfxMessageBox(TEXT("Communication error!"));
}
}
if(pButton1->GetCheck())//feilv
{
Bs[0]=0xc3;
Bs[1]=0x3f;
CString tt1="";
unsigned char tt[24];
TCHAR ttt[48]={0};
CFile stuFile;
int dwRead;
if (stuFile.Open(S_XL1FILEPATH,CFile::modeRead))
{
dwRead = stuFile.Read(ttt,96);
//关闭数据文件
stuFile.Close();
}
else
{
AfxMessageBox(TEXT("Read file error!"));
stuFile.Close();
return;
}
tt1=ttt;
StrToChar(tt1,tt);
unsigned char Len,nLen;
Len=24,nLen=3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -