English
登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
原创商城
官方淘宝
二手市场
学院
云课堂
考试
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
联机
航空人生(连飞)
飞行人生(虚航)
空管人生(虚管)
空战人生(对战)
工具
联飞地图
航路查询
航图查询
气象报文
资源
插件库
素材库
云网盘
企业
飞行者联盟
»
论坛
›
【模拟飞行】
›
FSX/FS9
›
问答专区
›
【LabVIEW的UDP通信实例】LabVIEW与Xplane飞行界面数据 ...
返回列表
发新帖
查看:
1397
|
回复:
0
【LabVIEW的UDP通信实例】LabVIEW与Xplane飞行界面数据仿真交互
[复制链接]
gaoxiang
gaoxiang
当前离线
UID
4833
注册时间
2014-4-7
在线时间
小时
最后登录
1970-1-1
精华
阅读权限
30
听众
收听
雷达卡
发表于 2023-7-4 16:19:21
|
显示全部楼层
|
阅读模式
【本期知识点】LabVIEW的UDP通信【UDP交互软件】
xplane
11飞行模拟软件【正文】很多时候,我们使用LabVIEW可以和第三方的软件进行交互,可以得到更好的效果。今天我们分享的,是和外界软件怎么UDP通信。有些同学是做飞行控制的,在做飞行仿真时候,肯定会用到视景仿真。也就是通过屏幕,显示飞机的姿态,经纬度等信息。一般地,做飞行仿真,如果自己使用Unity3D或者UnReal的虚拟引擎来做,比较费时间,需要对机场环境建模。
而针对普通的用户,更好的方式,则是使用目前比较流行的3D飞行游戏软件来开发。
像开源的Flight Gear,或者收费的Xplane等,都提供第三方的通信接口,通过UDP,可以接收游戏引擎中飞机的基本数据,也可以向游戏引擎发数据,控制飞机姿态和位置。今天以xplane作为一个实例,讲述LabVIEW通过UDP显示Xplane的数据,并显示在地平仪和电子地图上。Xplane游戏界面如下,做过飞行仿真的同学肯定不陌生:
在地图上显示的效果如下。由于地图放大很大,所以呈马赛克状,下图右侧为xplane的飞机姿态,左侧为LabVIEW显示的姿态和地图位置(需要看实际效果,可以跳转本文末尾,看视频更佳)
首先,本文使用的版本是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个字节。
所以,我们强制转换成单精度,得到我们要的数据。通过对比实际座舱右上角显示的数据,我们通过索引,可以得到想要的数据。我们会发现有一个数据特别大,那是因为不应该用单精度转化,是参数的ID号,可以通过条件结构来筛选需要的信息,不过参数固定的话对我们来说可以不用管。
通过LabVIEW编写的地面站软件显示得到如下的效果(动图)。
从软件界面可以清晰看到Xplane飞机的俯仰角、横滚角、经纬度、高度,飞机电子地图显示等。
如果需要使用LabVIEW控制Xplane飞行,则需要使用UDP发送。发送时候,格式需要查看xplane的说明。后面,大家可以自由使用LabVIEW获取飞机信息啦。
末尾实际效果,可以欣赏下面的视频(之前已经在个人视频号和b站发布过):
【声明】:文本纯做个人经验上简单介绍,很多功能还在研究中,具体知识点在于LabVIEW的UDP实际应用,请勿索求源码。
xplane
相关帖子
•
刚在steam入手Xplane 12有哪些要准备的
•
Xplane 12要安装导航数据吗?
•
有没有前辈给几个论坛链接
•
xplane12地景怎么样
•
苹果ios游戏分享【专业模拟飞行 X-Plane Flight Simulator XPlane】解锁订阅
•
xplane11是什么飞机
•
xplane怎么解锁其他飞机
•
XPlane 12 没摔就是赢麻了
•
x plane与模拟飞行哪个比较好玩?各有什么优点
•
X Plane 安卓手机 怎么使用
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表