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)

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

推荐PyPI第三方库


热门话题
java hibernate。MappingException持久类未知   其余的都是java。lang.ClassNotFoundException:雅加达。servlet。在Tomcat 9上运行时在Maven/Jersey web服务上进行筛选   java从异步任务返回结果   java阶乘程序打印出递归   停止或重新部署Spring 3.1.2、Hibernate 4.1.0、Spring DataJpa 1.1.0、Tomcat 7.0.30时出现java内存泄漏   java如何在配置文件中生成计算属性   集合java 8将ListB的所有元素合并到ListA中(如果不存在)   运行mvn verify时,java为'test'配置文件中的测试设置defaultbinder   java如何在Hashmap中删除重复的键值对?不只是复制键或值   java如何编程一个按钮以成功加载数组中的下一个数据   java将ASCII数据发送到Android Things上的UART3,最后是3个字节0xFF   多线程Java并发递增一个值   java Android应用程序登录和登录问题