BT747——ezTour 的开源、跨平台替代品

2010-10-03

HOLUX 的 GPS Data Logger 是不错,可是要从中读取轨迹数据,就需要使用购机附带的 ezTour 软件。这个软件只有 Windows 版本,不便于 Linux 用户使用。而且它的 License 有安装数目限制,不便于在 Windows 虚拟机中运行。这是令人恼火的:既然已经购买了不可复制的硬件,为什么还要把它附带的软件绑定到特定的计算机上呢?好在有国外的高手为广大憋屈的用户开发了 BT747,一款开源(GPL)、跨平台(Java)、支持多种 GPS 设备(MTK Chipset)且功能强大的 GPS Data Logger 控制软件。在 Ubuntu 下简单试用一下,发现这款软件能够较为完美地从我的 HOLUX M-1200E 中读取 GPS 轨迹、导出 KML 文件,并允许对 GPS 的多项参数进行配置。其提供的信息和配置项远多于 ezTour,除了不能自动地为中国的坐标添加人为的偏移,其他日常功能完全可以替代 ezTour。

下面简述我在 Ubuntu 10.04 下配置使用 BT747 2.X.1767,读取 HOLUX M-1200E 轨迹数据的方法。

配置蓝牙虚拟串口

这里参考了 Ubuntu 论坛里的帖子。部分操作需要 root 权限。

首先确保计算机的蓝牙硬件及 GPS Data Logger 均已开启。使用“hcitool scan”命令扫描蓝牙设备,记录其中 GPS 的 MAC 地址。然后使用“sdptool browse [GPS_MAC]”命令查找蓝牙虚拟串口服务的 Channel,即输出信息中“RFCOMM”下方“Channel:”之后的数字。接着编辑“/etc/bluetooth/rfcomm.conf”文件,仿照注释在其中添加虚拟串口信息,例如:

rfcomm4 {
    bind yes;
    device 00:1B:AA:BB:CC:DD;
    channel 1;
    comment "My HOLUX M-1200E";
}

使用“/etc/init.d/bluetooth restart”重启蓝牙服务,执行“rfcomm connect 4”命令建立虚拟串口设备“/dev/rfcomm4”。此时如果能够通过“cat /dev/rfcomm4”看到 NMEA 0183 格式的文本输出,则说明蓝牙虚拟串口建立成功。

使用 BT747 读取轨迹数据

将 BT747 解压,根据 README.txt 中的提示运行适合你的平台的脚本,例如在 32 位 Linux 平台下为“./run_j2se.sh”。在随后弹出的 BT747 窗口中,通过“Settings - Device Protocol”菜单设置正确的 GPS 类型(对于 HOLUX M-1200E,选择“HOLUX M-1000C / GPSport 245”),然后在窗口下方的数据端口组合框中填入“/dev/rfcomm4”,点击“Connect”按钮。连接功能的标志是“Log Operations”标签页右边的“GPS Device Data”一栏中显示出 GPS Data Logger 的各项信息。这时即可点击“Download”按钮,从 GPS 中下载数据。

下载完成之后,还需要把来自 GPS Data Logger 的裸数据转换成我们所需要的格式。在“Log Operations”标签页的“Convert”一栏中,选择目标格式(对于导入 Google Maps/Earth,常用“KML”)以及设备类型(对于 HOLUX M-1200E,选择“HOLUX GR-245”),点击“Convert To”按钮即可得到所需的轨迹数据文件。如果目标格式选择“Table in GUI”,BT747 会在“Map”、“Track”、“WayPoints”等标签页中直接显示轨迹信息,便于用户在转换之前预览。

“Output Settings”标签页提供了输出目标文件的选项,例如可以只保留轨迹,而不保留轨迹上的每个 Track Point 的详细信息,这对于制作简化的示意图是有用的。“Device Settings”标签页则提供了数据清除、采样频率设置等 GPS Data Logger 控制功能。而 BT747 的更多特性还有待玩家,特别是熟悉 MTK Chipset 的行家进一步挖掘。