用于铱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)
```
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)
```