📄 dxmangerview.cpp
字号:
break;
case 0x11:
temp.Format("%02X:%02X:%02X",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
m_edit_time=temp;
// UpdateData(TRUE);
break;
case 0x29:
temp.Empty();
if(m_bRecData[15]&0x01)
temp="command lazha\r\n";
else
temp="command hezha\r\n";
if(m_bRecData[15]&0x02)
temp+="actual lazha\r\n";
else
temp+="actual hezha\r\n";
if(m_bRecData[15]&0x04)
temp+="I>=0.5Ib\r\n";
else
temp+="I<0.5Ib\r\n";
m_edit_relay=temp;
// UpdateData(FALSE);
break;
case 0x30:
temp.Format("%02X%02X%02X",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
m_edit_const=temp;
// UpdateData(TRUE);
break;
case 0x32:
temp.Format("%02X%02X%02X",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
m_edit_address=temp;
// UpdateData(TRUE);
break;
}
break;
case 0x8e:
if(m_bRecData[13]==0xa2)
{
temp.Format("%02d %02d %02d",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
m_edit_protol=temp;
}
break;
}
UpdateData(FALSE);
}
void CDxMangerView::OnBtnReadGonglst() //采集电量
{
}
int CDxMangerView::Bcdtoint(BYTE bcddata)
{
int result,h,l;
h=bcddata>>4;
l=bcddata&0x0f;
result=h*10+l;
return result;
}
void CDxMangerView::OnCheckChaobiao()//设置抄表项
{
}
void CDxMangerView::OnBtnReadMonthsrecord() //采集月份电量负荷记录
{
}
void CDxMangerView::ExplainHoursRecData()//解释接收到的整点电量数据
{
}
void CDxMangerView::OnReadHoursrecord() //采集整点电量
{
// TODO: Add your control notification handler code here
}
void CDxMangerView::OnBtnReadparam() //采集参数数据
{
senddata("000000000000", 4, "23");
Receive645Data();
}
void CDxMangerView::OnBtnReadall()
{ }
void CDxMangerView::OnBtnClearAll()
{
// TODO: Add your control notification handler code here
}
void CDxMangerView::OnChangeEdtBiaonumber()
{
}
void CDxMangerView::OnMenuSetbiao()
{
// TODO: Add your command handler code here
}
void CDxMangerView::OnBtnbarSetdb()
{
}
void CDxMangerView::OnMenuSelectCom()
{
// TODO: Add your command handler code here
CSetcommdlg dlg;
if(dlg.DoModal()==IDOK)
{
com=dlg.comport;
cominfo=dlg.bauate+dlg.oddeven+"8,1";
initcomm(com);
}
SaveIni();
}
void CDxMangerView::AddReadStatusItem(CString xuanxiang, CString m_status)
{
m_lst_readstatus.InsertItem(m_status_count,xuanxiang);
m_lst_readstatus.SetItemText(m_status_count, 1, m_status);
m_lst_readstatus.Update(m_status_count);
m_status_count++;
}
BOOL CDxMangerView::Receive645Data()
{
/* COleVariant varin;
BYTE *recchar;
CString temp;
BYTE sum=0;
int recstatus=0;
int recptr=0;
int limits=0;
BeginWaitCursor();
for(int j=0;j<255;j++)
m_bRecData[j]=0;
m_bRecData[0]=0xfe;
m_bRecData[1]=0xfe;
m_bRecData[2]=0xfe;
m_bRecData[3]=0xfe;
//////////////////////////////////
do{
Sleep(5);
if(m_comm.GetInBufferCount()>=1)
{
m_comm.SetInputLen(1);
varin=m_comm.GetInput(); //读COM口
temp.Empty();
recchar=(unsigned char *)varin.parray->pvData;
m_bRecData[recptr]=recchar[0];
if(recptr<255)//控制缓冲溢出
switch(m_bRecData[recptr])
{
case 0xfe:
if(recptr>14&&recstatus!=0xff)
{
if(recptr<=14+m_bRecData[13])//如果为校验和位则接收
recptr++;
else //否则清除接收缓冲
{
recptr=4;
recstatus=0;
}
}
else
{
recptr=4;
recstatus=0;
}
break;
case 0x68:
if(recstatus==0||recstatus==0xff)
{
m_bRecData[4]=0x68;
recptr=5;
recstatus=1;
}
else recptr++;
break;
case 0x16:
if(recptr>14&&recstatus!=0xff)
{
if(m_bRecData[13]+14==recptr)//如果为校验和位则接收
recptr++;
else //否则接收缓冲满
recstatus=0xff;
}
else recptr++;
break;
default: if(recstatus==1)
recptr++;
break;
}
}
limits++;
}while(recstatus!=0xff&&limits<200);
EndWaitCursor();
int i;
CString xx;
for( i=4;i<recptr-1;i++)
{
sum+=m_bRecData[i];
}
if(m_comm.GetPortOpen())m_comm.SetPortOpen(FALSE);
if(recstatus==0xff&&limits<200&&sum==m_bRecData[recptr-1]&&(m_bRecData[12]&0x80))
return TRUE;
else return FALSE;
*/
COleVariant varin;
BYTE *recchar;
CString temp;
BYTE sum=0;
unsigned char length=0;
unsigned char flag=0;
int recstatus=0;
int recptr=0;
int limits=0;
int j=0;
// BeginWaitCursor();
for( j=0;j<255;j++)
m_bRecData[j]=0x00;
m_prograss_status.SetRange(0,200);
Sleep(100);
flag++;
length=0;
recstatus=0;
recptr=0;
j=0;
////////////////////////debug here
/* if(m_comm.GetInBufferCount()>=1)
{
m_comm.SetInputLen(1);
varin=m_comm.GetInput();
recchar=(unsigned char *)varin.parray->pvData;
m_bRecData[recptr]=recchar[0];
}*/
// temp.Format("%02d",m_comm.GetInBufferCount());
// AfxMessageBox(temp);
/////////////////////////debug here
while(j<200)
{
m_prograss_status.SetPos(j);
Sleep(5);
if(m_comm.GetInBufferCount()>=1)
{
m_comm.SetInputLen(1);
varin=m_comm.GetInput(); //读COM口
temp.Empty();
recchar=(unsigned char *)varin.parray->pvData;
m_bRecData[recptr]=recchar[0];
if((m_bRecData[recptr]==0x68)&&(recstatus==0))
{
recptr=0;
recstatus=1;
}
recptr++;
}
if((recstatus==1)&&(recptr>1))
{
if(m_bRecData[1]!=0xf0)
j=199;
if(recptr>3)
{
length=m_bRecData[3];
if(recptr>10)
{
if((m_bRecData[4]!=0xbb)||(m_bRecData[5]!=0xbb)||(m_bRecData[6]!=0xbb))
{
length=0;
recstatus=0;
recptr=0;
j=0;
}
}
if(recptr>length+2)
j=199;
}
}
j++;
}
/////////////////////////////////////////////////
////////////////////////////////////////////////
temp.Format("%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x ",m_bRecData[0],m_bRecData[1],m_bRecData[2],m_bRecData[3],m_bRecData[4],m_bRecData[5],m_bRecData[6],m_bRecData[7],m_bRecData[8]
,m_bRecData[9],m_bRecData[10],m_bRecData[11],m_bRecData[12],m_bRecData[13],m_bRecData[14],m_bRecData[15],m_bRecData[16],m_bRecData[17]
,m_bRecData[18],m_bRecData[19]
);
// AfxMessageBox(temp);
//////////////////////////////////
EndWaitCursor();
if(m_comm.GetPortOpen())
m_comm.SetPortOpen(FALSE);
if(m_bRecData[1]==0xf0)
{ if((m_bRecData[7]==biaohao[2])&&(m_bRecData[8]==biaohao[1])&&(m_bRecData[9]==biaohao[0]))
{ // AfxMessageBox("jjj");
//temp.Format("%02x %02x %02x",biaohao[0],biaohao[1],biaohao[2]);
//AfxMessageBox(temp);
ExplainRecdata();////////clarify
UpdateData(FALSE);
return TRUE;
}
else
return FALSE;
}
else
{
return FALSE;
}
}
void CDxMangerView::LoadIni()
{
//////////////////////////////取当前应用程序路径//////////
TCHAR apppath[MAX_PATH];
TCHAR sdrive[_MAX_DRIVE];
TCHAR sdir[_MAX_DIR];
TCHAR sext[_MAX_EXT];
TCHAR sname[MAX_PATH];
::GetModuleFileName(NULL,apppath,MAX_PATH);
::_tsplitpath(apppath,sdrive,sdir,sname,sext);
CString inifilename;
inifilename=CString(sdrive)+CString(sdir)+CString(sname)+".INI";
//AfxMessageBox(inifilename);// to debug
///////////////////////////////////////////////////////////
/////////////////////////////////
/*
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"默认文件类型(*.ini)|*.ini|所有文件类型|*.*|",NULL);
if(dlg.DoModal()==IDOK)
{
inifilename=dlg.GetPathName();
}
*/
//////////////////////////////
//UpdateData(TRUE);
char temp[20];
GetPrivateProfileString("DB305","biaohao","000001",temp,20,inifilename);
m_targetaddress=temp;
m_edit_biaoid=temp;
GetPrivateProfileString("DB305","com","000001",temp,20,inifilename);
cominfo=temp;
GetPrivateProfileString("DB305","relayf","000001",temp,20,inifilename);
switch(temp[0])
{
case '0':
relayfalg=0;
break;
case '1':relayfalg=1;
break;
}
GetPrivateProfileString("DB305","relayn","000001",temp,20,inifilename);
switch(temp[0])
{
case '0':
relaynumber=0;
break;
case '1':relaynumber=1;
break;
case '2':
relaynumber=2;
break;
case '3':relaynumber=3;
break;
case '4':
relaynumber=4;
break;
case '5':relaynumber=5;
break;
case '6':
relaynumber=6;
break;
case '7':relaynumber=7;
break;
case '8':relaynumber=8;
break;
}
GetPrivateProfileString("DB305","relay1","000001",temp,20,inifilename);
relay1address=temp;
GetPrivateProfileString("DB305","relay2","000001",temp,20,inifilename);
relay2address=temp;
GetPrivateProfileString("DB305","relay3","000001",temp,20,inifilename);
relay3address=temp;
GetPrivateProfileString("DB305","relay4","000001",temp,20,inifilename);
relay4address=temp;
GetPrivateProfileString("DB305","relay5","000001",temp,20,inifilename);
relay5address=temp;
GetPrivateProfileString("DB305","relay6","000001",temp,20,inifilename);
relay6address=temp;
GetPrivateProfileString("DB305","relay7","000001",temp,20,inifilename);
relay7address=temp;
GetPrivateProfileString("DB305","relay8","000001",temp,20,inifilename);
relay8address=temp;
//AfxMessageBox(temp);
//com=GetPrivateProfileInt("DB305","com",1,inifilename);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -