用于编码和解码 APRS 数据的 Python 模块。
项目描述
aprs3 是一个用于编码和解码 APRS 数据的模块,用于 AX.25 或 APRS-IS。
支持的数据类型
职位(职位报告)
压缩
未压缩
带时间戳
数据扩展
课程/速度
PHG
随机数
DFS
高度
对象(对象报告)
项目(项目报告)
状态(状态报告)
留言(留言)
未知数据类型将被解码为InformationField。
接口
这个包提供了与 APRS-IS 交互的异步方法:
import asyncio
from aprs import create_aprsis_connection
async def main():
transport, protocol = create_aprsis_connection(
host="noam.aprs2.net",
port=14580,
user="KF7HVM",
passcode="-1", # use a real passcode for TX
command='filter r/46.1/-122.9/500',
)
async for frame in protocol.read():
print(frame)
if __name__ == "__main__":
asyncio.run(main())
同步包装器也包括在其中可能更方便的地方:
from pprint import pformat
import attrs
import aprs
with aprs.TCP(
host="noam.aprs2.net",
port=14580,
user="KF7HVM",
passcode="-1", # use a real passcode for TX
command='filter r/46.1/-122.9/500',
) as aprs_tcp:
# block until 1 frame is available and print repr
print(repr(aprs_tcp.read(
callback=lambda f: print(f),
min_frames=1,
)[0]))
# block until 3 frames are available and print decoded form
for frame in aprs_tcp.read(min_frames=3):
print(pformat(attrs.asdict(frame)))
此外,此软件包可通过 Serial KISS 或 KISS-over-TCP 与真正的 TNC 一起使用。
序列号:
同步:aprs_serial = aprs.SerialKISS("/dev/ttyUSB0", 9600)
异步:传输,协议 = aprs.create_serial_connection("/dev/ttyUSB0", 9600)
tcp:
同步:aprs_kiss_tcp = aprs.TCPKISS("localhost", 8001)
异步:传输,协议 = aprs.create_tcp_connection("localhost", 8001)
这些对象的使用方式与上面显示的示例相同。
对于不会自动编码/解码 APRS 数据的 KISS 传输版本,请参阅Kiss3。
版本
8.xx 分支是一个大型重写,包括异步功能和完整的数据包编码。
以前的版本由ampledata作为aprs发布:
7.xx 分支和-on 将仅适用于 Python 3.x。
6.5.x 分支将是此模块的最后一个支持 Python 2.7.x 的版本
安装
使用 pip 从 pypi 安装:pip install aprs3
使用示例
示例 1:库使用 - 接收
以下示例连接到 APRS-IS 并过滤 500 英里内 46.1N、122.9W 的 APRS 帧。返回的任何帧都将发送到回调p,该回调会打印它们。
示例 1 代码
import aprs
def p(x): print(x)
with aprs.TCP(command='filter r/46.1/-122.9/500') as aprs_tcp:
# callback can be passed to read()
aprs_tcp.read(callback=p)
示例 1 输出
W2GMD-6>APRX28,TCPIP*,qAC,APRSFI-I1:T#471,7.5,34.7,37.0,1.0,137.0,00000000
示例 2:库使用 - 发送
以下示例连接到 APRS-IS 并发送 APRS 帧。
示例 2 代码
import aprs
frame = aprs.APRSFrame.from_str('KF7HVM-2>APRS:>Test from aprs!')
with aprs.TCP(user='W2GMD', passcode='12345') as a:
a.write(frame)
测试
通过 tox 运行 pytest:
tox
也可以看看
Python Kiss3 模块库,用于各种 KISS 接口的接口和编码。
Python APRS 网关使用 Redis PubSub 运行多接口 APRS 网关。
dirus Dirus 是一个用于管理 SDR 到 Dire Wolf 接口的守护进程。将该接口显示为 KISS TCP 端口。
类似项目
杰弗里菲利普斯弗里曼(WI2ARD)的顶点。下一代 APRS 协议。(基于此模块!:)
罗森·格奥尔基耶夫的aprslib。一个 Python APRS 库,带有用于多种帧类型的内置解析器。
马蒂和肯尼斯的aprx。用于 POSIX 平台的基于 C 的 Digi/IGate 软件。
HA5DI的 dixprs。一个带有 KISS、digipeater 等支持的 Python APRS 项目。
GE0RG的 APRSDroid。Java/Scala Android APRS 应用程序。
KA2DDO的 YAAC。Java APRS 客户端。
来自 aprs.fi 的Ham-APRS-FAP :Perl APRS 解析器。
WB2OSZ 的恐狼。一种基于 C 语言的 Soft-TNC,用于与声卡连接。可以作为KISS界面呈现!
资源
版权
版权所有 2022 Masen Furer 和贡献者
版权所有 2017 Greg Albrecht 和贡献者
自动数据包报告系统 (APRS)版权所有 Bob Bruninga WB4APR wb4apr @ amsat 。组织
decimaldegrees.py - 版权所有 (C) 2006-2013 Mateusz Łoskot < mateusz @ loskot 。净>
执照
Apache 许可证,版本 2.0。有关详细信息,请参阅许可证。
decimaldegrees.py - BSD 3 条款许可证
base91.py - GPL
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
aprs3-8.0.0.post1.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 9557481647e00da9c78764708aff8c59d93925a615fdced9f85af0a4d15045f1 |
|
| MD5 | ddcc3d85453221e6604fdbc03f1ad266 |
|
| 布莱克2-256 | fd4e664000643ca752befc686efb7465f9aec5f55de18eb547b37275ad64510c |
aprs3-8.0.0.post1 -py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | bb79c5aa3e238d05f7a1686bf8a16ce5f0c055bacc40b848ddd2b9d1afc79079 |
|
| MD5 | 2b805f68397f479ef1f034d36e14fb9e |
|
| 布莱克2-256 | e441d26236c8ec51f0d26439113b489d86da1250b2aa90ee7418bd9e8a413dcf |