<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      利用XPlaneConnect從X-Plane內讀寫數據

      X-Plane

      X-Plane面向個人的比較流行的飛行模擬軟件之一,用戶可以利用其自帶的工具或者第三方插件來做一些飛行仿真方面的二次開發,比如飛機位置姿態等數據輸出、外部程序控制飛機舵面角度、飛機機模(系統仿真、氣動仿真)開發、機場地景開發等等。
      X-Plane官網:https://www.x-plane.com/
      X-Plane SDK文檔:https://developer.x-plane.com/sdk/

      XPlaneConnect

      XPlaneConnect是NASA開源的一個基于X-Plane SDK開發的開源研究工具,其中包含了兩個部分,一個是X-Plane的插件XPlaneConnect.xpl,這個插件需要手動放在X-Plane的安裝目錄內,X-Plane啟動時會調用該插件;一個是與XPlaneConnect.xpl進行UDP通信的庫,包括C、JAVA、MATLAB、Python等編程語言,并且提供了許多例程。用戶可以基于XPlaneConnect快速進行二次開發,包括數據讀寫、飛行暫停/恢復、設置飛機位置和姿態等等。
      XPlaneConnect:https://github.com/nasa/XPlaneConnect

      開發步驟(C/C++)

      1. 在https://github.com/nasa/XPlaneConnect 下載XPlaneConnect插件和源代碼。
      2. 將XPlaneConnect.zip插件解壓并復制到X-Plane安裝目錄下的/Resources/plugins/目錄,然后打開X-Plane。
      3. 創建一個C/C++工程,將XPlaneConnect-1.3-rc6.zip解壓,將XPlaneConnect-1.3-rc6/C/src內的xplaneConnect.c和xplaneConnect.h這兩個文件復制到C/C++工程目錄。
      4. 利用xplaneConnect的openUDP函數新建一個udp通信。
      5. 利用xplaneConnect內的getPOSI、sendPOSI、getCTRL、sendPOSI、getDREF和sendDREF等函數與X-Plane進行數據讀取或寫入;利用sendCOMM可以向X-Plane發送指令(類似于快捷鍵)。

      xpconnect下載1

      圖1.XPlaneConnect github倉庫

      xpconnect下載2

      圖2.XPlaneConnect 插件和源碼下載

      xpconnect下載3

      圖3.下載后的XPlaneConnect 插件和源碼

      xpconnect下載4

      圖4.XPlaneConnect 插件解壓復制到xplane根目錄下的/Resources/plugins/目錄

      xpconnect下載5

      圖5.XPlaneConnect.c和xplaneConnect.h這兩個文件復制到C/C++工程目錄

      代碼示例

      #include <iostream>
      #include "xplaneConnect.h"
      
      int main(int argc, char* argv[])
      {
          //利用xplaneConnect自帶的openUDP函數新建一個udp通信
          XPCSocket client = openUDP("127.0.0.1");//"127.0.0.1"為XPlane所在電腦的ip
          const int aircraftNum = 0;//X-Plane當前用戶飛機為0,其他編號為AI飛機
          while (1)
          {
              //利用getPOSI獲取飛機位置、姿態和起落架狀態,由于經緯度數據需要較高的數據精度,因此需要用double類型
              //利用sendPOSI可以實現飛機位置、姿態和起落架狀態的控制
              //[Lat, Lon, Alt, Pitch, Roll, Yaw, Gear]
              double posi[7];
              int result = getPOSI(client, posi, aircraftNum);
              if (result < 0) // Error in getPOSI
              {
                  break;
              }
      
              //利用getCTRL獲取飛機的升降舵、副翼、方向舵、油門桿、起落架、襟翼以及擾流板數據
              //利用sendCTRL可以實現飛機升降舵、副翼、方向舵、油門桿、起落架、襟翼以及擾流板的控制
              //[Elevator, Aileron, Rudder, Throttle, Gear, Flaps, Speed Brakes]
              float ctrl[7];
              result = getCTRL(client, ctrl, aircraftNum);
              if (result < 0) // Error in getCTRL
              {
                  break;
              }
      
              //設置X-Plane飛行仿真暫停/恢復
              result = sendCOMM(client, "sim/operation/pause_toggle");
              if (result < 0) // Error in sendCOMM
              {
                  break;
              }
      
              //利用getDREF獲取X-Plane飛行仿真是否暫停的狀態
              float simPaused[1] = { 0.0f }; //用于存放"sim/time/paused"的狀態
              int drefArraySizze = 1;      //"sim/time/paused"接口的數組大小,該接口不是數組則為1
              result = getDREF(client, "sim/time/paused", simPaused, &drefArraySizze);
              if (result < 0) // Error in getDREF
              {
                  break;
              }
      
              //設置X-Plane內的時間(祖魯時間,協調世界時)
              //sim/time/zulu_time_sec
              float zuluTime = 9 * 60 * 60;//設置為早上9點(如果要設置本地時間,需要添加時差)
              result = sendDREF(client, "sim/time/zulu_time_sec", &zuluTime, 1);
              if (result < 0) // Error in sendDREF
              {
                  break;
              }
      
              printf("Loc: (%4f, %4f, %4f) Aileron:%2f Elevator:%2f Rudder:%2f\n",
                  posi[0], posi[1], posi[2], ctrl[1], ctrl[0], ctrl[2]);
      
              Sleep(100);
          }
      }
      

      數組類型數據讀寫:

              //設置X-Plane各風層風向
              float windDir[13] = {0.0f};
              result = sendDREF(client, "sim/weather/region/wind_speed_msc", windDir, 13);
              if (result < 0) // Error in sendDREF
              {
                  break;
              }
      

      xpconnect下載8

      圖6.數組類型數據接口示例

      接口列表

      X-Plane 指令列表(Command): https://siminnovations.com/xplane/command/index.php
      X-Plane 數據讀寫接口(Datarefs): https://developer.x-plane.com/datarefs/#search-form

      xpconnect下載1

      圖7.X-Plane 指令列表

      xpconnect下載7

      圖8.X-Plane 數據讀寫接口
      posted @ 2025-11-02 22:38  九德拉  閱讀(112)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美性受xxxx白人性爽| 曲阳县| 久久亚洲精品国产精品| 亚洲欧美人成网站在线观看看| 动漫AV纯肉无码AV电影网| 久久被窝亚洲精品爽爽爽| 东京热一区二区三区在线| 国产成人综合色视频精品| 成人精品区| 看全色黄大色黄大片 视频| 不卡在线一区二区三区视频| 免费无码黄网站在线观看| 亚洲欧美综合中文| 久久国产成人午夜av影院| 无码国内精品久久人妻蜜桃| 亚洲一区二区av高清| 国产乱人伦av在线无码| 国产美女永久免费无遮挡| 人妻中文字幕不卡精品| 极品白嫩少妇无套内谢| 亚洲AV永久中文无码精品综合| 老司机精品成人无码av| 国产AV巨作丝袜秘书| 亚洲一区二区三区18禁| 性欧美三级在线观看| 亚洲一区二区av在线| 韩国免费a级毛片久久| 女高中生自慰污污网站| 亚洲欧洲日产国码久在线| 精品久久人人做爽综合| 2019国产精品青青草原| 国产99久久精品一区二区| 午夜福利啪啪片| 日本精品极品视频在线| 亚洲区1区3区4区中文字幕码| 玩弄放荡人妻少妇系列| 亚洲国产精品综合一区二区| 成全世界免费高清观看| 亚欧洲乱码视频一二三区| 国产首页一区二区不卡| 欧洲熟妇色xxxx欧美老妇免费|