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.

85 lines
1.6 KiB
C++

#include "FrameRecieve.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifdef __WIN_32_VC__
typedef unsigned char BYTE;
typedef unsigned char INT8U;
typedef unsigned short INT16U;
typedef unsigned int INT32U;
typedef char INT8S;
typedef short INT16S;
typedef int INT32S;
#endif
#pragma pack(1)
//超视距通用协议帧
typedef struct struProtocalIMPDown{
UINT8 head; //帧头0x
UINT8 Bytes; //字节数
UINT8 StatusWord; //状态字
UINT8 FaultWord; //故障字
UINT8 CHKSUM; //校验和
UINT8 EndFlag; //结束标志
}ProtocalIMPDown;
#pragma pack()
//超视距通用帧数据
typedef struct struDataIMPDown{
UINT8 head; //帧头0x
UINT8 Bytes; //预留
UINT8 StatusWord; //状态字
UINT8 FaultWord; //故障字
UINT8 CHKSUM; //校验和
UINT8 EndFlag; //结束标志
}DataIMPDown;
class CFrameIMPDown_ : public CFrameAbstract
{
public:
CFrameIMPDown_(void);
~CFrameIMPDown_(void);
protected:
virtual BOOL FullFrame();
virtual BOOL OnCheck();
void DoCheck();
virtual struCHECK CheckCRC(BYTE* const p);
virtual void Decode();
BYTE recvDataValue[6];
public:
DataIMPDown Data; //IMP下行协议数据
public:
float LimitedValueF(float val,float minimum, float maximum)
{
val = val>maximum?maximum:val;
val = val<minimum?minimum:val;
return val;
}
int LimitedValueI(int val,int minimum, int maximum)
{
val = val>maximum?maximum:val;
val = val<minimum?minimum:val;
return val;
}
double LimitedValueD(double val,double minimum, double maximum)
{
val = val>maximum?maximum:val;
val = val<minimum?minimum:val;
return val;
}
};