⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mywin32port.cpp

📁 多线程
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	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 + -