该项目于 GitHub 开源。
## 特性
- 通过该库可开发 Python 程序,接入 DG-Lab App
- 完全使用 asyncio 异步,并发执行各项操作
- 可部署第三方终端与 Socket 服务一体的服务端,降低部署复杂度和延迟
- 使用异步生成器、上下文管理器等,结合语言特性
- 通过 Pydantic, 枚举 管理消息结构和常量,便于开发
## 🔧 DG-Lab App 的 Socket 被控功能支持的操作
- 获取 A, B 通道强度 以及 通道强度上限 的数据更新
- 对 A, B 通道强度进行操作,支持增加、减少、设定到指定值
- 向 App 发送持续一段时间的波形操作数据
- 清空 App 波形操作队列
- 获取 App 按下反馈按钮的通知
该项目(库)主要难点在于:
1. 理解复杂的DG-Lab设备通信协议和数据格式,由于DG-Lab设备输出的是脉冲波形,因此对延迟要求极高,通信数据格式被极尽压缩,其中就会涉及位运算等。
2. 如何为开发者(用户)简化复杂的DG-Lab App通信流程以及复杂的通信数据构建(如波形数据等),让其专注于业务功能逻辑实现。
DG-Lab App Socket通信的官方涉及包含设备、App、WebSocket服务端、WebSocket客户端,整体架构较为复杂,而本项目支持开发者简化为设备、App、WebSocket终端,将服务端和客户端合为一体,在实际应用中较为实用。
## 开发用法
- 搭建服务端:使用10-15行左右代码即可搭建一个简易服务端
- 搭建客户端/第三方终端:用10-15行左右代码即可搭建简易客户端
- 搭建与第三方终端一体的 WebSocket 服务端:不仅提供 DG-Lab WebSocket 服务端服务,还生成了一个本地终端可供 App 连接,不管是本地终端 DGLabLocalClient 还是 WebSocket 终端 DGLabWSClient,包含的主要方法都相同,因此在该段代码中,终端相关的逻辑与上面的独立的 WebSocket 终端的实现基本相同。这种方式,省去了终端连接 WebSocket 服务端的环节,终端与 WebSocket 服务端一体,网络延迟更低,部署更方便。
## 其他
- 使用 pytest 和 codecoverage 进行测试和代码覆盖率检查
- 使用 mkdocs 和 mkdocstrings 自动构建文档
- 使用 GitHub CI/CD (Actions 或 Workflow)自动完成测试、文档构建、分发
- 使用 Pydantic 管理数据类型,开发者在使用时代码提示体验良好