#ifndef __FRAME_FK_U_CAMERA #define __FRAME_FK_U_CAMERA #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "FrameRecieve.h" #pragma pack(1) typedef struct struProtocalKB { UINT8 head[2]; //帧头0x UINT8 reserved; //预留 UINT8 data[3]; //开关指令 UINT8 curPage; //指令页 UINT8 CHKSUM; //校验字节 }ProtocalKB; #pragma pack() class CFrameFK_U_CAMERA : public CFrameAbstract { public: int fk_counter; CFrameFK_U_CAMERA() { strcpy(Name, "机载相机"); FrameLength = 8; HeadLength = 2; Head[0] = 0xEB; Head[1] = 0x98; memcpy(Addr(), Head, HeadLength); CheckLength = 1; CheckPos = FrameLength -1; FrameType = ftFKd; fk_counter = 0; DINeedRespond = FALSE; ckCmd = 0x00; memset(&Data,0,sizeof(ProtocalKB)); } public: ProtocalKB Data; BOOL DINeedRespond; virtual struCHECK CheckCRC(BYTE* const p)//子帧校验 { return getCRC8(p,7); } virtual BYTE* SendPrepare() { return CFrameAbstract::SendPrepare(); } public: BYTE ckCmd;//从控指令 public: virtual ~CFrameFK_U_CAMERA(){ } protected: virtual BOOL OnCheck(){ if(CheckCRC(Addr()).C0 == Addr()[7]) return true; else return false; } virtual void Decode() { } virtual void Encode() { ProtocalKB *pBuff = (ProtocalKB*) Addr(); pBuff->head[0] = 0xEB; pBuff->head[1] = 0x98; pBuff->reserved = 0x00; memset(pBuff->data,ckCmd,3); pBuff->curPage = 0x01; } }; #endif