ホーム › Devices.Geolocation › GNSS_FIXDATA
GNSS_FIXDATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Size | DWORD | 4 | +0 | +0 | この構造体のサイズをバイト単位で示すDWORD。 |
| Version | DWORD | 4 | +4 | +4 | 構造体のバージョンを示すDWORD。 |
| FixSessionID | DWORD | 4 | +8 | +8 | この測位結果が属するセッションを識別するDWORD。 |
| FixTimeStamp | FILETIME | 8 | +12 | +12 | 測位を行った時刻を示すFILETIME。 |
| IsFinalFix | BOOL | 4 | +20 | +20 | このセッションにおける最終測位結果かを示すBOOL。 |
| FixStatus | NTSTATUS | 4 | +24 | +24 | 測位処理の結果ステータスを示すNTSTATUS。 |
| FixLevelOfDetails | DWORD | 4 | +28 | +28 | 含まれる測位データの詳細度を示すDWORD。 |
| BasicData | GNSS_FIXDATA_BASIC | 48 | +32 | +32 | 基本測位データ(緯度経度等)を保持するGNSS_FIXDATA_BASIC。 |
| AccuracyData | GNSS_FIXDATA_ACCURACY | 64 | +80 | +80 | 測位精度データを保持するGNSS_FIXDATA_ACCURACY。 |
| SatelliteData | GNSS_FIXDATA_SATELLITE | 2064 | +144 | +144 | 使用衛星情報を保持するGNSS_FIXDATA_SATELLITE。 |
各言語での定義
#include <windows.h>
// FILETIME (x64 8 / x86 8 バイト)
typedef struct FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
// GNSS_FIXDATA_BASIC (x64 48 / x86 48 バイト)
typedef struct GNSS_FIXDATA_BASIC {
DWORD Size;
DWORD Version;
DOUBLE Latitude;
DOUBLE Longitude;
DOUBLE Altitude;
DOUBLE Speed;
DOUBLE Heading;
} GNSS_FIXDATA_BASIC;
// GNSS_FIXDATA_ACCURACY (x64 64 / x86 64 バイト)
typedef struct GNSS_FIXDATA_ACCURACY {
DWORD Size;
DWORD Version;
DWORD HorizontalAccuracy;
DWORD HorizontalErrorMajorAxis;
DWORD HorizontalErrorMinorAxis;
DWORD HorizontalErrorAngle;
DWORD HeadingAccuracy;
DWORD AltitudeAccuracy;
DWORD SpeedAccuracy;
DWORD HorizontalConfidence;
DWORD HeadingConfidence;
DWORD AltitudeConfidence;
DWORD SpeedConfidence;
FLOAT PositionDilutionOfPrecision;
FLOAT HorizontalDilutionOfPrecision;
FLOAT VerticalDilutionOfPrecision;
} GNSS_FIXDATA_ACCURACY;
// GNSS_SATELLITEINFO (x64 32 / x86 32 バイト)
typedef struct GNSS_SATELLITEINFO {
DWORD SatelliteId;
BOOL UsedInPositiong;
DOUBLE Elevation;
DOUBLE Azimuth;
DOUBLE SignalToNoiseRatio;
} GNSS_SATELLITEINFO;
// GNSS_FIXDATA_SATELLITE (x64 2064 / x86 2064 バイト)
typedef struct GNSS_FIXDATA_SATELLITE {
DWORD Size;
DWORD Version;
DWORD SatelliteCount;
GNSS_SATELLITEINFO SatelliteArray[64];
} GNSS_FIXDATA_SATELLITE;
// GNSS_FIXDATA (x64 2208 / x86 2208 バイト)
typedef struct GNSS_FIXDATA {
DWORD Size;
DWORD Version;
DWORD FixSessionID;
FILETIME FixTimeStamp;
BOOL IsFinalFix;
NTSTATUS FixStatus;
DWORD FixLevelOfDetails;
GNSS_FIXDATA_BASIC BasicData;
GNSS_FIXDATA_ACCURACY AccuracyData;
GNSS_FIXDATA_SATELLITE SatelliteData;
} GNSS_FIXDATA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
public uint dwLowDateTime;
public uint dwHighDateTime;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA_BASIC
{
public uint Size;
public uint Version;
public double Latitude;
public double Longitude;
public double Altitude;
public double Speed;
public double Heading;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA_ACCURACY
{
public uint Size;
public uint Version;
public uint HorizontalAccuracy;
public uint HorizontalErrorMajorAxis;
public uint HorizontalErrorMinorAxis;
public uint HorizontalErrorAngle;
public uint HeadingAccuracy;
public uint AltitudeAccuracy;
public uint SpeedAccuracy;
public uint HorizontalConfidence;
public uint HeadingConfidence;
public uint AltitudeConfidence;
public uint SpeedConfidence;
public float PositionDilutionOfPrecision;
public float HorizontalDilutionOfPrecision;
public float VerticalDilutionOfPrecision;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_SATELLITEINFO
{
public uint SatelliteId;
[MarshalAs(UnmanagedType.Bool)] public bool UsedInPositiong;
public double Elevation;
public double Azimuth;
public double SignalToNoiseRatio;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA_SATELLITE
{
public uint Size;
public uint Version;
public uint SatelliteCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public GNSS_SATELLITEINFO[] SatelliteArray;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA
{
public uint Size;
public uint Version;
public uint FixSessionID;
public FILETIME FixTimeStamp;
[MarshalAs(UnmanagedType.Bool)] public bool IsFinalFix;
public int FixStatus;
public uint FixLevelOfDetails;
public GNSS_FIXDATA_BASIC BasicData;
public GNSS_FIXDATA_ACCURACY AccuracyData;
public GNSS_FIXDATA_SATELLITE SatelliteData;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FILETIME
Public dwLowDateTime As UInteger
Public dwHighDateTime As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA_BASIC
Public Size As UInteger
Public Version As UInteger
Public Latitude As Double
Public Longitude As Double
Public Altitude As Double
Public Speed As Double
Public Heading As Double
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA_ACCURACY
Public Size As UInteger
Public Version As UInteger
Public HorizontalAccuracy As UInteger
Public HorizontalErrorMajorAxis As UInteger
Public HorizontalErrorMinorAxis As UInteger
Public HorizontalErrorAngle As UInteger
Public HeadingAccuracy As UInteger
Public AltitudeAccuracy As UInteger
Public SpeedAccuracy As UInteger
Public HorizontalConfidence As UInteger
Public HeadingConfidence As UInteger
Public AltitudeConfidence As UInteger
Public SpeedConfidence As UInteger
Public PositionDilutionOfPrecision As Single
Public HorizontalDilutionOfPrecision As Single
Public VerticalDilutionOfPrecision As Single
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_SATELLITEINFO
Public SatelliteId As UInteger
<MarshalAs(UnmanagedType.Bool)> Public UsedInPositiong As Boolean
Public Elevation As Double
Public Azimuth As Double
Public SignalToNoiseRatio As Double
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA_SATELLITE
Public Size As UInteger
Public Version As UInteger
Public SatelliteCount As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public SatelliteArray() As GNSS_SATELLITEINFO
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA
Public Size As UInteger
Public Version As UInteger
Public FixSessionID As UInteger
Public FixTimeStamp As FILETIME
<MarshalAs(UnmanagedType.Bool)> Public IsFinalFix As Boolean
Public FixStatus As Integer
Public FixLevelOfDetails As UInteger
Public BasicData As GNSS_FIXDATA_BASIC
Public AccuracyData As GNSS_FIXDATA_ACCURACY
Public SatelliteData As GNSS_FIXDATA_SATELLITE
End Structureimport ctypes
from ctypes import wintypes
class FILETIME(ctypes.Structure):
_fields_ = [
("dwLowDateTime", wintypes.DWORD),
("dwHighDateTime", wintypes.DWORD),
]
class GNSS_FIXDATA_BASIC(ctypes.Structure):
_fields_ = [
("Size", wintypes.DWORD),
("Version", wintypes.DWORD),
("Latitude", ctypes.c_double),
("Longitude", ctypes.c_double),
("Altitude", ctypes.c_double),
("Speed", ctypes.c_double),
("Heading", ctypes.c_double),
]
class GNSS_FIXDATA_ACCURACY(ctypes.Structure):
_fields_ = [
("Size", wintypes.DWORD),
("Version", wintypes.DWORD),
("HorizontalAccuracy", wintypes.DWORD),
("HorizontalErrorMajorAxis", wintypes.DWORD),
("HorizontalErrorMinorAxis", wintypes.DWORD),
("HorizontalErrorAngle", wintypes.DWORD),
("HeadingAccuracy", wintypes.DWORD),
("AltitudeAccuracy", wintypes.DWORD),
("SpeedAccuracy", wintypes.DWORD),
("HorizontalConfidence", wintypes.DWORD),
("HeadingConfidence", wintypes.DWORD),
("AltitudeConfidence", wintypes.DWORD),
("SpeedConfidence", wintypes.DWORD),
("PositionDilutionOfPrecision", ctypes.c_float),
("HorizontalDilutionOfPrecision", ctypes.c_float),
("VerticalDilutionOfPrecision", ctypes.c_float),
]
class GNSS_SATELLITEINFO(ctypes.Structure):
_fields_ = [
("SatelliteId", wintypes.DWORD),
("UsedInPositiong", wintypes.BOOL),
("Elevation", ctypes.c_double),
("Azimuth", ctypes.c_double),
("SignalToNoiseRatio", ctypes.c_double),
]
class GNSS_FIXDATA_SATELLITE(ctypes.Structure):
_fields_ = [
("Size", wintypes.DWORD),
("Version", wintypes.DWORD),
("SatelliteCount", wintypes.DWORD),
("SatelliteArray", GNSS_SATELLITEINFO * 64),
]
class GNSS_FIXDATA(ctypes.Structure):
_fields_ = [
("Size", wintypes.DWORD),
("Version", wintypes.DWORD),
("FixSessionID", wintypes.DWORD),
("FixTimeStamp", FILETIME),
("IsFinalFix", wintypes.BOOL),
("FixStatus", ctypes.c_int),
("FixLevelOfDetails", wintypes.DWORD),
("BasicData", GNSS_FIXDATA_BASIC),
("AccuracyData", GNSS_FIXDATA_ACCURACY),
("SatelliteData", GNSS_FIXDATA_SATELLITE),
]#[repr(C)]
pub struct FILETIME {
pub dwLowDateTime: u32,
pub dwHighDateTime: u32,
}
#[repr(C)]
pub struct GNSS_FIXDATA_BASIC {
pub Size: u32,
pub Version: u32,
pub Latitude: f64,
pub Longitude: f64,
pub Altitude: f64,
pub Speed: f64,
pub Heading: f64,
}
#[repr(C)]
pub struct GNSS_FIXDATA_ACCURACY {
pub Size: u32,
pub Version: u32,
pub HorizontalAccuracy: u32,
pub HorizontalErrorMajorAxis: u32,
pub HorizontalErrorMinorAxis: u32,
pub HorizontalErrorAngle: u32,
pub HeadingAccuracy: u32,
pub AltitudeAccuracy: u32,
pub SpeedAccuracy: u32,
pub HorizontalConfidence: u32,
pub HeadingConfidence: u32,
pub AltitudeConfidence: u32,
pub SpeedConfidence: u32,
pub PositionDilutionOfPrecision: f32,
pub HorizontalDilutionOfPrecision: f32,
pub VerticalDilutionOfPrecision: f32,
}
#[repr(C)]
pub struct GNSS_SATELLITEINFO {
pub SatelliteId: u32,
pub UsedInPositiong: i32,
pub Elevation: f64,
pub Azimuth: f64,
pub SignalToNoiseRatio: f64,
}
#[repr(C)]
pub struct GNSS_FIXDATA_SATELLITE {
pub Size: u32,
pub Version: u32,
pub SatelliteCount: u32,
pub SatelliteArray: [GNSS_SATELLITEINFO; 64],
}
#[repr(C)]
pub struct GNSS_FIXDATA {
pub Size: u32,
pub Version: u32,
pub FixSessionID: u32,
pub FixTimeStamp: FILETIME,
pub IsFinalFix: i32,
pub FixStatus: i32,
pub FixLevelOfDetails: u32,
pub BasicData: GNSS_FIXDATA_BASIC,
pub AccuracyData: GNSS_FIXDATA_ACCURACY,
pub SatelliteData: GNSS_FIXDATA_SATELLITE,
}import "golang.org/x/sys/windows"
type FILETIME struct {
dwLowDateTime uint32
dwHighDateTime uint32
}
type GNSS_FIXDATA_BASIC struct {
Size uint32
Version uint32
Latitude float64
Longitude float64
Altitude float64
Speed float64
Heading float64
}
type GNSS_FIXDATA_ACCURACY struct {
Size uint32
Version uint32
HorizontalAccuracy uint32
HorizontalErrorMajorAxis uint32
HorizontalErrorMinorAxis uint32
HorizontalErrorAngle uint32
HeadingAccuracy uint32
AltitudeAccuracy uint32
SpeedAccuracy uint32
HorizontalConfidence uint32
HeadingConfidence uint32
AltitudeConfidence uint32
SpeedConfidence uint32
PositionDilutionOfPrecision float32
HorizontalDilutionOfPrecision float32
VerticalDilutionOfPrecision float32
}
type GNSS_SATELLITEINFO struct {
SatelliteId uint32
UsedInPositiong int32
Elevation float64
Azimuth float64
SignalToNoiseRatio float64
}
type GNSS_FIXDATA_SATELLITE struct {
Size uint32
Version uint32
SatelliteCount uint32
SatelliteArray [64]GNSS_SATELLITEINFO
}
type GNSS_FIXDATA struct {
Size uint32
Version uint32
FixSessionID uint32
FixTimeStamp FILETIME
IsFinalFix int32
FixStatus int32
FixLevelOfDetails uint32
BasicData GNSS_FIXDATA_BASIC
AccuracyData GNSS_FIXDATA_ACCURACY
SatelliteData GNSS_FIXDATA_SATELLITE
}type
FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
GNSS_FIXDATA_BASIC = record
Size: DWORD;
Version: DWORD;
Latitude: Double;
Longitude: Double;
Altitude: Double;
Speed: Double;
Heading: Double;
end;
GNSS_FIXDATA_ACCURACY = record
Size: DWORD;
Version: DWORD;
HorizontalAccuracy: DWORD;
HorizontalErrorMajorAxis: DWORD;
HorizontalErrorMinorAxis: DWORD;
HorizontalErrorAngle: DWORD;
HeadingAccuracy: DWORD;
AltitudeAccuracy: DWORD;
SpeedAccuracy: DWORD;
HorizontalConfidence: DWORD;
HeadingConfidence: DWORD;
AltitudeConfidence: DWORD;
SpeedConfidence: DWORD;
PositionDilutionOfPrecision: Single;
HorizontalDilutionOfPrecision: Single;
VerticalDilutionOfPrecision: Single;
end;
GNSS_SATELLITEINFO = record
SatelliteId: DWORD;
UsedInPositiong: BOOL;
Elevation: Double;
Azimuth: Double;
SignalToNoiseRatio: Double;
end;
GNSS_FIXDATA_SATELLITE = record
Size: DWORD;
Version: DWORD;
SatelliteCount: DWORD;
SatelliteArray: array[0..63] of GNSS_SATELLITEINFO;
end;
GNSS_FIXDATA = record
Size: DWORD;
Version: DWORD;
FixSessionID: DWORD;
FixTimeStamp: FILETIME;
IsFinalFix: BOOL;
FixStatus: Integer;
FixLevelOfDetails: DWORD;
BasicData: GNSS_FIXDATA_BASIC;
AccuracyData: GNSS_FIXDATA_ACCURACY;
SatelliteData: GNSS_FIXDATA_SATELLITE;
end;const FILETIME = extern struct {
dwLowDateTime: u32,
dwHighDateTime: u32,
};
const GNSS_FIXDATA_BASIC = extern struct {
Size: u32,
Version: u32,
Latitude: f64,
Longitude: f64,
Altitude: f64,
Speed: f64,
Heading: f64,
};
const GNSS_FIXDATA_ACCURACY = extern struct {
Size: u32,
Version: u32,
HorizontalAccuracy: u32,
HorizontalErrorMajorAxis: u32,
HorizontalErrorMinorAxis: u32,
HorizontalErrorAngle: u32,
HeadingAccuracy: u32,
AltitudeAccuracy: u32,
SpeedAccuracy: u32,
HorizontalConfidence: u32,
HeadingConfidence: u32,
AltitudeConfidence: u32,
SpeedConfidence: u32,
PositionDilutionOfPrecision: f32,
HorizontalDilutionOfPrecision: f32,
VerticalDilutionOfPrecision: f32,
};
const GNSS_SATELLITEINFO = extern struct {
SatelliteId: u32,
UsedInPositiong: i32,
Elevation: f64,
Azimuth: f64,
SignalToNoiseRatio: f64,
};
const GNSS_FIXDATA_SATELLITE = extern struct {
Size: u32,
Version: u32,
SatelliteCount: u32,
SatelliteArray: [64]GNSS_SATELLITEINFO,
};
const GNSS_FIXDATA = extern struct {
Size: u32,
Version: u32,
FixSessionID: u32,
FixTimeStamp: FILETIME,
IsFinalFix: i32,
FixStatus: i32,
FixLevelOfDetails: u32,
BasicData: GNSS_FIXDATA_BASIC,
AccuracyData: GNSS_FIXDATA_ACCURACY,
SatelliteData: GNSS_FIXDATA_SATELLITE,
};type
FILETIME {.bycopy.} = object
dwLowDateTime: uint32
dwHighDateTime: uint32
GNSS_FIXDATA_BASIC {.bycopy.} = object
Size: uint32
Version: uint32
Latitude: float64
Longitude: float64
Altitude: float64
Speed: float64
Heading: float64
GNSS_FIXDATA_ACCURACY {.bycopy.} = object
Size: uint32
Version: uint32
HorizontalAccuracy: uint32
HorizontalErrorMajorAxis: uint32
HorizontalErrorMinorAxis: uint32
HorizontalErrorAngle: uint32
HeadingAccuracy: uint32
AltitudeAccuracy: uint32
SpeedAccuracy: uint32
HorizontalConfidence: uint32
HeadingConfidence: uint32
AltitudeConfidence: uint32
SpeedConfidence: uint32
PositionDilutionOfPrecision: float32
HorizontalDilutionOfPrecision: float32
VerticalDilutionOfPrecision: float32
GNSS_SATELLITEINFO {.bycopy.} = object
SatelliteId: uint32
UsedInPositiong: int32
Elevation: float64
Azimuth: float64
SignalToNoiseRatio: float64
GNSS_FIXDATA_SATELLITE {.bycopy.} = object
Size: uint32
Version: uint32
SatelliteCount: uint32
SatelliteArray: array[64, GNSS_SATELLITEINFO]
GNSS_FIXDATA {.bycopy.} = object
Size: uint32
Version: uint32
FixSessionID: uint32
FixTimeStamp: FILETIME
IsFinalFix: int32
FixStatus: int32
FixLevelOfDetails: uint32
BasicData: GNSS_FIXDATA_BASIC
AccuracyData: GNSS_FIXDATA_ACCURACY
SatelliteData: GNSS_FIXDATA_SATELLITEstruct FILETIME
{
uint dwLowDateTime;
uint dwHighDateTime;
}
struct GNSS_FIXDATA_BASIC
{
uint Size;
uint Version;
double Latitude;
double Longitude;
double Altitude;
double Speed;
double Heading;
}
struct GNSS_FIXDATA_ACCURACY
{
uint Size;
uint Version;
uint HorizontalAccuracy;
uint HorizontalErrorMajorAxis;
uint HorizontalErrorMinorAxis;
uint HorizontalErrorAngle;
uint HeadingAccuracy;
uint AltitudeAccuracy;
uint SpeedAccuracy;
uint HorizontalConfidence;
uint HeadingConfidence;
uint AltitudeConfidence;
uint SpeedConfidence;
float PositionDilutionOfPrecision;
float HorizontalDilutionOfPrecision;
float VerticalDilutionOfPrecision;
}
struct GNSS_SATELLITEINFO
{
uint SatelliteId;
int UsedInPositiong;
double Elevation;
double Azimuth;
double SignalToNoiseRatio;
}
struct GNSS_FIXDATA_SATELLITE
{
uint Size;
uint Version;
uint SatelliteCount;
GNSS_SATELLITEINFO[64] SatelliteArray;
}
struct GNSS_FIXDATA
{
uint Size;
uint Version;
uint FixSessionID;
FILETIME FixTimeStamp;
int IsFinalFix;
int FixStatus;
uint FixLevelOfDetails;
GNSS_FIXDATA_BASIC BasicData;
GNSS_FIXDATA_ACCURACY AccuracyData;
GNSS_FIXDATA_SATELLITE SatelliteData;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; GNSS_FIXDATA サイズ: 2208 バイト(x64)
dim st, 552 ; 4byte整数×552(構造体サイズ 2208 / 4 切り上げ)
; Size : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; Version : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; FixSessionID : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; FixTimeStamp : FILETIME (+12, 8byte) varptr(st)+12 を基点に操作(8byte:入れ子/配列)
; IsFinalFix : BOOL (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; FixStatus : NTSTATUS (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; FixLevelOfDetails : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; BasicData : GNSS_FIXDATA_BASIC (+32, 48byte) varptr(st)+32 を基点に操作(48byte:入れ子/配列)
; AccuracyData : GNSS_FIXDATA_ACCURACY (+80, 64byte) varptr(st)+80 を基点に操作(64byte:入れ子/配列)
; SatelliteData : GNSS_FIXDATA_SATELLITE (+144, 2064byte) varptr(st)+144 を基点に操作(2064byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global FILETIME
#field int dwLowDateTime
#field int dwHighDateTime
#endstruct
#defstruct global GNSS_FIXDATA_BASIC
#field int Size
#field int Version
#field double Latitude
#field double Longitude
#field double Altitude
#field double Speed
#field double Heading
#endstruct
#defstruct global GNSS_FIXDATA_ACCURACY
#field int Size
#field int Version
#field int HorizontalAccuracy
#field int HorizontalErrorMajorAxis
#field int HorizontalErrorMinorAxis
#field int HorizontalErrorAngle
#field int HeadingAccuracy
#field int AltitudeAccuracy
#field int SpeedAccuracy
#field int HorizontalConfidence
#field int HeadingConfidence
#field int AltitudeConfidence
#field int SpeedConfidence
#field float PositionDilutionOfPrecision
#field float HorizontalDilutionOfPrecision
#field float VerticalDilutionOfPrecision
#endstruct
#defstruct global GNSS_SATELLITEINFO
#field int SatelliteId
#field bool UsedInPositiong
#field double Elevation
#field double Azimuth
#field double SignalToNoiseRatio
#endstruct
#defstruct global GNSS_FIXDATA_SATELLITE
#field int Size
#field int Version
#field int SatelliteCount
#field GNSS_SATELLITEINFO SatelliteArray 64
#endstruct
#defstruct global GNSS_FIXDATA
#field int Size
#field int Version
#field int FixSessionID
#field FILETIME FixTimeStamp
#field bool IsFinalFix
#field int FixStatus
#field int FixLevelOfDetails
#field GNSS_FIXDATA_BASIC BasicData
#field GNSS_FIXDATA_ACCURACY AccuracyData
#field GNSS_FIXDATA_SATELLITE SatelliteData
#endstruct
stdim st, GNSS_FIXDATA ; NSTRUCT 変数を確保
st->Size = 100
mes "Size=" + st->Size