PJON通信协议的Python实现。
PJON-python的Python项目详细描述
PJON通信协议的pythonic接口。
pjon(github:PJON)是 开源、多主机、多媒体(单线、双线、无线) 可用于各种平台的通信协议(Arduino/AVR, ESP8266,蒂恩西)。
pjon是为数不多的多主机开源实现之一 微控制器的通信协议。
当前状态下的pjon python模块允许与 其他PJON设备直接通过UART(串行通信):
- 在一个基本的场景中,pjon+pjon python可以是 更复杂的协议,如Firmata(Github上的Arduino固件: firmata/Arduino表示直接 (单工)通信主机uc。
- 如果使用带有自动发送设置的RS485驱动程序,则主机(例如覆盆子 pi)可以加入多主pjon总线,python程序可以 与多个UC通信。
- 如果UC带有代理固件(在串行和其他之间发送数据包 使用pjon总线类型)主机可以与pjon总线通信 而不是通过serial2pjon代理uc。
Pjon Python模块打开了流行的UC平台(Arduino、ESP8266、Teensy) 整个应用范围:多主自动化(报告 与基于轮询的协议(如 Modbus)-开放硬件IOT(得益于其他集成的灵活性) python模块)
当前状态:
- 进行中的工作,使用pjon v4.2或v4.3进行最低限度的客户端操作 (需要通过硬件战略)
- bitbang的物理抽象与过采样策略 由作为Arduino草图实现的串行PJON桥提供
- 在半双工系统中支持直通墙战略, 提供多主通信模式,例如通过RS485总线 直接(需要串行RS485转换器)
- 支持单纯形通信中的通径串行策略 模式将直接提供(例如,与单个Arduino通话)。
- 与连接到USB的单个Arduino进行通信 半双工模式,即插即用,无需任何附加硬件
突出的功能
- PJON串行策略
- 从本地总线接收,无需确认[完成]
- 确认接收[完成]
- 不带ACK发送到本地总线[完成]
- 确认发送[完成]
- PJON协议
- 接收[完成]
- 发送[完成]
- 更新[完成]
- 重复发送
- 本地总线支持[完成]
- 包括发件人ID[完成]
- 共享总线支持
- 自动寻址(PJON V5功能)
- 公共API
- 阻塞[实现]
- 无阻塞[完成]
- 串行pjon桥的自动发现
pjon python版本与pjon版本对齐以指示 与UC平台的C实现兼容。
v4目标:
- 本地和远程串行端口支持,自动发现 serial2pjon proxy arduino
- 支持ACK的本地总线PJON串行策略[完成]
- 用于串行策略的完整PJON串行协议(远程总线支持)
V5目标:
- 自动寻址
最小客户示例
frompjon_python.base_clientimportPjonBaseSerialClientimporttimepjon_cli=PjonBaseSerialClient(1,'COM6')pjon_cli.start_client()defreceive_handler(payload,packet_length,packet_info):print"received packet from device %s with payload: %s"%(packet_info.sender_id,payload)pjon_cli.set_receive(receive_handler)whileTrue:# recipient id payloadpjon_cli.send(35,'C123456789')# payload can be string or an array of bytes (or any type suitable for casting to byte)time.sleep(1)