📄 dxmangerview.cpp
字号:
// TODO: add cleanup after printing
}
void CDxMangerView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
}
/////////////////////////////////////////////////////////////////////////////
// CDxMangerView diagnostics
#ifdef _DEBUG
void CDxMangerView::AssertValid() const
{
CFormView::AssertValid();
}
void CDxMangerView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CDxMangerDoc* CDxMangerView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDxMangerDoc)));
return (CDxMangerDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDxMangerView message handlers
void CDxMangerView::initcom(int com)
{
CString COMSetings;
COMSetings=m_buad+",e,8,1";
if(m_comm.GetPortOpen())m_comm.SetPortOpen(FALSE);
m_comm.SetCommPort(com);//设置端口
m_comm.SetSettings(COMSetings);//设置波特率等参数
m_comm.SetRThreshold(1);// 触发接收事件
m_comm.SetSThreshold(0);//不触发发送事件
m_comm.SetInputLen(1);//每次读取一个字符
m_comm.SetInputMode(1);//设置输入为二进制方式
if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);//打开串口
}
BOOL CDxMangerView::senddata(CString add, BYTE command, CString data)
{
BeginWaitCursor();
if(m_comm.GetPortOpen())m_comm.SetPortOpen(FALSE);
if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);//打开串口
m_recstring.Empty();
COleVariant varin,varout;
CString temp;
CByteArray sendchar;
int limits=0;
sendchar.RemoveAll();
//FE FE FE FE 68 00 00 00 00 00 00 68 01 02 43 F3 09 16
sendchar.Add(0xfe);
sendchar.Add(0xfe);
sendchar.Add(0xfe);
sendchar.Add(0xfe);
sendchar.Add(0x68);// 起始符
BYTE tempchar[255];
///////////////////修正表号////////////////////
int size=add.GetLength();
temp.Empty();
for(int i=0;i<12-size;i++)
temp+='0';
if(size<12)
add.Insert(0,temp);
UpdateData(FALSE);
//////////////////更新表号显示
CEdit *hedit;
UpdateData(FALSE);
hedit=(CEdit *)this->GetDlgItem(IDC_EDT_BIAONUMBER);
hedit->RedrawWindow();
///////////////////////////////////
add.MakeUpper();
int j=0;
BYTE hi,low;
for( i=0;i<12;i+=2)
{
hi=add[i+1]-'0';
low=add[i]-'0';
tempchar[j]=hi+low*16;
j++;
}
for(i=5;i>=0;i--)
{
sendchar.Add(tempchar[i]);
}
////////////////////////////////////////
sendchar.Add(0x68);// 起始符
sendchar.Add(command); //命令码
size=data.GetLength();
sendchar.Add((BYTE)size/2);//数据长度
data.MakeUpper();
BYTE sum=0;
for(i=0;i<size;i+=2)
{
tempchar[i]=data[i];
tempchar[i+1]=data[i+1];
if( tempchar[i]>'9')
tempchar[i]=10+data[i]-'A';
else tempchar[i]=data[i]-'0';
if( tempchar[i+1]>'9')
tempchar[i+1]=10+data[i+1]-'A';
else tempchar[i+1]=data[i+1]-'0';
tempchar[i]=tempchar[i]*16+tempchar[i+1];
sendchar.Add(tempchar[i]);//地址域
}
for(i=4;i<sendchar.GetSize();i++)
{tempchar[0]=sendchar.GetAt(i);
sum+=sendchar.GetAt(i);
}
sendchar.Add(sum);
sendchar.Add(0x16); //结束符
///////////////测试代码/////////////
/* CString xx;
for(i=0;i<sendchar.GetSize();i++)
{
temp.Format("%02X ",sendchar[i]);
xx+=temp;
}
AfxMessageBox(xx);
return 0;*/
//////////////////////////////
varout=COleVariant(sendchar);
if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);
if(m_comm.GetPortOpen())
m_comm.SetOutput(varout);//发送
else AfxMessageBox("串行口初始化失败!!!");
//////////////////接收数据//////////////
if(Receive645Data())
return TRUE;
else
{
if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);
if(m_comm.GetPortOpen())
m_comm.SetOutput(varout);//发送
else AfxMessageBox("串行口初始化失败!!!");
if(Receive645Data())
return TRUE;
else
{
if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);
if(m_comm.GetPortOpen())
m_comm.SetOutput(varout);//发送
else AfxMessageBox("串行口初始化失败!!!");
if(Receive645Data())
return TRUE;
else return FALSE;
}
}
}
void CDxMangerView::OnBtnSelectAllparam()
{
// TODO: Add your control notification handler code here
}
void CDxMangerView::OnBtnCancleAllparam()
{
// TODO: Add your control notification handler code here
}
void CDxMangerView::ExplainRecdata()
{
CString temp;
unsigned char i;
unsigned char low;
if(m_bRecData[11]==0xc1)
{
temp.Format("%02x",m_bRecData[13]);
AddReadStatusItem("read error",temp);
}
switch(m_bRecData[14])
{
case 0x90:
switch(m_bRecData[13])
{
case 0x10:
low=0;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
Bcdtoint(m_bRecData[17])*100+
Bcdtoint(m_bRecData[16]),
Bcdtoint(m_bRecData[15]));
m_listmonth.SetItemText(low, 1, temp);
m_listmonth.Update(low);
break;
case 0x90:
case 0x91:
case 0x92:
case 0x93:
case 0x94:
case 0x95:
case 0x96:
case 0x97:
low=m_bRecData[13]-0x90;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
Bcdtoint(m_bRecData[17])*100+
Bcdtoint(m_bRecData[16]),
Bcdtoint(m_bRecData[15]));
m_listday.SetItemText(low, 1, temp);
temp.Format("%02d",Bcdtoint(m_bRecData[19]));
m_listday.SetItemText(low, 2, temp);
m_listday.Update(low);
break;
case 0x9d: for(i=0;i<4;i++)
{
low=i;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+5*i])*10000+
Bcdtoint(m_bRecData[17+5*i])*100+
Bcdtoint(m_bRecData[16+5*i]),
Bcdtoint(m_bRecData[15+5*i]));
m_listday.SetItemText(low, 1, temp);
temp.Format("%02d",Bcdtoint(m_bRecData[19+5*i]));
m_listday.SetItemText(low, 2, temp);
m_listday.Update(low);
}
break;
case 0x9e:
for(i=0;i<4;i++)
{
low=i+4;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+5*i])*10000+
Bcdtoint(m_bRecData[17+5*i])*100+
Bcdtoint(m_bRecData[16+5*i]),
Bcdtoint(m_bRecData[15+5*i]));
m_listday.SetItemText(low, 1, temp);
temp.Format("%02d",Bcdtoint(m_bRecData[19+5*i]));
m_listday.SetItemText(low, 2, temp);
m_listday.Update(low);
}
break;
case 0x9f: for(i=0;i<8;i++)
{
low=i;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+5*i])*10000+
Bcdtoint(m_bRecData[17+5*i])*100+
Bcdtoint(m_bRecData[16+5*i]),
Bcdtoint(m_bRecData[15+5*i]));
m_listday.SetItemText(low, 1, temp);
temp.Format("%02d",Bcdtoint(m_bRecData[19+5*i]));
m_listday.SetItemText(low, 2, temp);
m_listday.Update(low);
}
break;
case 0xa0:
case 0xa1:
case 0xa2:
case 0xa3:
case 0xa4:
case 0xa5:
case 0xa6:
case 0xa7:
low=m_bRecData[13]-0xa0;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
Bcdtoint(m_bRecData[17])*100+
Bcdtoint(m_bRecData[16]),
Bcdtoint(m_bRecData[15]));
m_listhour.SetItemText(low, 1, temp);
temp.Format("%02x",m_bRecData[19]);
m_listhour.SetItemText(low, 2, temp);
temp.Format("%02x",m_bRecData[20]);
m_listhour.SetItemText(low, 3, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[24])*10000+
Bcdtoint(m_bRecData[23])*100+
Bcdtoint(m_bRecData[22]),
Bcdtoint(m_bRecData[21]));
m_listhour.SetItemText(low, 4, temp);
temp.Format("%02x",m_bRecData[25]);
m_listhour.SetItemText(low, 5, temp);
temp.Format("%02x",m_bRecData[26]);
m_listhour.SetItemText(low, 6, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[30])*10000+
Bcdtoint(m_bRecData[29])*100+
Bcdtoint(m_bRecData[28]),
Bcdtoint(m_bRecData[27]));
m_listhour.SetItemText(low, 7, temp);
temp.Format("%02x",m_bRecData[31]);
m_listhour.SetItemText(low, 8, temp);
temp.Format("%02x",m_bRecData[32]);
m_listhour.SetItemText(low, 9, temp);
m_listhour.Update(low);
break;
case 0xaf: for(low=0;low<8;low++)
{
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+18*low])*10000+
Bcdtoint(m_bRecData[17+18*low])*100+
Bcdtoint(m_bRecData[16+18*low]),
Bcdtoint(m_bRecData[15+18*low]));
m_listhour.SetItemText(low, 1, temp);
temp.Format("%02x",m_bRecData[19+18*low]);
m_listhour.SetItemText(low, 2, temp);
temp.Format("%02x",m_bRecData[20+18*low]);
m_listhour.SetItemText(low, 3, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[24+18*low])*10000+
Bcdtoint(m_bRecData[23+18*low])*100+
Bcdtoint(m_bRecData[22+18*low]),
Bcdtoint(m_bRecData[21+18*low]));
m_listhour.SetItemText(low, 4, temp);
temp.Format("%02x",m_bRecData[25+18*low]);
m_listhour.SetItemText(low, 5, temp);
temp.Format("%02x",m_bRecData[26+18*low]);
m_listhour.SetItemText(low, 6, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[30+18*low])*10000+
Bcdtoint(m_bRecData[29+18*low])*100+
Bcdtoint(m_bRecData[28+18*low]),
Bcdtoint(m_bRecData[27+18*low]));
m_listhour.SetItemText(low, 7, temp);
temp.Format("%02x",m_bRecData[31+18*low]);
m_listhour.SetItemText(low, 8, temp);
temp.Format("%02x",m_bRecData[32+18*low]);
m_listhour.SetItemText(low, 9, temp);
m_listhour.Update(low);
}
break;
case 0xb0:
case 0xb1:
case 0xb2:
case 0xb3:
case 0xb4:
case 0xb5:
case 0xb6:
case 0xb7:
low=m_bRecData[13]-0xb0+8;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
Bcdtoint(m_bRecData[17])*100+
Bcdtoint(m_bRecData[16]),
Bcdtoint(m_bRecData[15]));
m_listhour.SetItemText(low, 1, temp);
temp.Format("%02x",m_bRecData[19]);
m_listhour.SetItemText(low, 2, temp);
temp.Format("%02x",m_bRecData[20]);
m_listhour.SetItemText(low, 3, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[24])*10000+
Bcdtoint(m_bRecData[23])*100+
Bcdtoint(m_bRecData[22]),
Bcdtoint(m_bRecData[21]));
m_listhour.SetItemText(low, 4, temp);
temp.Format("%02x",m_bRecData[25]);
m_listhour.SetItemText(low, 5, temp);
temp.Format("%02x",m_bRecData[26]);
m_listhour.SetItemText(low, 6, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[30])*10000+
Bcdtoint(m_bRecData[29])*100+
Bcdtoint(m_bRecData[28]),
Bcdtoint(m_bRecData[27]));
m_listhour.SetItemText(low, 7, temp);
temp.Format("%02x",m_bRecData[31]);
m_listhour.SetItemText(low, 8, temp);
temp.Format("%02x",m_bRecData[32]);
m_listhour.SetItemText(low, 9, temp);
m_listhour.Update(low);
break;
case 0xbf: for(low=0;low<8;low++)
{
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+18*low])*10000+
Bcdtoint(m_bRecData[17+18*low])*100+
Bcdtoint(m_bRecData[16+18*low]),
Bcdtoint(m_bRecData[15+18*low]));
m_listhour.SetItemText(low+8, 1, temp);
temp.Format("%02x",m_bRecData[19+18*low]);
m_listhour.SetItemText(low+8, 2, temp);
temp.Format("%02x",m_bRecData[20+18*low]);
m_listhour.SetItemText(low+8, 3, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[24+18*low])*10000+
Bcdtoint(m_bRecData[23+18*low])*100+
Bcdtoint(m_bRecData[22+18*low]),
Bcdtoint(m_bRecData[21+18*low]));
m_listhour.SetItemText(low+8, 4, temp);
temp.Format("%02x",m_bRecData[25+18*low]);
m_listhour.SetItemText(low+8, 5, temp);
temp.Format("%02x",m_bRecData[26+18*low]);
m_listhour.SetItemText(low+8, 6, temp);
temp.Format("%d.%02d",Bcdtoint(m_bRecData[30+18*low])*10000+
Bcdtoint(m_bRecData[29+18*low])*100+
Bcdtoint(m_bRecData[28+18*low]),
Bcdtoint(m_bRecData[27+18*low]));
m_listhour.SetItemText(low+8, 7, temp);
temp.Format("%02x",m_bRecData[31+18*low]);
m_listhour.SetItemText(low+8, 8, temp);
temp.Format("%02x",m_bRecData[32+18*low]);
m_listhour.SetItemText(low+8, 9, temp);
m_listhour.Update(low+8);
}
break;
}
break;
case 0x94:
if(m_bRecData[13]==0x10)
{
low=1;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
Bcdtoint(m_bRecData[17])*100+
Bcdtoint(m_bRecData[16]),
Bcdtoint(m_bRecData[15]));
m_listmonth.SetItemText(low, 1, temp);
m_listmonth.Update(low);
}
break;
case 0x98: if(m_bRecData[13]==0x10)
{
low=2;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
Bcdtoint(m_bRecData[17])*100+
Bcdtoint(m_bRecData[16]),
Bcdtoint(m_bRecData[15]));
m_listmonth.SetItemText(low, 1, temp);
m_listmonth.Update(low);
}
break;
case 0x9a: if(m_bRecData[13]==0x10)
{
low=3;
temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
Bcdtoint(m_bRecData[17])*100+
Bcdtoint(m_bRecData[16]),
Bcdtoint(m_bRecData[15]));
m_listmonth.SetItemText(low, 1, temp);
m_listmonth.Update(low);
}
break;
case 0xc0:
switch(m_bRecData[13])
{
case 0x10:
temp.Format("20%02X-%02X-%02X",m_bRecData[18],m_bRecData[17],m_bRecData[16]);
m_edit_date=temp;
// UpdateData(TRUE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -