📄 seriessampledlg.cpp
字号:
{
int i,readLen,CurrPacketNo,prePacketNo,CheckSum;
BYTE dataLen,PackType,CheckSumHigh,CheckSumLow;
BYTE tmpBuf[MAX_PACKET_LEN];
BYTE cBuf[2];
BYTE recvMsg[MAX_PACKET_LEN];
CString tempstr,tmpstr,MyExt,sendMsg;
if(g_bPacketRecv_Flag)
{
// for test display recve data
CSeriesSampleDlg *pDlg = (CSeriesSampleDlg *)this;
CEdit * pEdit;
pEdit = (CEdit*)pDlg->GetDlgItem(IDC_EDTRECV);
CString strRecv = (char*)g_recvdata;
CString strOld;
/*pEdit->GetWindowText(strOld);
pEdit->SetWindowText(strOld + strRecv);
// end for test*/
g_bPacketRecv_Flag=FALSE;
for(i=0;i<8;i++)
tmpBuf[i]=g_recvdata[i+3];
//AfxMessageBox(_T("I AM ALIVE before checkdata!"));
if(CheckData(g_recvdata,g_recvLen))
{
//AfxMessageBox(_T("I AM ALIVE after checkdata!"));
PackType=g_recvdata[2];
g_dataPointer=0;
switch(PackType)
{
case PT_SEARCHNWREQ:
g_sendBuf[0]=PAA;
g_sendBuf[1]=P55;
g_sendBuf[2]=PT_SEARCHNWACK;
g_sendBuf[3]=0x00;
g_sendBuf[4]=0x00;
g_sendBuf[5]=0x00;
g_sendBuf[6]=0x00;
g_sendBuf[7]=0x00;
g_sendBuf[8]=0x00;
g_sendBuf[9]=0x00;
g_sendBuf[10]=0x00;
g_sendBuf[11]=0x19;
g_sendBuf[12]=0x00;
g_sendBuf[13]=0x01;
g_sendBuf[14]=0x00;
g_sendBuf[15]=0x00;
g_sendBuf[16]=0x01;
g_sendBuf[17]=0x01;
g_sendBuf[18]=0x01;
g_sendBuf[19]=0x00;
g_sendBuf[20]=0x00;
g_sendBuf[21]=0x02;
g_sendBuf[22]=0x02;
g_sendBuf[23]=0x01;
g_sendBuf[24]=0x00;
g_sendBuf[25]=0x00;
g_sendBuf[26]=0x03;
g_sendBuf[27]=0x03;
g_sendBuf[28]=0x01;
g_sendBuf[29]=0x00;
g_sendBuf[30]=0x00;
g_sendBuf[31]=0x04;
g_sendBuf[32]=0x05;
g_sendBuf[33]=0x01;
g_sendBuf[34]=0x00;
g_sendBuf[35]=0x00;
g_sendBuf[36]=0x05;
CheckSum=0;
for(i=0;i<37;i++)
CheckSum=CheckSum+g_sendBuf[i];
CheckSumHigh=CheckSum/256;
CheckSumLow=CheckSum%256;
g_sendBuf[37]=CheckSumHigh;
g_sendBuf[38]=CheckSumLow;
if (!m_ceSeries.WritePort(g_sendBuf,39))
{
AfxMessageBox(L"写入失败");
}
else
{
AfxMessageBox(L"搜索网络应答数据已发送!");
}
// for test display recve data
pEdit->GetWindowText(strOld);
pEdit->SetWindowText(strOld + strRecv);
// end for test
break;
case PT_SEARCHNWACK:
break;
case PT_SEARCHNDREQ:
g_sendBuf[0]=PAA;
g_sendBuf[1]=P55;
g_sendBuf[2]=PT_SEARCHNDACK;
g_sendBuf[3]=0x00;
g_sendBuf[4]=0x00;
g_sendBuf[5]=0x00;
g_sendBuf[6]=0x00;
g_sendBuf[7]=0x00;
g_sendBuf[8]=0x00;
g_sendBuf[9]=0x00;
g_sendBuf[10]=0x00;
g_sendBuf[11]=0x18;
g_sendBuf[12]=0x00;
g_sendBuf[13]=0x01;
g_sendBuf[14]=0x01;
g_sendBuf[15]=0x00;
g_sendBuf[16]=0x00;
g_sendBuf[17]=0x01;
g_sendBuf[18]=0x00;
g_sendBuf[19]=0x02;
g_sendBuf[20]=0x01;
g_sendBuf[21]=0x00;
g_sendBuf[22]=0x00;
g_sendBuf[23]=0x02;
g_sendBuf[24]=0x00;
g_sendBuf[25]=0x03;
g_sendBuf[26]=0x01;
g_sendBuf[27]=0x00;
g_sendBuf[28]=0x00;
g_sendBuf[29]=0x03;
g_sendBuf[30]=0x00;
g_sendBuf[31]=0x04;
g_sendBuf[32]=0x01;
g_sendBuf[33]=0x00;
g_sendBuf[34]=0x00;
g_sendBuf[35]=0x04;
CheckSum=0;
for(i=0;i<36;i++)
CheckSum=CheckSum+g_sendBuf[i];
CheckSumHigh=CheckSum/256;
CheckSumLow=CheckSum%256;
g_sendBuf[36]=CheckSumHigh;
g_sendBuf[37]=CheckSumLow;
if (!m_ceSeries.WritePort(g_sendBuf,38))
{
AfxMessageBox(L"写入失败");
}
else
{
AfxMessageBox(L"搜索设备应答数据已发送!");
}
break;
case PT_SEARCHNDACK:
break;
case PT_CONNREQ:
g_sendBuf[0]=PAA;
g_sendBuf[1]=P55;
g_sendBuf[2]=PT_CONNACK;
g_sendBuf[3]=0x00;
g_sendBuf[4]=0x00;
g_sendBuf[5]=0x00;
g_sendBuf[6]=0x00;
g_sendBuf[7]=0x00;
g_sendBuf[8]=0x00;
g_sendBuf[9]=0x00;
g_sendBuf[10]=0x00;
g_sendBuf[11]=0x00;
CheckSum=0;
for(i=0;i<12;i++)
CheckSum=CheckSum+g_sendBuf[i];
CheckSumHigh=CheckSum/256;
CheckSumLow=CheckSum%256;
g_sendBuf[12]=CheckSumHigh;
g_sendBuf[13]=CheckSumLow;
if (!m_ceSeries.WritePort(g_sendBuf,14))
{
AfxMessageBox(L"写入失败");
}
else
{
AfxMessageBox(L"握手应答数据已发送!");
}
break;
case PT_CONNACK:
break;
case PT_SENDMSGREQ:
dataLen=g_recvdata[11];
AfxMessageBox(_T("I AM ALIVE after recv msg pkt!"));
//if((dataLen>0)&&(!g_bLargePacket))
if(dataLen>0)
{
//if((g_recvdata[12]=PAA)&&(g_recvdata[13]=P55)) g_bLargePacket=TRUE;
for(i=0;i<dataLen;i++)
recvMsg[i]=g_recvdata[i+12];
g_PacketNo=0;
}
//if((g_recvdata[12]=PAA)&&(g_recvdata[13]=P55)) g_bLargePacket=TRUE;
//else g_bLargePacket=FALSE;
g_bLargePacket=FALSE;
if(!g_bLargePacket)
{
sendMsg="You are WelCome,My Friend!欢迎你,我的朋友!";
dataLen=sendMsg.GetLength();
g_sendBuf[0]=PAA;
g_sendBuf[1]=P55;
g_sendBuf[2]=PT_SENDMSGACK;
g_sendBuf[3]=0x00;
g_sendBuf[4]=0x00;
g_sendBuf[5]=0x00;
g_sendBuf[6]=0x00;
g_sendBuf[7]=0x00;
g_sendBuf[8]=0x00;
g_sendBuf[9]=0x00;
g_sendBuf[10]=0x00;
g_sendBuf[11]=dataLen;
for(i=0;i<dataLen;i++)
g_sendBuf[i+12]=sendMsg[i];
CheckSum=0;
for(i=0;i<12+dataLen;i++)
CheckSum=CheckSum+g_sendBuf[i];
CheckSumHigh=CheckSum/256;
CheckSumLow=CheckSum%256;
g_sendBuf[12+dataLen]=CheckSumHigh;
g_sendBuf[13+dataLen]=CheckSumLow;
//MemoMsgRecv.Lines.Add(recvMsg);
if (!m_ceSeries.WritePort(g_sendBuf,14+dataLen))
{
AfxMessageBox(L"写入失败");
}
else
{
AfxMessageBox(L"消息应答数据已发送!");
}
}
else
{
if(dataLen<100) g_bLargePacket=false;
g_sendBuf[0]=PAA;
g_sendBuf[1]=P55;
g_sendBuf[2]=PT_SENDMSGACK;
g_sendBuf[3]=tmpBuf[0];
g_sendBuf[4]=tmpBuf[1];
g_sendBuf[5]=tmpBuf[2];
g_sendBuf[6]=tmpBuf[3];
g_sendBuf[7]=tmpBuf[6];
g_sendBuf[8]=tmpBuf[7];
g_sendBuf[9]=tmpBuf[4];
g_sendBuf[10]=tmpBuf[5];
g_sendBuf[11]=1;
g_sendBuf[12]=PAA;
CheckSum=0;
for(i=0;i<13;i++)
CheckSum=CheckSum+g_sendBuf[i];
CheckSumHigh=CheckSum/256;
CheckSumLow=CheckSum%256;
g_sendBuf[13]=CheckSumHigh;
g_sendBuf[14]=CheckSumLow;
if (!m_ceSeries.WritePort(g_sendBuf,15))
{
AfxMessageBox(L"写入失败");
}
}
pEdit->GetWindowText(strOld);
pEdit->SetWindowText(strOld + strRecv);
break;
case PT_SENDMSGACK:
dataLen=g_recvdata[11];
if(dataLen>0)
{
for(i=0;i<MAX_PACKET_LEN;i++)
recvMsg[i]=0x00;
for(i=0;i<dataLen;i++)
recvMsg[i]=g_recvdata[i+12];
}
cBuf[0]=0x0D;
cBuf[1]=0x0A;
tmpstr=cBuf;
pEdit->GetWindowText(strOld);
pEdit->SetWindowText(strOld + recvMsg+tmpstr);
break;
case PT_OBJTRANSACK:
break;
case PT_ZBQULITYRACK:
break;
case PT_ZBSENSITIVEACK:
break;
case PT_BROADCASTACK:
default:
break;
}
}
for(i=0;i<MAX_PACKET_LEN;i++ )
g_recvdata[i]=0x00;
g_bDone=FALSE;
}
}
void CSeriesSampleDlg::PacketData(BYTE *tmpSndSBuf, BYTE PktType, int PktNo, unsigned short destaddr, unsigned short sourceaddr, BYTE sLen)
{
int i,j,k;
unsigned short CheckSum;
BYTE bufLen,CheckSumHigh,CheckSumLow;
CString tempstr;
for(i=0;i<MAX_PACKET_LEN;i++)
g_sendBuf[i]=0x00;
bufLen=sLen;
g_sendBuf[0]=PAA;
g_sendBuf[1]=P55;
g_sendBuf[2]=PktType;
g_sendBuf[3]=(BYTE)PktNo;
g_sendBuf[4]=(BYTE)PktNo>>8;
g_sendBuf[5]=(BYTE)PktNo>>16;
g_sendBuf[6]=(BYTE)PktNo>>24;
g_sendBuf[7]=(BYTE)destaddr;
g_sendBuf[8]=(BYTE)destaddr>>8;
g_sendBuf[9]=(BYTE)sourceaddr;
g_sendBuf[10]=(BYTE)sourceaddr>>16;
g_sendBuf[11]=bufLen;
for(i=0;i<bufLen;i++)
g_sendBuf[12+i]=tmpSndSBuf[i];
CheckSum=0;
for(i=0;i<bufLen+12;i++)
CheckSum=CheckSum+g_sendBuf[i];
CheckSumHigh=CheckSum/256;
CheckSumLow=CheckSum%256;
g_sendBuf[bufLen+12]=CheckSumHigh;
g_sendBuf[bufLen+13]=CheckSumLow;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -