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++
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 |