DCS-WORLD 数据获取
任务:
获取DCS-World的姿态数据,发送到6自由度平台。
过程:
1.获取dcs-bios
https://github.com/DCSFlightpanels/dcs-bios
2.复制DCS-BIOS文件夹和Export.lua放到游戏指定位置:
用户/保存的游戏/DCS/Scripts/
3.根据数据输出协议获取数据。
以下部分翻译自 https://github.com/DCSFlightpanels/dcs-bios/blob/master/Scripts/DCS-BIOS/doc/developerguide.adoc
1.数据输出
驾驶舱当前状态使用二进制协议从 DCS 导出(参见下方 DCS-BIOS 导出协议)。此数据通过 UDP 发送到多播地址 239.255.50.10,环回接口 (127.0.0.1) 上的端口 5010。
如果不能或不想处理多播 UDP,您也可以通过编辑 BIOSConfig.lua 使 DCS-BIOS 将导出数据流的副本发送到单播地址。
还可以使用 socat 程序将串行端口连接到 DCS-BIOS 导入和导出流。
另一种方法是打开到端口 7778 的 TCP 连接。可以使用此连接向 DCS-BIOS 发送命令并接收导出数据。
2.DCS-BIOS 导出协议
每个驾驶舱状态都被编码为整数或字符串,并在 16 位地址空间内分配一个地址。
(1)整数值
整数值的位置由一个 16 位字地址定义,该地址指定数据所在的 16 位字的开始,一个 16 位掩码指定该字中的哪些位属于该值,以及一个移位值(也可以从掩码中推导出来)。
给定起始地址、掩码和移位值,以下伪 C 代码解码一个值:
char[] state;
unsigned int value = (((uint16_t*)state)[start_address/2] & mask) >> shift
对状态数据的更改被编码为对该地址空间的写访问,并以下列格式写入导出数据流:
<起始地址(16位)> <数据长度(16位)>数据
起始地址和数据长度总是偶数(在内部,DCS-BIOS 将数据视为 16 位整数列表)。这确保没有写访问部分更新整数值(整数可能占用不超过 16 位)。
所有整数值都以 litte-endian 字节顺序写入。
以下字节序列是从地址 0x1000 开始的四个字节的写访问示例:
0x00 0x10 0x04 0x00 0x41 0x2d 0x31 0x30
(2)字符串值
字符串的位置由它的 16 位起始地址和以字节为单位的长度定义(所有字符串值都有一个固定的最大长度,并且从 16 位对齐的地址开始)。
可以部分更新最大长度大于两个字符的字符串值。为避免不一致的中间状态,接收 DCS-BIOS 导出数据的应用程序应在下一个帧同步序列中应用对字符串值的更改(参见下一节)。
(3)同步顺序
DCS-BIOS 尝试每秒发送 30 次更新。
DCS-BIOS 将在每次更新开始时发送四个字节 0x55 0x55 0x55 0x55。如果字节序列 0x55 0x55 0x55 0x55 出现在单个写入访问中,DCS-BIOS 将通过将其分成两个单独的写入来避免这种情况。
3. 添加新的飞机模块
DCS-BIOS 中的导出模块。DCS-BIOS 包含几个导出模块,每个导出模块分配给一架或多架飞机,可以同时激活多个导出模块。
MetadataStart 和 MetadataEnd 模块始终处于活动状态,即使没有活动的飞机(例如,多人游戏中的旁观者模式)。
当 AircraftList.lua 中的任何飞机处于活动状态时,CommonData 模块始终处于活动状态。它导出高度、位置和航向等通用信息。
每个导出模块都在 lib 子目录中自己的文件中定义。
每个导出模块都由 BIOS.lua 中的 dofile(...) 行加载。
每个导出模块都需要 control-reference.html 中的 <script> 标记以显示在控件参考文档中。
DCS-WORLD 数据获取的更多相关文章
- 干货 | 快速实现数据导入及简单DCS的实现
干货 | 快速实现数据导入及简单DCS的实现 原创: 赵琦 京东云开发者社区 4月18日 对于多数用户而言,在利用云计算的大数据服务时首先要面临的一个问题就是如何将已有存量数据快捷的导入到大数据仓库 ...
- 数据获取以及处理Beta版本展示
产品描述 这个产品的目的是为了学霸网站提供后台数据获取以及处理操作.在alpha阶段基本调通的基础至上,我们希望在bate版本中加入对于问答对的处理,图片的获取等功能. 预期目标 在alpha阶段,我 ...
- 数据获取以及处理系统 --- 功能规格说明书V2.0
产品规格说明书: 版本号: V2.0 版本说明: Version 1.0 简单得需求分析以及构思,初稿形成 Version 2.0 细化beta阶段设计,增加典型用户尝尽以及功能罗列 1. 引言 1. ...
- Java学习-031-JSON 之五 -- 特定数据获取(JSONObject满足特定键值)
前面几篇博文分别讲述了 JSON 的 概要知识.简单数据获取.封装cssSelector数据获取方法.JSONObject 是否包含 key_value,请自行阅读相关博文. 在日常的接口测试脚本编写 ...
- C++使用POST方法向网页提交数据-----C++发送HTTP数据获取Google天气预报
例1:C++使用POST方法向网页提交数据 转自:http://www.it165.net/pro/html/201208/3534.html 在C++中可以使用POST方法向网页中提交数据,这 ...
- Kinect for Windows V2和V1对照开发___深度数据获取并用OpenCV2.4.10显示
V1深度分辨率:320x240 V2深度分辨率:512x424 1. 打开深度图像帧的方式 对于V1: hr = m_PNuiSensor->NuiImageStreamOpen( NUI_I ...
- 在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法
在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法 ==========方法1: --------1. 选相应 ...
- Kinect for Windows V2和V1对照开发___彩色数据获取并用OpenCV2.4.10显示
V1彩色分辨率:640x480 V2彩色分辨率:1920x1080 1,打开彩色图像帧的方式 对于V1: 使用NuiImageStreamOpen方法打开 hr = m_PNuiSensor-> ...
- PHP. 01. C/S架构、B/S架构、服务器类型、服务器软件、HTTP协议/服务器、数据库、服务器web开发、PHP简介/常见语法、PHPheader()、 PHP_POST/GET数据获取和错误处理
C/S架构 Client/Server 指客户端,服务器 架构的意思 优点:性能性高:可将一部分的计算工作放在客户端上,服务器只需处理出局即可 洁面炫酷,可使用更多系统提供的效果 缺点:更新软件需 ...
- servlet文件上传2——复合表单提交(数据获取和文件上传)
上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(common ...
随机推荐
- argocd
argocd Argo CD - Declarative GitOps CD for Kubernetes (argo-cd.readthedocs.io) What Is Argo CD Argo ...
- 4口高速USB 2.0 HUB控制器 DPU1.1S,兼容替代FE1.1S
DPU1.1S是一款高性能.低功耗 4 口高速 USB2.0HUB 控制器,上行端口兼容高速 480MHz和全速 12MHz 两种模式,4个下行端口兼容高速480MHz.全速12MHz.低速 1.5M ...
- Net Core 3.1 ONVIF 操控海康摄像头
先给出实现的代码 https://github.com/lu1770/onvif-client.git 也可以通过安装包来使用功能 dotnet add package Onvif 基本用法 Agen ...
- C#消息泵探索(二)
引言: 上篇文章里简单的解释了C#的消息泵原理,这里我们以winform为例详细地了解一下实现代码. 底层实现 [DllImport(ExternDll.User32, ExactSpelling ...
- uniapp安卓本地文件读取(html5+)
plus.io.resolveLocalFileSystemURL( "_www/static/caise.json",//static下路径 ...
- 从零搭建hadoop集群之节点间免密登录
我这里有三台虚拟机 分别是 hadoop01 hadoop02 hadoop03 1.所有节点切入到hadoop用户 2.分别再三个节点上输入 ssh-keygen 命令(输入命令后敲回车键三下) ...
- Zookeeper ZAB协议-Leader&Followe 对象创建和启动源码解析
这篇博客主要是解析了Leader,Follower 对象的创建,相对来说比较简单,主要是了解一下在实例化的时候创建了哪些对象,这些对象会在数据传输的过程中发挥比较打的作用,如果有了解过的,可以直接跳过 ...
- abap sql中进行除法操作
在abap 得sql中进行除法操作要用division,不能用 " / "这个符号 SELECT vbeln, 100 * CAST( 10 + DIVISION( ZMENG, ...
- Linux profile、bashrc、bash_profile
一.profile 文件 1.profile 文件的作用 profile(/etc/profile),用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效.当用户登录(login)时, ...
- python flatten()函数的作用和用法
flatten()函数可以执行展平操作,返回一个一维数组. 函数的作用对象是数组array.矩阵mat,不能直接用于列表list. x.flatten()是把numpy对象x降低到一维,默认是按照 行 ...