GPS周数翻转Week Rollover

今天听说GPS的周数翻转问题“GPS Week Number Rollover”。原理么很简单,发射的信号里周数用10位二进制表示,只能表示0-1023周。数完了就要从头开始。

需要注意的是时间,我看到一些民航发的文件写的都是2019年4月6日翻转,这很容易让人误解为4月6日零时翻转。其实应该是在4月7日的国际时0点,从1023变为0的一瞬间。我用UNIX时间戳计算了一下:

GPS的起始日期是1980-01-06 00:00:00UTC 。UNIX时间戳是315964800。

第一次翻转发生在1024周后,就是315964800 + 1024 × 604800 = 935280000。代表1999-08-22 00:00:00UTC。

第二次翻转发生在935280000 + 1024 × 604800 = 1554595200。代表2019-04-07 00:00:00UTC。换在北京时间就是2019-04-07 08:00:00

我猜想对于定位应该没什么影响(我猜要有影响也是在翻转瞬间),毕竟飞机上的位置更新,GPS只是数据源之一,无线电定位和惯导都还能发挥作用。

可能还有影响的是导航数据库版有效期,我看FCOM上写,如果导航数据库的有效日期与始终输入的日期不一致,就会跳出NAV DATA OUT OF DATE告警。

另一个需要小心的是数据链,如果飞机的时间真的变成了1999年甚至1980年,上行和下行的数据链是否能正常工作呢?(我猜现代的飞机应该不会这么破)

MEMORANDUM FOR U.S. OWNERS AND OPERATORS USING GPS TO OBTAIN UTC TIME》可供参考。

A New Keyboard

1283634634

这个键盘已经伴随我很多年了,从win98的年代用到现在。键盘背面是金属的,很重,极其耐用,不过为了继续使用这个键盘,我不得不购买带有PS/2口的主板。

前几天我买了一个新的Keyboard乐器。目前还是初学阶段  O(∩_∩)O

1891262504

自制ADS-B,便捷又不贵,家用S模式应答机接收器

很早就听说国外有卖ADS-B接收器了,本来以为那是一种复杂昂贵的设备。就算是自制设备的价格不贵,说不定国内也很难能买到。

没想到,经过一番google之后,一个国外网站上说,在中国能买到一种数字电视棒,在LINUX中可以直接拿来接收ADS-B的信号。经过一番简单的安装后,果然成功。下面我就来介绍一下主要步骤:

第一步,电视棒的芯片型号是:RTL2832U+R820T,淘宝上一搜一个准。量多又便宜(价格小于50元)。

217048972

 

第二步,你需要下载并安装一个叫“rtl-sdr”的软件,网址位于:“http://sdr.osmocom.org/trac/wiki/rtl-sdr”。它是一个RTL2832U芯片的控制软件,负责控制电视棒频率(还有很多无线电方面的参数我不是很懂)。

第三步,就是安装应用软件,我只安装了一个最简单的,名字叫“dump1090”,网址位于:“https://github.com/antirez/dump1090”。他是一个把无线电中的数字信号提取出来并解码的软件。就是解码S模式应答机的内容。你可以运行命令:“dump1090 –interactive”。启动一个实时的列表,察看接收到的飞行信号。

最终效果如图:

0c8d

 

图中可以看到飞机的航班号、高度、速度、经纬度和航迹,大约每秒更新一次。如果你想把飞机绘制在地图上,可以自己动手编一个软件,或者找一个现成的。

有人可能会担心信号问题。图中的结果是我在市区的家中接收到的,距离虹桥机场7公里,周围嘈杂而且高楼林立,所以只接收到1万英尺以上的飞机。我想如果我能带一台笔记本电脑去机场周边没有障碍物的地方信号会好很多。

以上这些内容中,最难的部分可能就是从源代码编译软件了。其实我在编译的过程中没遇到什么困难,只需要一些LINUX基础和编程基础就行。

我一直觉得在签派工作中,公司可以出资搭建这种简易的ADS-B接收器,分部在机场周围。在大面积延误或雷雨大雾时,可以精确地了解终端区里飞机的位置。

玩玩单片机

在淘宝上买了块天祥电子的51单片机玩玩,折腾了好久,终于在linux上搭建好了开发平台。我发现网上介绍linux中编写51单片机的流程很凌乱,所以下面做一下汇总。

image

我用的是ubuntu,首先用apt-get下载sdcc,这是一个编译器,安装很顺利。下面写一段简单的代码。如下,抱歉排版原因没有缩进:

#include <mcs51/8051.h>
void delay02s(void){
unsigned char i,j,k;
for(i=20;i>0;i–)
for(j=20;j>0;j–)
for(k=248;k>0;k–);
}

void main(void){
while(1){
P1_0=0;
delay02s();
P1_0=1;
delay02s();
}
}

注意这里的#include <mcs51/8051.h>。和Keil不同。接着编译命令很简单:

sdcc light.c

编译成功后会生成”light.ihx”。然后,找到一个叫”hex2bin”的软件,地址在。注意不是“hextobin”,那是另一个很搓的软件。让我走了很多弯路。

“hex2bin”要从源代码编译安装,还算简单。安装完后运行:

hex2bin light.ihx

它会生成light.bin。到这一步编译都完成了,就差把bin文件刷入单片机了。

找到一个叫“gSTCISP”的软件。这个软件编译安装的时候比较麻烦。需要手工改Makefile。

把单片机的电源关掉,把串口接上电脑,然后以管理员身份运行gSTCISP,如图:

a32e

 

选择好bin文件。然后点击DownLoad,然后打开单片机电源。bin文件就会自动刷到单片机里去,并开始运行。

给usb控制开关写了python的控制代码

前几天在淘宝上买的一个usb控制继电器,可以用电脑控制小功率设备的开关了。其实它就是一个usb模拟的串口,我用python写了一个向串口读写的Class,方便以后继续扩展。最终目标是用网页方式控制电路开关。代码->pyXunDaCtl.py

东西做工不错,不过似乎是三无产品,设备上没有任何标称数据或生产厂家,我拆开后看了继电器上写了可以用到270V,但是我怕出问题,用来开关12V的直流电算了。

itouch里最好的pdf查看软件

竟然就是Safari!破解后,我安装了lighttpd,然后把pdf上传到文件夹里,用Safari打开就能看了,超级简单,中文支持超级完美,速度超级快。
马上要去学A321转机型了,这两天抓紧时间把FCOM看一下。最近财政紧张,FSX的A320插件就只好缓一缓再买了。

新年升级电脑 日立500G硬盘×2

一直在纠结,如果升级电脑的话,应该升级硬盘还是升级内存。当初装电脑的时候,DDR2 800的内存以及250G的硬盘拖了整个系统的后腿。从性能上来说,我觉得内存会对系统速度有更大提升。但是硬盘的确是用完了。而且现在硬盘的价格和白菜一样。有很多人问题为什么不直接买一个1TB的硬盘,因为两个500G的硬盘价格和1TB价格差不多,但是两个硬盘金就可以组成RAID0,可以提高速度。自从加入单反烧钱行列之后,我的照片库容量越来越大。现在已经膨胀到40G了。为了防止RAID0系统错误,我把照片备份在3个不同的硬盘里。其中一个是网络硬盘,那个速度真叫慢啊~,难道要升级千兆网卡吗~。下一次升级内存不知道会是什么时候,也许会在FM和MU合并之后,哈哈。

(zt)关于计算机编程的21条“规律”

每个有经验的程序员都知道,在软件开发中存在着一些规律。但是,破坏了这些规律并不会得到惩罚,相反会有些许奖励。
1. 任何一个程序一旦发布就意味着它已经过时了。
2. 让需求根据程序调整往往要比让程序根据需求调整来得容易。
3. 如果一个程序是有用的,那它必将被改变。
4. 如果一个程序是无用的,那它必须被注释。
5. 在任何一个程序里只有10%的代码会被执行。
6. 软件会无限扩张以占用所有的系统资源。
7. 任何有价值的程序都会包含至少一个错误。
8. 一个演示版的程序完美无瑕的几率和关注它的人数成反比,最终要花费的金钱的数量是原数量的平方。
9. 一个程序的致命错误要到其发布至少半年后才会被发现。
10. 不可检测的错误是无穷无尽的,并以各种形式存在;相反,可检测的错误从理论上讲是有限的。
11. 随着时间的推移,修正某个错误所需花费的精力会成指数级增加。
12. 程序的复杂度会一直增长,直到超出维护它的程序员的能力为止。
13. 一段你自己写的代码如果几个月不曾看过,那很有可能其他人也会写出相同的代码。
14. 在每个小程序里都会有一大段代码想要破壳而出。
15. 你越快开始编写代码,就会需要越长的时间。
16. 一个项目如果没有精心策划,那将需要比预期多出两倍的时间来完成它;相反的,如果项目是精心策划过的,就只需要多出一倍的时间。
17. 向一个落后于进度的项目添加程序员只会让项目更加落后于进度。
18. 一个程序的完成程度总在90%到95%之间。
19. 如果你让一团糟糕的代码自动化,那你就会得到一团自动化的糟糕的代码。
20. 建立一个连傻瓜都会使用的程序,而只有一个傻瓜才想要去使用它。
21. 用户直到他们使用了一个程序之后才知道他们究竟想要的是什么。

Vista 64bit

用一种奇特的方法安装好了Vista,感觉比xp的确进步不少,最重要的是64位系统识别出了我的4G内存。在vista评分的过程中,其他硬件都是5.9,只有内存速度是5.6,可见当时为了省钱购买DDR2-800的内存,造成了系统的瓶颈。
安装FSX后,我就奇怪了,怎么开始菜单里没有FSX阿?找了半天都没找到,只好在目录里直接运行exe文件。最后发现,FSX被安排在开始菜单的“游戏”里,Vista真是善解人意。

新电脑,在途

Intel (英特尔) Core2(酷睿2) Q6600 四核 CPU
华硕(ASUS)P5KC主板
G.SKILL(芝奇)DDRII 800 2GB*2
希捷250G 7200转16M大容量缓存 SATAII盒装台式机硬盘
酷冷至尊(CoolerMaster)武尊神电脑机箱(RC-690)全黑
TT 暗黑AH580A 主动式PFC 2.2版电源采用超静音双8公分滚珠轴承风扇
双敏(UNTKA) 8800GT 600/1800 512M/256位 DDR3 纯公板
n哈哈,7700左右,超预算700块。本来想买E6850的,首先是CPU缺货,后来发现4核的CPU运行模拟飞行更好一点。