这个项目是最近接的一个私活,刚刚完工,在这里记录下,也算是对项目的复盘吧。

 

1.系统总体方案

  整个项目主要是做飞行器数据采集汇总和显示的,分了很多模块,由多个人一起配合完成的。整个项目系统总体方案,包括了三个部分:底层硬件组网,中间层服务器端,以及上层客户端应用程序。

  我主要是做底层硬件组网以及ADS-B数据接收和解析上报,也就是上图中的底层硬件组网部分。本文主要讲讲我做的这部分,当然了,部分涉及客户信息的内容会一笔带过。

 

2.硬件组网的核心(ADS-B)

  在正式开始之前,有必要先简单讲下ADS-B,这有助于理解硬件组网。

  ADS-B (Automatic Dependent Surveillance-Broadcast),中文名称为广播式自动相关监视,是一种基于全球卫星定位系统和利用空地、空空数据链实现交通监控和信息传递的空管监视技术。

  简单来说就是,安装有ADS-B设备的飞机,会以一定的时间间隔对外发送自身位置、身份、高度、速度等数据。而ADS-B地面站,则能够接收到发射的数据并转发给空中交通管制员以准确跟踪该飞机。

  因此,ADS-B是实现硬件组网的核心。

 

3.硬件组网设备(RTL-SDR)

  地面站如何接收ADS-B设备发出的数据呢?

  这就需要用到ADS-B接收器了,某宝上可以自行搜索下,有很多,都是非常成熟的硬件模块了,这个项目上用的是如下这款。

  这款接收器使用的芯片方案为:RTL2832U+R820T,可以接收的频率范围为:24-1766 MHz,不过接收能力一般。如果想要接收能力强,可以选择芯片方案为RTL2832U+R820T2的接收器。

  在首次使用该设备之前,需要使用zadig软件进行驱动安装。安装过程比较简单,就不细说了。

 

4.数据的接收和转发

  至此,硬件环境已经搭建好了,下一步就是从设备中获取数据了。RTL-SDR提供了相应的动态库文件,里面封装了很多的接口函数,比如下面两个接口,就是用来打开和关闭设备的。

  RTL-SDR库文件,可以从其官网上下载得到。

  不过,在实际的开发过程中,我们可以借用开源的解码软件,去进行二次开发就可以了,并不需要从最原始的库接口开始写起。

  一个比较出名的开源解码软件是dump1090,能够从RTL2832U中读取原始的无线电信号,然后解码出ADS-B数据。dump1090内建了TCP服务器,并将解析出来的数据以BaseStation的格式输出到30003端口。

  来看看30003端口上输出的数据是什么样的吧。

  从这些数据可以看出格式好像是固定的,每条数据有多个字段,各个字段之间以逗号分隔。是的,这就是BaseStation格式的数据了(也被称为SBS1数据)。

  BaseStation的数据第一位是消息类型,总共有六种消息类型,分别是MSG, SEL, ID, AIR, STA, CLK。其中,我们最常见到的消息类型是MSG,MSG又分了八种子消息类型,子消息类型在BaseStation数据的第二位。完整的BaseStation数据格式如下。

  知道了每个字段的含义后,剩下的工作就简单了,对BaseStation数据进行解析后,按与后台服务器约定好的通信协议,打包数据发送给服务器就可以了。这就是ADS-B数据接收和解析上报模块的全部功能了。

  如果你在做这方面的东西遇到什么问题,欢迎和我联系,微信公众号“诗远科室工作室“,我的邮箱:menlsh@163.com

 

posted @ 2022-05-22 21:53 依旧淡然 阅读(971) 评论(0) 推荐(0) 编辑
摘要: 1.前言 话说最近一段时间受疫情的影响,股市各种妖魔横行。本人作为一个入股市不满三年的小韭菜,就有幸见证了好几次历史,也是满心惊喜,就权当是接受资本市场的再教育了吧。 小韭菜的炒股方法其实很简单,这两年多来一直死守着一只股票,不满仓,也不空仓,逢低就买点,逢高就卖点。靠着这种守株待兔的笨方法,没有赚 阅读全文
posted @ 2020-03-21 21:27 依旧淡然 阅读(2330) 评论(0) 推荐(2) 编辑
摘要: 最近因为项目的需要,要对zip压缩文件进行批量解压。在网上查阅了相关的资料后,最终使用zlib开源库实现了该功能。本文将对zlib开源库进行简单介绍,并给出一个使用zlib开源库对zip压缩文件进行解压的示例程序。1.zlib开源库 zlib是应用最广泛的压缩与解压缩zip文件的免费开源库,提... 阅读全文
posted @ 2015-05-05 22:48 依旧淡然 阅读(15071) 评论(1) 推荐(2) 编辑
摘要: 本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp、jpg、png。1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列VisualC++API。为了使用GDI+,需要在工程中包含“GdiPlus.h”头文件,并加载“gdiplus.lib”库文件。 ... 阅读全文
posted @ 2015-04-21 23:13 依旧淡然 阅读(5721) 评论(0) 推荐(1) 编辑
摘要: 本文主要介绍如何截取电脑桌面并将其保存为bmp图片。1.Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式。 Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp图像文件的类型、文件大小等信息。 (2)位图信息数据结构,包含Bmp图像的宽、高、压缩类型等... 阅读全文
posted @ 2015-04-20 22:18 依旧淡然 阅读(1633) 评论(0) 推荐(1) 编辑
摘要: 在工控测试系统中,经常需要使用到各类程控仪器,这些程控仪器通常具有GPIB、LAN、USB等硬件接口,计算机通过这些接口能够与其通信,从而实现自动测量、数据采集、数据分析和数据处理等操作。本文主要介绍如何与程控仪器通过GPIB接口进行通信。1.GPIB简介 GPIB是通用总线(GeneralP... 阅读全文
posted @ 2015-01-20 22:00 依旧淡然 阅读(16144) 评论(10) 推荐(2) 编辑
摘要: 本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件。1.语音引擎及语音库的安装 TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语音输出。 微软TTS语音引擎提供了WindowsSpeechSDK开发包供编程者使用。Wind... 阅读全文
posted @ 2015-01-13 20:41 依旧淡然 阅读(17632) 评论(3) 推荐(5) 编辑
摘要: 在上一篇博文中我主要介绍了如何获取以及设置系统的默认打印机,本文将介绍如何对打印机状态进行实时监控,记录下所打印的文档、打印的份数以及打印时间等打印信息。1.打印机虚脱机技术 在正式介绍如何对打印机状态进行实时监控之前,我们有必要先了解一下打印机虚脱机技术。 独占设备是指在一个程序(作业、用... 阅读全文
posted @ 2015-01-08 22:15 依旧淡然 阅读(12919) 评论(9) 推荐(3) 编辑
摘要: 本文主要介绍如何获取以及设置系统的默认打印机。1.获取系统中的所有打印机 获取系统中的所有打印机可以使用EnumPrinters()函数,该函数可以枚举全部的本地、网络打印机信息。其函数原型为:1 BOOL WINAPI EnumPrinters(2 DWORD Flags,3 ... 阅读全文
posted @ 2014-12-27 20:25 依旧淡然 阅读(7046) 评论(0) 推荐(2) 编辑
摘要: 本文主要介绍如何使用混音器MixerAPI函数实现系统音量调节,以及设置静音。1.混音器的作用及结构1.1混音器的作用 声卡(音频卡)是计算机进行声音处理的适配器,具有三个基本功能: (1)音乐合成发音功能 (2)混音器(Mixer)功能和数字声音效果处理器(DSP)功能 (3)模拟声音... 阅读全文
posted @ 2014-12-16 22:24 依旧淡然 阅读(7460) 评论(0) 推荐(3) 编辑
点击右上角即可分享
微信分享提示