You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
1.4 KiB
C++

#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