Index de l'article |
---|
Driver Hitec HTS-Navi |
Captures d'écrans |
API internes |
Toutes les pages |
Sur les radios de dernière génération, les fonctions de télémétries sont devenues monnaie courante. Des marques telles que Hitec, Spektrum, FrSky, et même Futaba avec la 18MZ s'y sont mis.
Je vous propose donc un driver Windows permettant de remonter l'intégralité de ces informations via la plateforme Sensors de Windows 7 ou les API IOCTL de windows.
A ma connaissance, seul Hitec propose une interface USB avec le HTS-Navi.
Tout comme Hitec, Spektrum fourni aussi un équivalent pour iPhone, mais la connectique employée restreint sont utilisation.
Ce driver est principalement destiné aux développeurs en herbe. Il peut être utilisé dans le cadre du projet ADS, à condition toutefois d'y adjoindre les capteurs nécessaire à la mise en oeuvre d'une centrale inertielle.
La procédure d'installation est disponible ici.
Voici la définition des API internes au driver:
unit HTSNavi.HTSNavi;
interface
Uses
Windows;
Const
CLASS_HTSNaviDriver: TGUID = '{C694385E-F46D-43A2-9377-6E65ECE838D7}';
HTSNaviDeviceIdentifier = 'USB\VID_1E1A&PID_0029';
HTSNaviDeviceIdentifier_Rev1 = HTSNaviDeviceIdentifier + '&REV_0001';
MAX_GPS_SENSOR = 1;
MAX_TEMP_SENSOR = 4;
MAX_RPM_SENSOR = 2;
MAX_CURRENT_SENSOR = 1;
MAX_VOLTAGE_SENSOR = 1;
MAX_FUEL_SENSOR = 1;
Var
//IOCTL for Driver (subject to changes)
IOCTL_HTSNAVI_LINK: DWORD;
IOCTL_HTSNAVI_UPDATE: DWORD;
IOCTL_HTSNAVI_GET_DATA: DWORD;
IOCTL_HTSNAVI_GET_UPDATERATE: DWORD;
IOCTL_HTSNAVI_SET_UPDATERATE: DWORD;
IOCTL_HTSNAVI_SETUP_DEVICE: DWORD;
IOCTL_HTSNAVI_GET_CONFIG_DESCRIPTOR: DWORD;
Type
THTSNaviGPSData = Record
Time: TSystemTime; //UTC
Level: UCHAR; //%
Longitude, Latitude: Double; //°
Altitude: Single; //m
Speed: Single; //km/h
Heading: Single; //°
End;
THTSNaviSensorData = Record
Connected: BOOL;
RxVoltage: Single; //V
GPS: Array[0..MAX_GPS_SENSOR - 1] of THTSNaviGPSData;
RPM: Array[0..MAX_RPM_SENSOR - 1] of WORD; // 1/10
Temp: Array[0..MAX_TEMP_SENSOR - 1] of SHORT; //°C
FuelLevel: Array[0..MAX_FUEL_SENSOR - 1] of UCHAR; //%
Current: Array[0..MAX_CURRENT_SENSOR - 1] of Single; //A
Voltage: Array[0..MAX_VOLTAGE_SENSOR - 1] of Single; //V
End;
implementation
Uses
JwaWinIoctl;
Const
IOCTL_HTSNAVI = $8000;
IOCTL_HTSNAVI_INDEX = $800;
Initialization
IOCTL_HTSNAVI_LINK := CTL_CODE(IOCTL_HTSNAVI, IOCTL_HTSNAVI_INDEX + 1, METHOD_BUFFERED, FILE_WRITE_ACCESS);
IOCTL_HTSNAVI_UPDATE := CTL_CODE(IOCTL_HTSNAVI, IOCTL_HTSNAVI_INDEX + 2, METHOD_BUFFERED, FILE_READ_ACCESS);
IOCTL_HTSNAVI_GET_DATA := CTL_CODE(IOCTL_HTSNAVI, IOCTL_HTSNAVI_INDEX + 3, METHOD_BUFFERED, FILE_READ_ACCESS);
IOCTL_HTSNAVI_GET_UPDATERATE := CTL_CODE(IOCTL_HTSNAVI, IOCTL_HTSNAVI_INDEX + 4, METHOD_BUFFERED, FILE_READ_ACCESS);
IOCTL_HTSNAVI_SET_UPDATERATE := CTL_CODE(IOCTL_HTSNAVI, IOCTL_HTSNAVI_INDEX + 5, METHOD_BUFFERED, FILE_WRITE_ACCESS);
IOCTL_HTSNAVI_SETUP_DEVICE := CTL_CODE(IOCTL_HTSNAVI, IOCTL_HTSNAVI_INDEX + 6, METHOD_BUFFERED, FILE_READ_ACCESS Or FILE_WRITE_ACCESS);
IOCTL_HTSNAVI_GET_CONFIG_DESCRIPTOR := CTL_CODE(IOCTL_HTSNAVI, IOCTL_HTSNAVI_INDEX + 7, METHOD_BUFFERED, FILE_READ_ACCESS);
end.
Le code source est disponible sur la page des téléchargement.