16,472
社区成员
发帖
与我相关
我的任务
分享
void CHisenseView::OnOnComm() //接收数据及处理数据
{
/* if(comm.GetCommEvent()==2) //接收数据
{
RxdBackCmd();
}*/
switch(comm.GetCommEvent())
{
case 2:RxdBackCmd();
break;
case 1001:MessageBox("1001");
break;
case 1002:MessageBox("1002");
break;
case 1003:MessageBox("1003");
break;
case 1004:MessageBox("1004");
break;
case 1006:MessageBox("1006");
break;
case 1007:MessageBox("1007");
break;
case 1008:MessageBox("1008");
break;
}
}
while(comm.GetInBufferCount()>0)//判断缓冲区
{
myVar.Attach(comm.GetInput());
safearray_inp=myVar;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
bt=rxdata[0];
if(RcvData.RxdStartCodeFlag)//判断起始码标志
{
if(RcvData.RxdCntr<25)
{
RcvData.Data[RcvData.RxdCntr] = bt;//数据存入数组
RcvData.RxdCntr = RcvData.RxdCntr + 1;//数据计数
}
if(RcvData.RxdCntr==25)
{
// RcvData.RxdLineCodeFlag = FALSE;//联字码标志复位
RcvData.RxdStartCodeFlag = FALSE;//起始码标志复位
RcvData.EndCode = bt;
CalChkSum1 = 0;//以下计算校验位(封包)
for(i=0;i<=23;i++)
{
CalChkSum1 = CalChkSum1 + RcvData.Data[i];
}
CalChkSum = 0xFF&(CalChkSum1+0x28);
if(CalChkSum==RcvData.EndCode)
{
// RcvData.Rxd1FrameDataFlag = TRUE;//一帧数据接收完成标志置位
RcvInformation = RcvData;//数据存入
RxdDataProcess();//分析、显示、存储、更改数据
RevDataTime=0;
}
}
}
else
{
RcvData.RxdCntr = 0;//计数初始化
RcvData.RxdLineCodeFlag = FALSE;//联字码标志复位
if(bt ==0x28) RcvData.RxdStartCodeFlag = TRUE;//判断起始码,起始码置位
RcvData.StrtCode = bt;//存入起始码
// RevDataTime=0;
}
}