OPBTPython 脚本使用手册


OPBTPython 脚本使用手册

1. 文档概述

1.1 什么是 OPBTPython?

OP-BTS 是全球首款在设备端运行 Python 的读表光电头(Optical Probe for Meter Communication)。它不依赖电脑或手持设备即可独立工作:内置芯片和 16MB 可访问存储,让您用自己写的 Python 脚本完成读表任务,一键运行即可。

作为读表设备,OP-BTS 配合脚本功能后,您可以编写简单脚本来读取电表数据、在设备上显示或通过蓝牙发送,并将结果保存到内置存储。通过 Windows 应用或蓝牙上传脚本后,直接在光电头上运行。设备支持透明传输、自动波特率检测(Mode E / Mode C)、蓝牙 5.0、长续航,并支持 Android、iOS、Windows、macOS 和 Linux。

OPBTPython 即运行在 OP-BTS 上的 Python 脚本环境,基于 PikaPython 内核,在设备资源范围内提供轻量级 Python 支持,让您用熟悉的语法和库完成读表与数据处理。

1.2 在 OP-BTS 上能用 OPBTPython 做什么?

  • 交互式运行:通过串口或蓝牙连接,进入 Python 交互环境,边试边调试。
  • 脚本下载运行:用专用的Windows应用OpBtFileManager编译并管理脚本,在光电头上直接执行。
  • 文件系统运行:将脚本存放在设备存储中,实现脱机读表、数据保存与定时任务。

1.3 手册使用说明

本手册包含快速入门、基础语法、标准库、设备 API 和实用示例。交互式终端的使用说明见 终端的使用。可通过目录或示例索引快速跳转到需要的章节。


2. 快速开始

2.1 环境准备

在开始写脚本、下载或交互运行之前,请先准备好以下环境和连接方式,按您的使用场景任选其一即可。

硬件与连接

  • OP-BTS 设备:确保固件支持 OPBTPython(可参考产品说明或联系厂商确认)。
  • 连接方式
    • 光电头端对接:使用USB接口工装光电头通过与 OP-BTS 对接通信,设定与设备的一样波特率参数。
    • 蓝牙连接:在电脑或手机端与 OP-BTS 配对后,可进行脚本下载或蓝牙端交互。

电脑端软件(任选)

  • OpBtFileManager(推荐):厂商提供的 Windows 客户端,用于连接设备、上传并运行脚本、查看输出,支持串口对接,蓝牙虚拟串口,蓝牙SPP和BLE方式的连接。
  • 串口/终端工具:若使用 USB 串口或虚拟串口,可选用任意串口调试助手、终端软件(如 PuTTY、SecureCRT、或厂商推荐的工具),用于发送命令、进入 Python 交互模式或查看输出。需在工具中正确选择对应串口及波特率。

手机端(可选)

  • 若通过蓝牙连接,可在 Android 或 iOS 上使用支持 SPP/BLE 的调试应用与 OP-BTS 通信,进行脚本下载或交互式运行(具体以厂商提供的移动端说明为准)。

2.2 脚本下载和运行方式

Windows应用程序OpBtPythonManager下载和运行

  • 应用程序介绍和获取方式:可从设备文档或官网获取(下载链接)。
  • 应用程序界面说明:连接设备后,选择脚本文件编译后,点击下载即可下载到设备指定目录"/py"。
  • 使用步骤:连接设备 → 选择脚本文件 → 点击下载 → 等待完成。
  • 下载状态显示和错误处理:应用程序会显示下载进度;若失败,请检查连接与串口/蓝牙配置。
  • 脚本执行:可以在软件界面点击运行脚本,也可以在设备MENUSCRIPTS中找到相应的脚本直接运行。

2.3 第一个脚本示例

opbt.device.SetOutputMode(1)  # 输出到蓝牙端
print('Hello OPBTPython!')

2.4 交互式运行

激活交互式模式

通过串口工具或终端工具向设备发送命令,必须是整行数据一起发送,每行末尾需要加回车换行符:

固件版本大于4.68:

OP>2

即发送字符串 OP>2 后跟回车换行(\r\n)。

旧固件版本小于4.68,则需要发送2条命令:

OP>1
{"PythonRunMode":1}

命令说明

上面命令发送后会启动 Python 交互式终端,并返回提示符 >>>

重要:输出端口选择

  • 从光电头端(串口) 发送 OP>2\r\n,则后续所有 Python 交互式输出都会发送到 光电头端
  • 从蓝牙端 发送 OP>2\r\n,则后续所有 Python 交互式输出都会发送到 蓝牙端

使用方法与退出

  • >>> 提示符后输入 Python 代码,按回车执行。
  • 输入 exit() 可退出交互式模式并重启设备(固件版本大于4.60,其它固件版本请看设备无响应中的方法一)。

异常处理

  • 代码错误会有错误提示,会返回错误信息。
  • 中断当前代码段的运行:按住设备左键,接着按住右键,这时候红灯亮,然后松开右键,保持左键3秒以上可中断当前代码的运行。

设备无响应

  • 方法一:则尝试先按住左键,再按住右键,超过3秒,设备将断电。
  • 方法二:按住中键20秒,设备将关机。

详细功能说明见 终端的使用(交互式运行)


3. OPBTPython基础语法

OPBTPython 支持 Python3 标准语法的子集。

3.1 支持的语法特性

  • 数据类型:int、float、str、bool、list、dict、tuple、bytes
  • 控制流:if、elif、else、while、for
  • 函数定义:def,支持默认参数、可变参数、关键字参数
  • 类定义:class,支持继承
  • 模块导入:import、from … import

3.2 运算符

支持 +-*/==!=><>=<=%**//&|andornotin 等。

3.3 简要示例

# 变量与类型
a = 1
b = "hello"
c = [1, 2, 3]

# 条件与循环
if a > 0:
    print(b)
for x in c:
    print(x)

4. 标准库介绍

本设备脚本环境包含以下标准库模块:PikaStdLib、time、struct、os、math等。 详细库文档请参考:API库文档

4.1 PikaStdLib

  • 用途:提供内存管理等功能
  • 内嵌示例
import PikaStdLib
mem = PikaStdLib.MemChecker()
mem.max()   # 打印最大内存占用
mem.now()   # 打印当前内存占用

4.2 time 模块

  • 用途:延时与时间。
  • 内嵌示例
import time
time.sleep_ms(500)   # 延时 500 毫秒

4.3 struct 模块

  • 用途:二进制数据打包与解包。
  • 内嵌示例
import struct
buf = struct.pack('hh', 1, 2)
a, b = struct.unpack('hh', buf)

4.4 os 模块

  • 用途:文件与路径操作(依赖平台)。
  • 内嵌示例
import os
p = os.path
p.join('dir', 'file.txt')

4.5 math 模块

  • 用途:数学函数。
  • 内嵌示例
import math
math.sqrt(2)
math.sin(0)

5. OP-BTS 设备 API 详解

设备脚本通过 opbt 模块访问硬件功能。OPBT硬件设备操作API库文档

5.1 输出模式

API 说明 内嵌示例
opbt.device.SetOutputMode(mode) 设置输出设备(0 自动,1 蓝牙,2 光电头,3 LCD) opbt.device.SetOutputMode(1)
opbt.device.GetOutputMode() 获取当前输出模式 m = opbt.device.GetOutputMode()

5.2 串口

API 说明 内嵌示例
opbt.device.UartConfig(baudrate, parity, DataBit, StopBit) 配置串口 opbt.device.UartConfig(9600,"N",8,1)
opbt.device.UartSendByte(ch) 发送一字节 opbt.device.UartSendByte(65)
opbt.device.UartGetByte() 读取一字节,无数据返回 -1 ch = opbt.device.UartGetByte()
opbt.device.UartSendString(buf, len) 发送字符串(阻塞) opbt.device.UartSendString("Hi",2)
opbt.device.UartSendStringNoWait(buf, len) 发送字符串(非阻塞) opbt.device.UartSendStringNoWait("Hi",2)
opbt.device.UartSendBytes(buf, len) 发送字节(跳过协议头) 见设备文档
opbt.device.TransparentModeOn()/Off() 透明传输开关 opbt.device.TransparentModeOn()
opbt.device.IecAutoOn()/Off() IEC 自动波特率开关 opbt.device.IecAutoOn()

5.3 LED 与按键

API 说明 内嵌示例
opbt.device.LedSet(leds, mode) 设置 LED(mode: 0 关 1 开 2 闪 4 快闪 8 翻转) opbt.device.LedSet(0x02,1)
opbt.device.LedBlink(leds, cnt, duty, time) LED 闪烁 opbt.device.LedBlink(0x02,10,50,300)
opbt.device.GetKeyStatus() 读取按键(位 1 右键,位 2 中键) k = opbt.device.GetKeyStatus()

5.4 系统与延时

API 说明 内嵌示例
opbt.device.SystemProcess() 系统进程,需周期调用(如配合 LedBlink) opbt.device.SystemProcess()
opbt.device.Sleep(ms) 延时毫秒 opbt.device.Sleep(100)

5.5 LCD

API 说明 内嵌示例
opbt.device.LcdClear() 清屏 opbt.device.LcdClear()
opbt.device.LcdTextColor(fc, bc) 设置前景色、背景色 opbt.device.LcdTextColor(0xF800,0x0000)
opbt.device.LcdTextXY(x, y) 设置文本坐标(x 0–19,y 0–4) opbt.device.LcdTextXY(0,0)
opbt.device.LcdPrint(str_p) 显示字符串 opbt.device.LcdPrint("Hello")
opbt.device.LcdFill(xsta, ysta, xend, yend, color) 填充矩形 opbt.device.LcdFill(0,0,10,10,0xFFFF)

更多参数与颜色值请参考 ScriptDoc/cn/cn_module-opbt-device.md 与设备文档。


6. 实用示例索引

主手册仅提供索引,详细示例见各示例文档。

6.1 OP-BTS 设备示例

  • OP-BTS设备示例:LED、串口、LCD、按键、透明传输、IEC 自动波特率及综合应用。

6.2 OPBTPython 内建功能示例

6.3 标准库模块示例


7. 调试和故障排除

  • 内存监控:使用 MemChecker()max()now() 观察内存占用。
  • 常见错误:检查 import 是否为本设备支持的模块;串口/蓝牙是否连接;输出模式是否与使用的端口一致。
  • 调试技巧:先用 print() 或 LCD 输出关键变量;交互式模式下可逐行执行命令排查。

8. 附录

8.1 API 快速参考

见第 5 节表格及设备 API 文档。

8.2 颜色值参考(LCD)

颜色名 十六进制
White 0xFFFF
Black 0x0000
Red 0xF800
Green 0x07E0
Blue 0x001F
Yellow 0xFFE0

8.3 LED 位掩码参考

位掩码 说明
0x01 左红
0x02 左绿
0x04 左蓝
0x08 右红
0x10 右绿
0x20 右蓝
0x40 保留