📄 dlggongzhuang_bk.h
字号:
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 0;
byBufTemp[4] = 0;
byBufTemp[5] = 0x30;
byBufTemp[6] = 0;
byBufTemp[7] = LOBYTE(CManager::Crc16Parity(&byBufTemp[1],6));
byBufTemp[8] = HIBYTE(CManager::Crc16Parity(&byBufTemp[1],6));
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,sizeof(byBufTemp),true);
SendCodeToHEX(byBufTemp,9);
}
/*
void CDlgGongzhuang::OnGzMaster()
{
// TODO: Add your command handler code here
memset(ycValue,0,sizeof(ycValue));
memset(ycValueOld,0,sizeof(ycValueOld));
memset(yxValue,-1,sizeof(yxValue));
memset(yxValueOld,-1,sizeof(yxValueOld));
for(int i=0;i<GONGZHUANG_YXOUNT;i++)
yxicon[i].ShowWindow(SW_HIDE);
KillTimer(3);
bYKBegin = false;
CRect rc,rcToolBar;
GetClientRect(rc);
m_toolBar.GetClientRect(rcToolBar);
rc.top+=rcToolBar.Height()+5;
rc.left = xBmp + nPowerWidth;
RedrawWindow(rc);
}
void CDlgGongzhuang::OnGzInfo()
{
// TODO: Add your command handler code here
SetStatusBarInfo("");
KillTimer(1);
CRect rc,rcToolBar;
GetClientRect(rc);
m_toolBar.GetClientRect(rcToolBar);
rc.top+=rcToolBar.Height()+5;
rc.left = xBmp + nPowerWidth;
RedrawWindow(rc);
}
*/
void CDlgGongzhuang::SetStatusBarInfo(CString str)
{
m_statusBar.SetPaneText(1,str);
}
void CDlgGongzhuang::I2CTest()
{
KillTimer(1);
nCurOperation = GONGZHUANG_TEST_I2C;
SetStatusBarInfo("");
BYTE byBufTemp[11];
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 2;
byBufTemp[4] = 0;
byBufTemp[5] = 0x70;
CString strTemp;
editGzNo.GetWindowText(strTemp);
byBufTemp[6] = BYTE(atoi(strTemp));
byBufTemp[7] = 0x02;
byBufTemp[8] = 0;
WORD parity = CManager::Crc16Parity(&byBufTemp[1],8);
byBufTemp[9] = (BYTE)LOBYTE(parity);
byBufTemp[10] = (BYTE)HIBYTE(parity);
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,sizeof(byBufTemp),true);
SetTimer(3,timer3,NULL);
//((CMaintainApp*)AfxGetApp())->BeginWaitCursor();
SendCodeToHEX(byBufTemp,11);
}
void CDlgGongzhuang::SPITest()
{
KillTimer(1);
nCurOperation = GONGZHUANG_TEST_SPI;
SetStatusBarInfo("");
BYTE byBufTemp[11];
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 2;
byBufTemp[4] = 0;
byBufTemp[5] = 0x70;
CString strTemp;
editGzNo.GetWindowText(strTemp);
byBufTemp[6] = BYTE(atoi(strTemp));
byBufTemp[7] = 0x03;
byBufTemp[8] = 0;
WORD parity = CManager::Crc16Parity(&byBufTemp[1],8);
byBufTemp[9] = (BYTE)LOBYTE(parity);
byBufTemp[10] = (BYTE)HIBYTE(parity);
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,sizeof(byBufTemp),true);
SetTimer(3,timer3,NULL);
//((CMaintainApp*)AfxGetApp())->BeginWaitCursor();
SendCodeToHEX(byBufTemp,11);
}
void CDlgGongzhuang::AddrLineTest()
{
KillTimer(1);
nCurOperation = GONGZHUANG_TEST_ADDRLINE;
SetStatusBarInfo("");
BYTE byBufTemp[11];
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 2;
byBufTemp[4] = 0;
byBufTemp[5] = 0x70;
CString strTemp;
editGzNo.GetWindowText(strTemp);
byBufTemp[6] = BYTE(atoi(strTemp));
byBufTemp[7] = 0x04;
byBufTemp[8] = 0;
WORD parity = CManager::Crc16Parity(&byBufTemp[1],8);
byBufTemp[9] = (BYTE)LOBYTE(parity);
byBufTemp[10] = (BYTE)HIBYTE(parity);
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,sizeof(byBufTemp),true);
SetTimer(3,timer3,NULL);
//((CMaintainApp*)AfxGetApp())->BeginWaitCursor();
SendCodeToHEX(byBufTemp,11);
}
void CDlgGongzhuang::BuzzerTest(bool bBeginOrStop)
{
KillTimer(1);
BYTE byBufTemp[11];
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 2;
byBufTemp[4] = 0;
byBufTemp[5] = 0x70;
byBufTemp[6] = 0;
byBufTemp[7] = 0x05;
byBufTemp[8] = bBeginOrStop?0:1;
WORD parity = CManager::Crc16Parity(&byBufTemp[1],8);
byBufTemp[9] = (BYTE)LOBYTE(parity);
byBufTemp[10] = (BYTE)HIBYTE(parity);
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,sizeof(byBufTemp),true);
SendCodeToHEX(byBufTemp,11);
}
void CDlgGongzhuang::CommTest()
{
KillTimer(1);
nCurOperation = GONGZHUANG_TEST_COMM;
SetStatusBarInfo("");
BYTE byBufTemp[11];
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 2;
byBufTemp[4] = 0;
byBufTemp[5] = 0xf0;//工装功能码为70,上传时最高位为1,即f0
byBufTemp[6] = 0;
//串口测试正确的标准是收发一致,此处为了让返回的数据在处理时方便,自定义了一个扩展功能码ff
//这样返回判断时ff标明是串口测试返回
byBufTemp[7] = 0xff;
byBufTemp[8] = 0;
byBufTemp[9] = LOBYTE(CManager::Crc16Parity(&byBufTemp[1],8));
byBufTemp[10] = HIBYTE(CManager::Crc16Parity(&byBufTemp[1],8));
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,sizeof(byBufTemp),true);
SetTimer(3,timer3,NULL);
//((CMaintainApp*)AfxGetApp())->BeginWaitCursor();
SendCodeToHEX(byBufTemp,11);
}
void CDlgGongzhuang::ClockTest()
{
KillTimer(1);
nCurOperation = GONGZHUANG_TEST_CLOCK;
SetStatusBarInfo("");
BYTE byBufTemp[18];
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 0x09;
byBufTemp[4] = 0x00;
byBufTemp[5] = 0x10;
byBufTemp[6] = 0x00;//基站状态
CTime t = CTime::GetCurrentTime();
byBufTemp[7] = LOBYTE(t.GetYear());
byBufTemp[8] = HIBYTE(t.GetYear());
byBufTemp[9] = t.GetMonth();
byBufTemp[10] = t.GetDay();
byBufTemp[11] = t.GetHour();
byBufTemp[12] = t.GetMinute();
byBufTemp[13] = t.GetSecond();
byBufTemp[14] = 0x00;
byBufTemp[15] = 0x00;
byBufTemp[16] = LOBYTE(CManager::Crc16Parity(&byBufTemp[1],15));
byBufTemp[17] = HIBYTE(CManager::Crc16Parity(&byBufTemp[1],15));
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,sizeof(byBufTemp),true);
SendCodeToHEX(byBufTemp,18);
//发送完当前时间后召唤时间
memset(byBufTemp,0,sizeof(byBufTemp));
byBufTemp[0] = 0x7E;
byBufTemp[1] = byGroupNo;
byBufTemp[2] = byAddrNo;
byBufTemp[3] = 0;
byBufTemp[4] = 0;
byBufTemp[5] = 0x11;
byBufTemp[6] = 0x00;//
byBufTemp[7] = LOBYTE(CManager::Crc16Parity(&byBufTemp[1],6));
byBufTemp[8] = HIBYTE(CManager::Crc16Parity(&byBufTemp[1],6));
m_doc = ((CMainFrame*)AfxGetMainWnd())->GetDoc();
if(m_doc)
m_doc->SendData(byBufTemp,9,true);
SetTimer(3,timer3,NULL);
//((CMaintainApp*)AfxGetApp())->BeginWaitCursor();
SendCodeToHEX(byBufTemp,9);
}
void CDlgGongzhuang::ProcessGzData(BYTE *buf,int len)
{
BYTE byHead = 0x7E;
BYTE byFuncCode,byExtendFuncCode;
int i;
CString str;
if ((buf[0]!=byHead)||(buf[1]!=byGroupNo)||(buf[2]!=byAddrNo))//帧头组号站号
return ;
byFuncCode = buf[5]; //功能码
byExtendFuncCode = buf[7]; //扩展功能码
switch(byFuncCode) {
case 0xB0://ycyx return
nYcCount = buf[7];//yc count
if (nYcCount <= 0) return;
nYxCount = buf[8]*8;//yx count
if (nYxCount <= 0) return;
if(nYcCount>GONGZHUANG_YCOUNT)
nYcCount = GONGZHUANG_YCOUNT;
if (nYxCount>GONGZHUANG_YXOUNT)
nYxCount = GONGZHUANG_YXOUNT;
//取得遥测
for (i=0;i<nYcCount;i++)
ycValue[i] = (float)0.1*MAKEWORD(buf[2*i+9],buf[2*i+10]);
//取得遥信
for(i=0;i<nYxCount/8;i++)
for (int j=0;j<8;j++)
yxValue[i*8+j] = (buf[9+2*buf[7]+i]>>j)&0x1;
break;
case 0x91://召唤时钟返回
KillTimer(3);
strRtn.Format(_T("返回时间:%d-%d-%d %d:%d:%d"),MAKEWORD(buf[7],buf[8]),buf[9],buf[10],buf[11],buf[12],buf[13]);
SetStatusBarInfo(strRtn);
//((CMaintainApp*)AfxGetApp())->EndWaitCursor();
break;
case 0xf0://工装测试测试返回
switch(byExtendFuncCode) {
case 0x02://I2C return
str = _T("I2C");
break;
case 0x03://SPI return
str = _T("SPI");
break;
case 0x04://addrline return
str = _T("地址线");
break;
case 0x07://yt return
str = _T("遥调");
break;
case 0xff://comm return
str = _T("串口");
break;
default:
break;
}
//((CMaintainApp*)AfxGetApp())->EndWaitCursor();
if(buf[9])
strRtn = str + GZ_TEST_ERROR;
else
strRtn = str + GZ_TEST_OK;
SetStatusBarInfo(strRtn);
KillTimer(3);
break;
default:
break;
}
}
void CDlgGongzhuang::OnI2c()
{
// TODO: Add your command handler code here
OnGzycyxOff();
I2CTest();
SetStatusBarInfo(_T("I2C测试"));
}
void CDlgGongzhuang::OnSpi()
{
// TODO: Add your command handler code here
OnGzycyxOff();
SPITest();
SetStatusBarInfo(_T("SPI测试..."));
}
void CDlgGongzhuang::OnAddressline()
{
// TODO: Add your command handler code here
OnGzycyxOff();
AddrLineTest();
SetStatusBarInfo(_T("地址线测试..."));
}
void CDlgGongzhuang::OnBuzzerOn()
{
// TODO: Add your command handler code here
OnGzycyxOff();
BuzzerTest(0);
SetStatusBarInfo(_T("蜂鸣器测试"));
}
void CDlgGongzhuang::OnBuzzerOff()
{
// TODO: Add your command handler code here
OnGzycyxOff();
BuzzerTest(1);
SetStatusBarInfo(_T("蜂鸣器测试结束"));
}
void CDlgGongzhuang::OnGzclock()
{
// TODO: Add your command handler code here
OnGzycyxOff();
ClockTest();
SetStatusBarInfo(_T("时钟测试..."));
}
void CDlgGongzhuang::OnGzcomm()
{
// TODO: Add your command handler code here
OnGzycyxOff();
CommTest();
SetStatusBarInfo(_T("串口测试"));
}
void CDlgGongzhuang::OnGzycyxOn()
{
// TODO: Add your command handler code here
t = SetTimer(1,timer1,NULL);
SetStatusBarInfo(_T("召唤遥测遥信..."));
}
void CDlgGongzhuang::OnGzycyxOff()
{
// TODO: Add your command handler code here
KillTimer(1);
nYcCount = 0;
nYxCount = 0;
memset(ycValue,0,sizeof(ycValue));
memset(ycValueOld,0,sizeof(ycValueOld));
memset(yxValue,-1,sizeof(yxValue));
memset(yxValueOld,-1,sizeof(yxValueOld));
CRect rc;
rc.left = nYcLineLeft;
rc.right = nYcLineLeft+nCellYcWidth*24;
rc.top = ntop+9*nCell;
rc.bottom = ntop+9*nCell+4*nCellYcHigh;
RedrawWindow(rc);
for (int j=0;j<8;j++)
{
for (int i=0;i<8;i++)
{
yxicon[i+j*8].ShowWindow(SW_HIDE);
yxicon[i+j*8].RedrawWindow();
}
}
SetStatusBarInfo(_T("遥测遥信结束"));
BYTE bytemp;
SendCodeToHEX(&bytemp,0);
}
void CDlgGongzhuang::OnGzYkbegin()
{
// TODO: Add your command handler code here
OnGzycyxOff();
YkTestBegin();
SetStatusBarInfo(_T("遥控开始"));
}
void CDlgGongzhuang::OnGzYkend()
{
// TODO: Add your command handler code here
OnGzycyxOff();
YkTestStop();
SetStatusBarInfo(_T("遥控结束"));
}
void CDlgGongzhuang::OnGzYt()
{
// TODO: Add your command handler code here
OnGzycyxOff();
YtTest();
SetStatusBarInfo(_T("遥调操作..."));
}
void CDlgGongzhuang::SendCodeToHEX(BYTE* buf,int len)
{
strSendCode.Empty();
CString strTemp;
for (int i=0;i<len;i++)
{
strTemp.Format("%02X ",buf[i]);
strSendCode += strTemp;
}
RedrawWindow(rcSendCode);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -