Thanks Pete! :D
OK, it was my fault :oops:
For the whole community - This is my solution:
Fsuipc fs = new Fsuipc();
int fsToken = 0;
int fsResult = 0;
long latRead = 0;
double latConv = 0;
int latDegrees = 0;
double latMinutes = 0;
const int FSUIPC_LATITUDE_OFFSET = 0x0560;
const int FSUIPC_LATITUDE_LENGTH = 8;
const double FSUIPC_LATITUDE_FACTOR = 2.095109e-015; /* 90.0 / (10001750.0 * 65536.0 * 65536.0) */
const double FS2004_MINUTE_FACTOR = 60;
fs.FSUIPC_Initialization();
fs.FSUIPC_Open(0, ref fsResult);
fs.FSUIPC_Read( FSUIPC_LATITUDE_OFFSET,
FSUIPC_LATITUDE_LENGTH,
ref fsToken,
ref fsResult);
fs.FSUIPC_Process(ref fsResult);
fs.FSUIPC_Get(ref fsToken, ref latRead);
fs.FSUIPC_Close();
/* Convert to degrees
* Example:
* readLat = 24282851155509248
* convLat = 50.875220001567826 */
latConv = latRead * FSUIPC_LATITUDE_FACTOR;
/* "full" degrees
* latDegrees = 50 */
latDegrees = (int) latConv ;
/* Multiply by 60 and
* Round to 4 digits (good accuracy for most applications)
* latMinutes = 52.5132 */
latMinutes = (latConv - latDegrees) * FS2004_MINUTE_FACTOR;
latMinutes = Math.Round(latMinutes, 4);
/* Explanation: N50* 52.51 is the latitude from EDDK - Gate E10 ;-) */
Regards,
Daniel