if((DITemp==0xFE0001)||(DITemp==0xFE0002)||(DITemp==0xFE0003)) { if(RxFrm->Len != (12 + 5*sizeof(u16) ) ) return(DL645B_ERRINFO_DATA); fnDl645File_Write(Dl645FileId_GeneralPara , Dl645FileItemInfoOffAddr_GeneralPara_OutputPara + 16 + (5*sizeof(u16)) * (RxFrm->UDat.DI0 - 1) , &RxFrm->UDat.Dat[8] , 5*sizeof(u16) ); memset(&Dl645Output.PriPara,0,sizeof(Dl645Output.PriPara) - 2); return(DL645B_ERRINFO_OK); } if(DITemp==0x00f91201) { if((RxFrm->UDat.Dat[0] == 0x03)&&(RxFrm->UDat.Dat[1] == 0x43)&&(RxFrm->UDat.Dat[2] == 0x56)&&(RxFrm->UDat.Dat[3] == 0x98)) ; else return(DL645B_ERRINFO_PSW); } else if(DITemp==0x001503) ; else { if(!(Dl645Bkgrd.PubData.MtSta.MtSta3.StaBit.PrgEnable) ) return(DL645B_ERRINFO_PSW); err = fnDl645Secret_Verify(0x04 , RxFrm->UDat.Dat[0] , &RxFrm->UDat.Dat[1]); if(err != SUCCESS) return(DL645B_ERRINFO_PSW); }解析代码
时间: 2024-03-04 22:52:46 浏览: 144
一个简单的java游戏.zip
这段代码看起来像是C语言编写的,主要是针对DL645B协议进行数据处理的。下面是对代码的分析:
1. if((DITemp==0xFE0001)||(DITemp==0xFE0002)||(DITemp==0xFE0003)):如果DITemp等于0xFE0001或者0xFE0002或者0xFE0003,则执行if语句中的代码。
2. if(RxFrm->Len != (12 + 5*sizeof(u16))) return(DL645B_ERRINFO_DATA):如果接收到的数据帧长度不等于12加上5个u16数据类型所占的长度,则返回数据错误。
3. fnDl645File_Write(Dl645FileId_GeneralPara, Dl645FileItemInfoOffAddr_GeneralPara_OutputPara + 16 + (5*sizeof(u16)) * (RxFrm->UDat.DI0 - 1), &RxFrm->UDat.Dat[8], 5*sizeof(u16)):将接收到的数据帧中的8号字节之后的5个u16数据类型写入到某个文件中的指定位置。
4. memset(&Dl645Output.PriPara, 0, sizeof(Dl645Output.PriPara) - 2):将Dl645Output.PriPara结构体中的所有成员变量都清零,但是最后两个字节不清零。
5. return(DL645B_ERRINFO_OK):返回数据处理成功。
6. if(DITemp==0x00f91201):如果DITemp等于0x00f91201,则执行if语句中的代码。
7. if((RxFrm->UDat.Dat[0] == 0x03)&&(RxFrm->UDat.Dat[1] == 0x43)&&(RxFrm->UDat.Dat[2] == 0x56)&&(RxFrm->UDat.Dat[3] == 0x98));如果接收到的数据帧中的第0、1、2、3个字节分别等于0x03、0x43、0x56、0x98,则不做处理;否则返回密码错误。
8. else if(DITemp==0x001503);如果DITemp等于0x001503,则不做处理。
9. else:如果DITemp既不等于0x00f91201,也不等于0x001503,则执行else语句中的代码。
10. if(!(Dl645Bkgrd.PubData.MtSta.MtSta3.StaBit.PrgEnable)) return(DL645B_ERRINFO_PSW):如果某个条件不成立,则返回密码错误。
11. err = fnDl645Secret_Verify(0x04, RxFrm->UDat.Dat[0], &RxFrm->UDat.Dat[1]):调用fnDl645Secret_Verify函数进行密码验证。
12. if(err != SUCCESS) return(DL645B_ERRINFO_PSW):如果密码验证失败,则返回密码错误。
阅读全文