在做飞行仿真时候,有一点是使用视景仿真。也就是通过屏幕,显示飞机的姿态,经纬度等信息。

一般的,做飞行仿真,如果自己使用Unity3D或者UnReal的虚拟引擎来做,比较费时间,需要对机场环境建模。
而针对普通的用户,更好的方式,则是使用目前比较流行的3D飞行游戏软件来开发。
像开源的Flight Gear,或者收费的Xplane等,都提供第三方的通信接口,通过UDP,可以接收游戏引擎中飞机的基本数据,也可以像游戏引擎发数据,控制飞机姿态和位置。
本期,则讲解,使用LabVIEW做测试时候,使用UDP和Xplane通信,以获得虚拟视景。

首先,本文使用的版本是Xplane11,其他版本操作类似。

最重要的是进入设置界面进行数据设置。

点击选项卡数据,数据输出。

这里可以勾选要输出的数据。
勾选有4列,第一个显示在座舱,就是飞行时候,数据会显示在飞行界面左上角。第4列是UDP输出,勾选后,软件会将勾选的数据通过UDP发送出去。

一般的勾选UDP就行,但是,第一列显示座舱勾选后,我们会直观看到实际数据是多少,这样UDP输出的数据,通过我们二次开发的软件解析,可以对比数据一致性。

记得右下角,勾选 进行网络数据输出。

下图,左上角,就是刚才勾选了座舱显示的数据。
我勾选了速度,姿态,经纬度等。所以都显示出来了。
实际UDP外发的时候,也是从上到下,数据依次发送的。
我们解析数据时候,可以和这个对照一下。
现在看下UDP 数据结构:

所有数据均以字节形式发送,UDP数据开头为“DATA,”
prolouge 的第五个字节是“内部使用”字节
接下来的 36 个字节是消息
消息的前 4 个字节表示数据元素的索引号,如 X-平面 中的“数据输出”屏幕所示
最后 32 个字节是数据,最多 8 个单精度浮点数
下面是从 X-Plane 发送的原始数据字符串:
68 65 84 65 60 18 0 0 0 171 103 81 191 187 243 46 190 103 246 45 67 156 246 26 67 47 231 26 67 0 192 121 196 0 192 121 196 85 254 151 193
让我们分解一下:
68,65,84,65,60 = D,A,T,A,‘’ :这些是 CHAR。我们不关心的第 5 个字节,所以当 将任何数据句子发送到 X-Plane,应在此处放置一个 0(零)。
18,0,0,0 = 18 :这是对应于X平面中特定数据集的索引号。在此示例字符串中, 我们正在查看数据集,“18:俯仰,滚动,标题”。在这 4 个字节中,我们唯一需要的字节是第一个字节。其他 3 个将始终为零。 第一个字节不需要任何计算,用作整数。
171,103,…,151,193:这 32 个字节构成了需要计算的 8 个单精度浮点数。
向X-Plane发送数据句子的格式与从X-Plane发送的格式完全相同
发送句子时,请确保序言的第 5 个字节为零 (0)
并非所有数据集都使用所有 8 个浮点数。它们要么只是零,要么是“0,192,121,196”,即 -999。
对于数据集中您不希望更改或希望将控制权“交还”给X-Plane的任何项目, 发送值 -999 或 0,192,121,196。

通过上述描述和设置,我们下面可以通过LabVIEW来接受UDP数据。
程序很简单,UDP连接,UDP读取,UDP关闭。

UDP连结,端口为默认的49001,然后收到的数据,前5个是DATA,丢掉。截取后面的数据。


后面数据,每4个字节为一个数据。虽然有一个数据是序号,但是也是4个字节。
所以,我们强制转换成单精度,得到我们要的数据。

通过对比实际座舱右上角显示的数据,我们通过索引,可以得到想要的数据。我们会发现有一个数据特别大,那是因为不应该用单精度转化,不过对我们来说不重要。通过LabVIEW编写的地面站显示得到如下的效果(动图)。
从软件界面可以清晰看到Xplane飞机的俯仰角、横滚角、经纬度、高度,飞机电子地图显示等。

如果需要使用LabVIEW控制Xplane飞行,则需要使用UDP发送。发送时候,格式和接受一样的。

后面,大家可以自由使用LabVIEW控制飞机啦。

LabVIEW与Xplane飞行界面数据仿真交互相关推荐

  1. MATLAB与X-Plane通信以及X-Plane飞行数据回放

    X-Plane原生支持的通信方式比较复杂,因此考虑借鉴第三方工具. NASA写了个插件直接与X-Plane通信获取数据,同时该插件还通过UDP与外部程序通信,通过这个插件做代理,可以实现X-Plane ...

  2. 安徽合肥芜湖数字孪生智慧工厂,工厂车间数字化三维仿真交互,3d可视化数据大屏展示系统

    安徽合肥芜湖数字孪生智慧工厂,工厂车间数字化三维仿真交互,3d可视化数据大屏展示系统.在数字化时代,传统的工业企业数字化转型迫在眉睫.在宝钢智能化升级项目中,引入了数字孪生这个概念,对工业生产全过程进 ...

  3. 成都数字孪生工厂3D模型,三维可视化建模,三维虚拟仿真交互模型

    成都数字孪生工厂3D模型,三维可视化建模,三维虚拟仿真交互模型.数字孪生工厂基于用户需求,巨蟹数字科技采用数字孪生技术对工厂建筑在内的全要素进行1:1数字化3D建模,再集成融合现有的各类多源异构系统, ...

  4. ui automator viewer 怎么获取界面名_ui交互设计怎么样

    ui交互设计怎么样,中天软件培训拥有实力雄厚的师资团队,全部是由国内行业知名专家,全职资深项目讲师.知名企业兼职项目导师组成. ui交互设计怎么样, 一般来说,交互设计师的工作内容就到此为止了.顾名思 ...

  5. HyperLynx(十八)DDR(一)DDR简介和DDR的数据仿真

    1.DDR简介 2.DDR仿真概述 3.DDR数据仿真前的数据验证 4.DDR数据仿真具体步骤 1.DDR简介 DDR(双倍速率同步动态随机存储器)是一个内存名称,意思即双倍速率同步动态随机存储器,是 ...

  6. 微信小程序中界面常见的交互反馈、用户即时反馈

    用户和小程序上进行交互的时候,某些操作可能比较耗时,我们应该予以及时的反馈以舒缓用户等待的不良情绪. 1 触摸反馈 通常页面会摆放一些button按钮或者view区域,用户触摸按钮之后会触发下一步的操 ...

  7. 计算机组装 仿真交互,《计算机硬件组装》仿真交互系统设计与实现.doc

    <计算机硬件组装>仿真交互系统设计与实现 <计算机硬件组装>仿真交互系统设计与实现 摘要:模拟仿真技术是近几年发展起来的一门综合学科,通过计算机技术模拟实验环境,成为辅助教学的 ...

  8. 在Unity中通过ScrollView实现背包物品展示后如何与指定背包物品的数据进行交互

    这篇文章主要是记录我在进行游戏项目开发中遇到的有关ScrollView的问题和我自己想到的解决方法. 我在以往通过安卓项目来开发游戏的时候,对于背包的实现,我最先会想到List和ListView这两个 ...

  9. ARM调试(2):在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互

    在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互 文章目录 在keil利用指令跟踪宏单元(ITM)重定向printf,并完成scanf实现数据双向交互 1. ...

最新文章

  1. iOS开发UI基础—手写控件,frame,center和bounds属性
  2. mysql免安装版配置方法
  3. python异常处理操作语句_异常处理语句(2)
  4. 华为P20云文档空间满了怎么清理_原来华为手机能这样清理垃圾,怪不得别人的手机再用两年不卡顿...
  5. DB2 INTERSECT、EXCEPT、UNION集合操作测试
  6. 【图像去噪】基于matlab GUI空域+频域滤波图像去噪【含Matlab源码 914期】
  7. java 正则表达式 去掉 文章头部和尾部的空格(全角,半角)、制表符、换页符
  8. 一文搞懂由积分判断函数零点个数问题(积分证明题总结笔记2/3)
  9. 键盘 连击 测试软件测,87自学单片机第六十篇:按键双击和多击检测
  10. 补充:Log4j2日志文件,RollingFile的文件滚动更新机制;
  11. 阿里、百度、华为都用什么编程语言?做程序员前,这些别说不知道!
  12. 倒计时代码(用户输入秒数直接转换为时分秒)
  13. C语言中百分之5d是什么意思
  14. 小白的python与houdini之旅(houdini_转载houdini节点解析)
  15. 计算机专业论文docx,计算机专业毕业大学生论文.docx
  16. Python中的True和False详解
  17. 7.计算机病毒损坏某些硬件,区别计算机病毒与故障
  18. 【金融】银行间质押式回购
  19. web大作业介绍自己的家乡_四年级暑假作业
  20. 3.2存储器层次结构 -- 《深入理解计算机系统》☆☆☆☆☆

热门文章

  1. 【SWAT水文模型】ArcSWAT安装
  2. 什么是黑帽SEO?20种黑帽手法详解。
  3. 超平面的理解与公式推导
  4. MySql数据库事务隔离级别底层实现原理总结
  5. PHP数据类型与运算符
  6. MySQL 组合索引及覆盖索引
  7. 虚拟机vmware网络电缆被拔出问题解决
  8. Python 自动操作浏览器
  9. inode客户端未收到服务器响应,iNode认证通过后提示“未收到服务器相应,即将强制下线的解决办法”...
  10. Python画动漫人物(1)