一个与老式garmin gps设备的python接口

pygarmin的Python项目详细描述


Pygarmin
=


![pygarmin](pygarmin.png)

pygarmin是一组python类,用于与(大多数是较旧的)garmin gps设备进行接口。

其他机器。它基于官方的[协议规范]。这个项目是由[quentin
stafford fraser]发起的,但其他几个项目已经帮助我们实现了今天的目标。

pygarmin并不是一个完整的应用程序。现在包含了一些简单的应用程序,其中一个叫做pygarmin,但它主要只是一个帮助您编写应用程序的工具包。这是一个正在开发的项目。
没有支持。没有保证。等等。

如果您使用
pygarmin,它可能比从头开始编写您自己的软件快得多。


我们建议您先阅读这些文档。如果你不知道发生了什么,代码看起来就不再可怕了,尽管它实际上非常简单。




它们有许多共同点,但也有一些细微的区别。
例如,一些接收器可以显示图标,因此它们可以传输具有额外"符号"字段的
航路点,而其他
型号中则不使用该字段。其他人不使用图标,但会存储海拔高度。等等。您需要
为您的特定模型制定正确的协议。

[协议规范]
包含一个大表,其中详细说明了对于每种产品类型,
用于基本命令的协议、用于下载航路点的协议、用于下载航路点的协议。等等。


我为规范中列出的每个协议,
和每个数据类型创建了python类。好吧,他们大多数人。在
python中,大表变成了从garmin产品id到相关类集合的映射。
这意味着,虽然在
源中定义了大量类,但是只有少数类将被任何给定的接收者使用。
类都是根据规范中使用的名称命名的,因此如果您想了解更多有关类的信息,请查看规范中的



类<;tt>;garmin.garmin<;/tt>;将连接到您的GPS,读取其产品
ID和软件版本,然后在
表中查找相应的类。它创建协议类的实例,并为传输中使用的每种数据类型记录数据类型
类。它还有一些
友好的方法,如"getWaypoints",可以达到您所期望的效果。
当您调用它时,会得到一个对象列表,其中每个对象都是从garmin.Waypoint派生的类的
实例,但是
对象的精确类型将取决于您的GPS与通信。

installation
----




这是一个简单的python程序。

/usr/bin/env python


a ction
gps=garmin.garmin(phys)


纬度=最小角度(宽缝)
经度=最小角度(宽缝)
打印纬度,经度,宽缝

简单,嗯?这几乎适用于任何模型,因为所有航路点都有一个标识、一个经纬度和一个注释字段。纬度和经度存储在"半圆"坐标中(基本上是度数,但按比例缩放以填充有符号的长整数),因此这些字段称为"slat"和"slon"。函数"garmin.degrees()"将这些转换为度数。



更多详细信息
----


>有三个级别的协议文档:



物理层(最低层)
还有各种数据类型,称为dxxx。大致来说,物理协议指定rs232,链路协议指定用于来回发送消息的
数据包结构,而应用程序
协议指定这些数据包中实际可以包含的内容。

Garmin GPS 38将使用链路层L001定义的分组结构在物理层
p000(rs232)上与计算机通信。如果您希望
将航路点传送到或从它传送,它们将使用应用程序
层A100(航路点传送协议)发送,并且实际传送的航路点
将是D100类型。

在编写时,唯一记录的物理层是p000,它是
大约rs232,9600波特,8个数据位,没有奇偶校验,1个停止位。在
软件中,我们将其建模为一个具有读写方法的p000类,它可以被更高的协议级别使用。上面示例代码中使用的unixserialport类是p000的一个子类型。

我们已经完成了更常见的单元使用的那些,但是如果您的
没有包括在内,那么应该很容易添加。它们只有几行。



许可证
----


本软件在GNU通用公共许可证v2下发布。它没有任何明示或暗示的保证,您自行承担使用风险。



其中包括:

*[quentin stafford fraser](http://www.statusq.org)
*james skillen
*[bjorn tillenius](http://tillenius.me/)
*hyrum k.wright
*cedric dutoit

可能还有其他人,对此我们深表歉意!

徽标由[quentin stafford fraser]设计。

[python]:http://www.python.org
[garmin]:http://www.garmin.com
[协议规范]:http://www.garmin.com/support/commprotocol.html
[quentin stafford fraser]:http://quentinsf.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何处理可以为null或整数的POJO类值   JavaFXSpring类NotFoundException:org。springframework。上下文注释。注释ConfigApplicationContext   java Jackson JSON不包装嵌套对象的属性   编写多个SQL查询的java最佳实践   安卓 java。lang.IllegalStateException:无法提取AndroidPlatform、sslSocketFactory上的信任管理器   MongoDB/Morphia将技术id保存为ObjectId,尽管它在Java中是一个字符串   JavaEclipse只加载log4。测试文件夹中的属性   java如何通过次对角线遍历2D数组?   java在geotools jmappane中制作shapefile编辑器   数组如何在java中获得表大小2^32   java API调试。如何查找函数体之前发生的错误?   java如何创建二维数组,其中#1位于随机位置,并执行特定次数   java文本文件比较   java SDK支持diff spring版本   javaspring引导集成测试javax。坚持不懈PersistenceException:org。冬眠PersistentObject异常