一个与老式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
=
![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