Я вот тут накопал несколько замечаний к DeviceLink (в основном с форумов simhq и ubi), может кому пригодится или у кого есть замечания и дополнения.
1. time of day
20 get()
return: float[hours] - current time of the day within the game.
The game clock, which appears to be in hours and digital minutes seems to be running fast by a factor of exactly 1.6666. So for .dt numbers, you might want to multiply them by 0.6 to get correct time units to calculate actual distances with.
То есть текущее время игры, которое можно получить через чтение двадцатого ключа, в игре идет в 1.6666... быстрее чем обычно, поэтому при расчетах пути нужно время между остчетами умножать на 0.6 чтобы получать действительные значения дистанции, пройденной самолетом между отсчетами.
2. angular_speed
38 get()
return: float [deg./s] -inf +inf
The angular velocity is in radians/sec not degrees/sec as stated.
Угловая скорость выдается в радианах/сек, а не градус/сек как написано в DeviceLink.txt
3. pitch
48 get()
return: float [deg.] -90.00 +90.00
True trajectory or angle of attack, may not equal the pitch angle except at the higher speeds. Looks like it is better use a calculation based on altitude.dt instead of pitch.dt to calculate the piecewise plot.
Истинная траектория или угол атаки может отличаться от значения pitch на малых скоростях. Поэтому лучше для расчетов пройденного пути использовать значение скорости и изменения альтитуды между отсчетами. То есть применяем Пифагоровы штаны, квадрат гипотенузы равен сумме квадратов катетов.
4. Devicelink query codes 80-99 do not return the values of the actual flight surfaces. They return the value of the joystick axis controlling the flight surface.
Ключи 80-99 при чтении возвращают не текущее положение рабочих поверхностей (угол отклонения закрылок, триммеров, и так далее), а отклонение ручки управления, так что получить действительное положение рабочих поверхностей не представляется возможным.
5. DeviceLink не будет отвечать на запрос о параметрах нескольких двигателей. Для каждого двигателя нужно посылать отдельные запросы. То есть если постать строку "R/64\1" то все работает, а если
"R/64\0/64\1" - то ответа не придет совсем, эту строку нужно разбивать на два сообщения "R/64\0" и "R/64\1".
Замечания эти (кроме последнего) сам не проверял, так что может и не правда это все.