搜索

cushy-serial 一个轻量级的Python Serial框架


发布时间: 2023-03-21 18:13:00    浏览次数:20 次

分享时间:2023-03-21 18:13:00
数据来源:网络
提取密码:在线浏览
文件类型:文章

本文自笔者博客: https://www.blog.zeeland.cn/archives/rgoihgxcoci3

项目地址: https://github.com/Undertone0809/cushy-serial/

简介

cushy-serial是一个轻量级的Serial框架,初衷是希望使Serial编程变得更加简单、快捷,因此,相较于传统的pyserial,该框架可以更加快速地构建起一个serial程序。

主要特性

  • 兼容pyserial的所有特性
  • 自定义serial消息异步回调,无需花费精力在多线程上
  • 提供串口定时任务
  • 方便实现和管理多个serial连接
  • 可自定义消息协议,兼容性强

快速上手

pip install cushy-serial --upgrade 
  • 下面是一个简单的serial程序,当python客户端接收到来自串口的信息时会自动回调

    from cushy_serial import CushySerial
    
    serial = CushySerial("COM1", 9600)
    serial.send("I am python client")
    
    
    @serial.on_message()
    def handle_serial_message(msg: bytes):
      str_msg = msg.decode("utf-8")
      print(f"[serial] rec msg: {str_msg}")
    
需要说明的是,CushySerial兼容了Serial中所有的功能,因此,你可以在CushySerial中使用Serial的所有功能。
  • 运行结果如下

<img src="https://zeeland-bucket.oss-cn-beijing.aliyuncs.com/images/20230310173226.png"/>

  • 如果你想要执行定时任务,CushySerial也提供了相关的解决方案,你可以方便的轮询发送指令,并获取来自串口的信息,示例如下:
from cushy_serial import CushySerial, enable_log

enable_log()
serial = CushySerial("COM1", 9600)
instruction = bytes([0x01, 0x06, 0x00, 0x7F, 0x00, 0x01, 0x79, 0xD2])

# msg为你要轮询发送的指令,interval为轮询的时间间隔,times为执行次数,可不填写
@serial.polling_task(msg=instruction, interval=0.5, times=5)
def handle_rec_msg(rec_msg):
    print(f"[serial] rec polling message: {rec_msg}")

待办

  • [ ] 提供polling_task的函数回调版本
  • [ ] 提供bytes包解析功能,减少在包解析上所花费的工作
  • [ ] 提供相关持久化解决方案
  • [ ] 提供数据流监控,提高数据稳定性
  • [ ] 提供更加细力度的数据包调控,降低丢包率
  • [x] 提供串口定时任务调度
  • [ ] 完善单元测试

贡献

如果你想为这个项目做贡献,你可以提交pr或issue。我很高兴看到更多的人参与并优化它。

免责声明 cushy-serial 一个轻量级的Python Serial框架,资源类别:文本, 浏览次数:20 次, 文件大小:-- , 由本站蜘蛛搜索收录2023-03-21 06:13:00。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://segmentfault.com/a/1190000043566927