用于铱9602调制解调器的Python3铱通信库。

pyiridium9602的Python项目详细描述


#Pyridium9602
Python 3铱卫星通信库,用于铱9602调制解调器。

pyrockblock库是一个很好的资源,但是我很快发现它不适合我的应用程序。串行端口readline命令和挂起gui应用程序的长时间超时给我带来了太多问题。最后,我在http://www.nalresearch.com/info/at%20commands%20for%20models%209602.pdf上查阅了有关铱星9602调制解调器的文档
,并编写了这个库。
这个库严格来说是基于回调的库,虽然也提供了阻塞方法。

有关如何使用库的示例,请参见"测试"文件夹下的模块。


工作。

````
==命令行:pyiridium_server.py com2==
输入要发送的消息:hello world!
输入要发送的消息:hi
输入要发送的消息:pyiridium.py com2==
将创建一个线程
信号质量(0-5):5
系统时间:3521898596
序列号:60134
获取的消息:b'hello'
获取的消息:b'hi'

===
获取的消息:b'exit'

觕两个程序都关闭
`````

使用signal类(或创建自己的类)并使用自定义回调方法,而iridiummunicator类管理所有通信。

``python
import pyiridium9602

觕create您自己的串行端口对象,并将其作为第一个参数,或者只为其指定端口名。
iridium廑port=pyiridium9602.iridiumcomunicator("com2")


消息解析器
def parse廑data(data):
print("my data:",data)

def message廑failed(msg廑len,content,checksum,计算检查:
打印("消息校验和或长度失败!",msg_len,content,checksum,calc_check)


铱端口.signal.disconnected=lambda:print("disconnected!")
iridium_port.signal.serial_number_updated=lambda s:print("序列号:",s)
iridium_port.signal.system_time_updated=lambda s:print("系统时间:",s)
iridium_port.signal.signal_quality_updated=lambda sig:print("信号质量(0-5):",sig)
iridium_port.signal.check_ring_updated=lambda tri,sri:print("电话指示灯:",tri,
"\nsbd指示灯:",sri)
iridium_port.signal.message_received=parse_data
iridium_port.signal.message_received_failed=message_failed
iridium_port.signal.notification=打印

因此,"connect()"创建一个线程来完成连接过程
iridium_port.connect();如果端口无法打开或ping未找到响应,则引发iridiumeror。

请求
iridium_port.request_signal_quality()
iridium_port.queue_system_time()

命令
iridium_port.request_serial_number()


阻塞命令(等待上一个命令并等待完成)
使用iridium_port.wait_command():
iridium_port.request_signal_quality()

阻塞命令(等待上一个命令并等待完成)
使用铱端口.wait_for_command():
铱端口.check_ring();如果找到SBD环,则会自动启动会话以读取值。

blocking command(不要等待前面的"wait_for_previous=0")
序列号=铱端口。获取响应(pyiridium9602.command.serial_number,wait_for_previous=0)
打印("手动序列号:",serial_number)

预生成阻塞命令
sig=iridium_port.acquire_signal_quality()
打印("手动信号质量(0-5):",sig)

下面。

``python
import pyiridium9602
import threading
import time

customsignal(对象):
"创建cusotm信号回调管理器。

注意:
如果不存在其他信号方法,则它们将被创建为空方法。如果通知方法
不存在,它将使用打印功能。您可能需要使用通知方法记录特殊事件。

另请参见:
pyiridium9602.signal
"


def connected(self):
""验证连接后调用此方法。"
print("connected!")

def disconnected(self):
"此方法在连接关闭后调用。"
print("disconnected!")

def signal_quality_updated(self,signal):
"接收到新的信号质量后调用此方法。"
print("信号质量(0-5):",signal)


def check_ring_updated(self,tri,sri):
"此方法在已收到新的检查环响应。

args:
tri(int):电话环指示器
sri(int):sbd环指示器
"
打印("检查环响应",tri,sri)


def消息已接收(self,data):
"此方法在接收到消息并通过校验和后调用。

参数:
数据(字节):不带长度或校验和字节的消息内容。
""
打印("接收到的消息:",数据)

def message_receive_failed(self,msg_len,content,checksum,计算检查:
"此方法在接收到消息且校验和失败或不符合
消息长度后调用。


参数:
消息长度(int):已分析的消息长度(前两个字节)。
内容(字节):消息的内容部分,前两个字节(消息长度)和后两个字节(校验和)。
校验和(字节):消息中包含的两个校验和字节。
计算校验和(字节):从内容。
"
打印("消息校验和或长度失败!",消息长度,内容,校验和,计算检查)

读取串行端口iridiummunicator.listen()`

铱端口连接如果端口无法打开或ping未找到响应,则返回iridiumeror。

序列号)

完成了。我们不知道使用铱端口需要多长时间。wait_for_command(wait_for_previous=0):
iridium_port.check_ring()

但随后的(如果sbd环大于0)会话sbdix可能没有。
time.sleep(2)


```

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

推荐PyPI第三方库


热门话题
windows请帮助获取java。运行程序时发生lang.nullpointerexception   JPA标准中的错误:java。lang.IllegalArgumentException:此JPQLquery中没有名为“:inputMsgId_1_”的参数   java调度一个小程序,从ScheduledExecutorService开始   java点击AVD“创建设备”按钮抛出NullPointerException   缓存Java9WebStart会多次加载jar文件   使用java计算最小二乘   当代理关闭时,java kafka生产者不会抛出异常   我们什么时候以及为什么要在java中进行自定义序列化?   java使用GSON解析包含包含所需字符串的对象的对象数组   java如何使用BOBJ REST API实现分页?   java身份验证失败:用户的凭据已过期。CAS v4。2.   合并排序中的java无限循环?   java jackson xml将pojo子元素转换为字符串   tcp Java ObjectOutputStream重置错误   如何调用。bat文件,并使用java中的ProcessBuilder发送字符串   奇怪的Java数学结果   java如何在Android中禁用最近的活动按钮?   java刷下应用程序崩溃   使用Java收集所有VersionOne资产及其所有属性   Java打印:创建具有最小可接受边距的页面格式