📄 mywin32port.cpp
字号:
case 4:
enumYCDataType = YC_FOURFRAME;
break;
case 5:
enumYCDataType = YC_FIVEFRAME;
break;
case 6:
enumYCDataType = YC_SIXFRAME;
break;
case 7:
enumYCDataType = YC_SEVENFRAME;
break;
default:
enumYCDataType = YC_NULL;
break;
}
return enumYCDataType;
}
/************************************************************************/
// 函数名称: GetFrame1Data (BYTE *pData, int dataLen, YCFRAMEOFFirst *pFrame, int nSize)
// 函数描述: 根据输入的数据取得遥测第一帧数据
// 入口参数:
// BYTE* pData 缓存的数据帧
// int iDataLen 数据帧的字节长度
// int nSize p这个结构的大小
// 出口参数:
// YCFRAMEOFFirst *pFrame 结构体,用来指定参数
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT GetFrame1Data (BYTE *pData, int dataLen, YCFRAMEOFFirst *pFrame, int nSize)
{
if ((NULL==pData) || (NULL==pFrame))
{
return 0;
}
BOOL bRet = FALSE;
CYCFrameOfFirst frameOfFirst;
bRet = frameOfFirst.Parser((BYTE*)pData,dataLen);
if (bRet)
{
frameOfFirst.GetYCDataOfFirst(pFrame,sizeof(YCFRAMEOFFirst));
return 1;
}
return 0;
}
/************************************************************************/
// 函数名称: GetFrame2Data (BYTE *pData, int dataLen, YCFRAMEOFSecond *pFrame, int nSize)
// 函数描述: 根据输入的数据取得遥测第二帧数据
// 入口参数:
// BYTE* pData 缓存的数据帧
// int iDataLen 数据帧的字节长度
// int nSize p这个结构的大小
// 出口参数:
// YCFRAMEOFSecond *pFrame 结构体,用来指定参数
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT GetFrame2Data (BYTE *pData, int dataLen, YCFRAMEOFSecond *pFrame, int nSize)
{
if ((NULL==pData) || (NULL==pFrame))
{
return 0;
}
BOOL bRet = FALSE;
CYCFrameOfSecond frameOfSecond;
bRet = frameOfSecond.Parser((BYTE*)pData,dataLen);
if (bRet)
{
frameOfSecond.GetYCDataOfSecond(pFrame,sizeof(YCFRAMEOFSecond));
return 1;
}
return 0;
}
/************************************************************************/
// 函数名称: GetFrame3Data (BYTE *pData, int dataLen, YCFRAMEOFThird *pFrame, int nSize)
// 函数描述: 根据输入的数据取得遥测第三帧数据
// 入口参数:
// BYTE* pData 缓存的数据帧
// int iDataLen 数据帧的字节长度
// int nSize p这个结构的大小
// 出口参数:
// YCFRAMEOFThird *pFrame 结构体,用来指定参数
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT GetFrame3Data (BYTE *pData, int dataLen, YCFRAMEOFThird *pFrame, int nSize)
{
if ((NULL==pData) || (NULL==pFrame))
{
return 0;
}
BOOL bRet = FALSE;
CYCFrameOfThird frameOfThird;
bRet = frameOfThird.Parser((BYTE*)pData,dataLen);
if (bRet)
{
frameOfThird.GetYCDataOfThird(pFrame,sizeof(YCFRAMEOFThird));
return 1;
}
return 0;
}
/************************************************************************/
// 函数名称: GetFrame4Data (BYTE *pData, int dataLen, YCFRAMEOFFourth *pFrame, int nSize)
// 函数描述: 根据输入的数据取得遥测第四帧数据
// 入口参数:
// BYTE* pData 缓存的数据帧
// int iDataLen 数据帧的字节长度
// int nSize p这个结构的大小
// 出口参数:
// YCFRAMEOFFourth *pFrame 结构体,用来指定参数
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT GetFrame4Data (BYTE *pData, int dataLen, YCFRAMEOFFourth *pFrame, int nSize)
{
if ((NULL==pData) || (NULL==pFrame))
{
return 0;
}
BOOL bRet = FALSE;
CYCFrameOfFourth frameOfFourth;
bRet = frameOfFourth.Parser((BYTE*)pData,dataLen);
if (bRet)
{
frameOfFourth.GetYCDataOfFourth(pFrame,sizeof(YCFRAMEOFFourth));
return 1;
}
return 0;
}
/************************************************************************/
// 函数名称: GetFrame5Data (BYTE *pData, int dataLen, YCFRAMEOFFifth *pFrame, int nSize)
// 函数描述: 根据输入的数据取得遥测第五帧数据
// 入口参数:
// BYTE* pData 缓存的数据帧
// int iDataLen 数据帧的字节长度
// int nSize p这个结构的大小
// 出口参数:
// YCFRAMEOFFifth *pFrame 结构体,用来指定参数
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT GetFrame5Data (BYTE *pData, int dataLen, YCFRAMEOFFifth *pFrame, int nSize)
{
if ((NULL==pData) || (NULL==pFrame))
{
return 0;
}
BOOL bRet = FALSE;
CYCFrameOfFifth frameOfFifth;
bRet = frameOfFifth.Parser((BYTE*)pData,dataLen);
if (bRet)
{
frameOfFifth.GetYCDataOfFifth(pFrame,sizeof(YCFRAMEOFFifth));
return 1;
}
return 0;
}
/************************************************************************/
// 函数名称: GetFrame6Data (BYTE *pData, int dataLen, YCFRAMEOFSix *pFrame, int nSize)
// 函数描述: 根据输入的数据取得遥测第六帧数据
// 入口参数:
// BYTE* pData 缓存的数据帧
// int iDataLen 数据帧的字节长度
// int nSize p这个结构的大小
// 出口参数:
// YCFRAMEOFSix *pFrame 结构体,用来指定参数
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT GetFrame6Data (BYTE *pData, int dataLen, YCFRAMEOFSix *pFrame, int nSize)
{
if ((NULL==pData) || (NULL==pFrame))
{
return 0;
}
BOOL bRet = FALSE;
CYCFrameOfSix frameOfSix;
bRet = frameOfSix.Parser((BYTE*)pData,dataLen);
if (bRet)
{
frameOfSix.GetYCDataOfSix(pFrame,sizeof(YCFRAMEOFSix));
return 1;
}
return 0;
}
/************************************************************************/
// 函数名称: GetFrame7Data (BYTE *pData, int dataLen, YCFRAMEOFSeven *pFrame, int nSize)
// 函数描述: 根据输入的数据取得遥测第七帧数据
// 入口参数:
// BYTE* pData 缓存的数据帧
// int iDataLen 数据帧的字节长度
// int nSize p这个结构的大小
// 出口参数:
// YCFRAMEOFSeven *pFrame 结构体,用来指定参数
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT GetFrame7Data (BYTE *pData, int dataLen, YCFRAMEOFSeven *pFrame, int nSize)
{
if ((NULL==pData) || (NULL==pFrame))
{
return 0;
}
BOOL bRet = FALSE;
CYCFrameOfSeven frameOfSeven;
bRet = frameOfSeven.Parser((BYTE*)pData,dataLen);
if (bRet)
{
frameOfSeven.GetYCDataOfSeven(pFrame,sizeof(YCFRAMEOFSeven));
return 1;
}
return 0;
}
/************************************************************************/
// 函数名称: Double48ToDouble64(BYTE sourArr[6],BYTE destArr[8])
// 函数描述: 48位double转64位double
// 入口参数:
// BYTE sourArr[6] 48位double数据
// 出口参数:
// BYTE destArr[8] 64位double数据
// 返 回 值: 大于0为函数执行正确,否则为错误信息
// 其 它:
/************************************************************************/
int DLL_EXPORT Double48ToDouble64(BYTE sourArr[6],BYTE destArr[8])
{
if ((NULL==sourArr) || (NULL==destArr))
{
return 0;
}
UWord16 *Mid_pointer,NavDouble_Exp,NavDouble_Hman,NavDouble_Lman;
UWord16 PcDouble_exp,PcDouble_Hman,PcDouble_Lman;
UWord8 PC_Double_Hh,PC_Double_Hl,PC_Double_Mhh,PC_Double_Mhl,PC_Double_Mlh,PC_Double_Mll,PC_Double_Lh,PC_Double_Ll;
UWord32 Mid_Double,Mid_Covdata;
// dataConvert_pointer = (Word16 *)sourArr;
NavDouble_Exp = (sourArr[0]<<8) | sourArr[1]; //指数 *dataConvert_pointer
NavDouble_Hman= (sourArr[2]<<8) | sourArr[3]; //尾数高 *(dataConvert_pointer+1)
NavDouble_Lman =(sourArr[4]<<8) | sourArr[5]; //尾数低 *(dataConvert_pointer+2)
PcDouble_exp = (NavDouble_Exp+1023); //指数+1023
if((!NavDouble_Exp)&&(!NavDouble_Hman)&&(!NavDouble_Lman)) //zero
{
PC_Double_Hh = 0;
PC_Double_Hl = 0;
PC_Double_Mhh = 0;
PC_Double_Mhl = 0;
PC_Double_Mlh = 0;
PC_Double_Mll = 0;
PC_Double_Lh =0;
PC_Double_Ll =0;
}
//sign
else if((NavDouble_Hman&0x8000)==0x8000) //negative
{
PcDouble_exp--; //指数-1
PC_Double_Hh = PcDouble_exp>>4; //64位DOUBLE指数高位
Mid_Covdata = (UWord32)NavDouble_Hman; //中转尾数数据需要做NAV的DOUBLE尾数数据的取反+1
Mid_Covdata = Mid_Covdata<<16;
Mid_Double =Mid_Covdata+NavDouble_Lman; //整合原尾数数据
Mid_Double = ~Mid_Double;
Mid_Double++;
Mid_pointer = (UWord16 *)&Mid_Double;
PcDouble_Hman = *(Mid_pointer+1);
PcDouble_Lman = *(Mid_pointer);
PC_Double_Hl = ((PcDouble_exp<<4)&0xf0)|((PcDouble_Hman>>10)&0x0f);
PC_Double_Mhh = (PcDouble_Hman>>2)&0xff;
PC_Double_Mhl = ((PcDouble_Hman<<6)&0xc0)|((PcDouble_Lman>>10)&0x3f);
PC_Double_Mlh = (PcDouble_Lman>>2)&0xff;
PC_Double_Mll = (PcDouble_Lman<<6)&0xe0;
PC_Double_Lh =0x00;
PC_Double_Ll =0x00;
PC_Double_Hh |= 0x80; //符号位,负数设置为1
}
else //positive
{
PcDouble_Hman = NavDouble_Hman;
PcDouble_Lman = NavDouble_Lman;
PcDouble_exp--;
PC_Double_Hh = PcDouble_exp>>4;
PC_Double_Hl = ((PcDouble_exp<<4)&0xf0)|((PcDouble_Hman>>10)&0x0f);
PC_Double_Mhh = (PcDouble_Hman>>2)&0xff;
PC_Double_Mhl = ((PcDouble_Hman<<6)&0xc0)|((PcDouble_Lman>>10)&0x3f);
PC_Double_Mlh = (PcDouble_Lman>>2)&0xff;
PC_Double_Mll = (PcDouble_Lman<<6)&0xc0;
PC_Double_Lh =0x00;
PC_Double_Ll =0x00;
PC_Double_Hh &= 0x7f;
}
destArr[0] = PC_Double_Ll; //data_low_low
destArr[1] = PC_Double_Lh; //data_low_high
destArr[2] = PC_Double_Mll; //data_mid_low_low
destArr[3] = PC_Double_Mlh; //data_mid_low_high
destArr[4] = PC_Double_Mhl; //data_mid_high_low
destArr[5] = PC_Double_Mhh; //data_mid_high_high
destArr[6] = PC_Double_Hl; //sign_low+data_high
destArr[7] = PC_Double_Hh; //sign_sign+exp
return 1;
}
/************************************************************************/
// 函数名称: RadianToDegree(double dRadian,int& degree,int& minute,int& second,int& tenSecond)
// 函数描述: 弧度转化为十进制的度分秒
// 入口参数:
// double dRadian 弧度值
// 出口参数:
// int& degree 度
// int& minute 分
// int& second 秒
// int& tenSecond 十分之一秒
// 返 回 值: TRUE为函数执行正确,FALSE否则为错误信息
// 其 它:
/************************************************************************/
#include <math.h>
#define PI 3.1415926
BOOL DLL_EXPORT RadianToDegree(double dRadian,int& degree,int& minute,int& second,int& tenSecond)
{
if (fabs(dRadian)<1e-8)
{
return FALSE;
}
double dDegree = (360*dRadian)/(2*PI);//弧度变为角度
degree = (int)dDegree;
minute = (int)((dDegree-degree)*60);
second = (int)((dDegree-degree-minute/60.0)*3600);
tenSecond = (int)((dDegree-degree-minute/60.0-second/3600.0)*36000);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -