Garmin GPS 16-HVS Especificaciones técnicas - Página 33
Navegue en línea o descargue pdf Especificaciones técnicas para Sistema GPS marino Garmin GPS 16-HVS. Garmin GPS 16-HVS 37 páginas. Instruction manual
También para Garmin GPS 16-HVS: Manual de instrucciones (30 páginas), Manual de referencia (1 páginas), Especificaciones técnicas (40 páginas), Declaración de conformidad (2 páginas), Manual de instrucciones (30 páginas)
An example function to do the parsing is shown below. Note that the double data types are converted by the function
cnvt_ieee_double(). This function merely swaps the upper and lower words of the double. This is necessary
on GPS 15, 16, 17 series sensors due to a compatibility issue with the IEEE floating point standard): In this example,
the array m_TempArray contains the data portion of the ephemeris packet (with DLE stuffing removed).
/****************************************************************************
*
*
PROCEDURE NAME:
*
copyData - ephemeris data unpacker
*
*
DESCRIPTION:
*
unpacks data from ephemeris packet DATA field after extraneous DLEs
*
have been removed.
*
integer type.
*
****************************************************************************/
void GPM_ephList::copyData
(
GPM_ephData* pTemp
)
{
pTemp->EphStruct.wn
pTemp->EphStruct.toc = *(float*)&m_TempArray[IDX_EPH_TOC];
pTemp->EphStruct.toe = *(float*)&m_TempArray[IDX_EPH_TOE];
pTemp->EphStruct.af0 = *(float*)&m_TempArray[IDX_EPH_AF0];
pTemp->EphStruct.af1 = *(float*)&m_TempArray[IDX_EPH_AF1];
pTemp->EphStruct.af2 = *(float*)&m_TempArray[IDX_EPH_AF2];
pTemp->EphStruct.ura = *(float*)&m_TempArray[IDX_EPH_URA];
cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_E]);
pTemp->EphStruct.e = *(double*)&m_TempArray[IDX_EPH_E];
cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_SQRTA]);
pTemp->EphStruct.sqrta = *(double*)&m_TempArray[IDX_EPH_SQRTA];
cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_DN]);
pTemp->EphStruct.dn = *(double*)&m_TempArray[IDX_EPH_DN];
cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_M0]);
pTemp->EphStruct.m0 = *(double*)&m_TempArray[IDX_EPH_M0];
cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_W]);
pTemp->EphStruct.w = *(double*)&m_TempArray[IDX_EPH_W];
cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_OMG0]);
pTemp->EphStruct.omg0 = *(double*)&m_TempArray[IDX_EPH_OMG0];
cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_I0]);
pTemp->EphStruct.i0 = *(double*)&m_TempArray[IDX_EPH_I0];
pTemp->EphStruct.odot = *(float*)&m_TempArray[IDX_EPH_ODOT];
pTemp->EphStruct.idot = *(float*)&m_TempArray[IDX_EPH_IDOT];
pTemp->EphStruct.cus = *(float*)&m_TempArray[IDX_EPH_CUS];
pTemp->EphStruct.cuc = *(float*)&m_TempArray[IDX_EPH_CUC];
pTemp->EphStruct.cis = *(float*)&m_TempArray[IDX_EPH_CIS];
pTemp->EphStruct.cic = *(float*)&m_TempArray[IDX_EPH_CIC];
pTemp->EphStruct.crs = *(float*)&m_TempArray[IDX_EPH_CRS];
pTemp->EphStruct.crc = *(float*)&m_TempArray[IDX_EPH_CRC];
pTemp->EphStruct.iod = *(unsigned char*)&m_TempArray[IDX_EPH_IOD];
return;
}
/* copyData */
190-00228-21
Note that sint16 refers to a signed 16-bit
/* ephemeris data unpacker
/* pointer to ephemeris data array
= *(sint16*)&m_TempArray[IDX_EPH_WN];
GPS 16/17 Technical Specifications
Page 29
*/
*/
Rev. A