ZeroLab Bus API for Python
Project description
ZLBus Python SDK
ZLBus Python SDK 是一个用于与ZLBus设备通信的Python库。它提供了丰富的API来控制和配置ZLBus设备,包括数据格式设置、设备校准、RF参数配置等功能。
许可证
本项目仅供内部使用。
功能特性
- 数据处理: 提供校验和、CRC等数据处理函数
- 设备控制: 支持设备参数配置,如数据格式、采样频率、上传频率等
- 校准功能: 支持IMU静态校准、磁力计校准等
- RF配置: 支持RF功率、连接间隔等参数配置
- 枚举和结构体: 提供丰富的枚举类型和数据结构定义
安装
将 ZlBusApi.py 文件和相关的DLL文件放置在您的Python项目目录中。
快速开始
import ZlBusApi as zlapi
zlapi.example()
主要功能
C语言结构体 -> Python版本的使用说明
Axis3_I16
import ZlBusApi as zlapi
import ctypes
block = zlapi.Axis3_I16()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.axis.x = 100
block.axis.y = 200
block.axis.z = 300
# 打印
print(block.axis.x, block.axis.y, block.axis.z)
Axis3_Float
import ZlBusApi as zlapi
import ctypes
block = zlapi.Axis3_Float()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.axis.x = 100.0
block.axis.y = 200.0
block.axis.z = 300.0
# 打印
print(block.axis.x, block.axis.y, block.axis.z)
AhrsQuaternion
import ZlBusApi as zlapi
import ctypes
block = zlapi.AhrsQuaternion()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.element.w = 1.0
block.element.x = 0.0
block.element.y = 0.0
block.element.z = 0.0
# 打印
print(block.element.w, block.element.x, block.element.y, block.element.z)
AhrsEuler
import ZlBusApi as zlapi
import ctypes
block = zlapi.AhrsEuler()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.angle.roll = 10.0
block.angle.pitch = 45.0
block.angle.yaw = 60.0
# 打印
print(block.angle.roll, block.angle.pitch, block.angle.yaw)
xxxIdBlock
import ZlBusApi as zlapi
import ctypes
block = zlapi.xxxIdBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.cmdId = 0x01
block.subCmdId = 0x02
block.rfId = 0x03
block.dotId = 0x04
block.flowId = 0x05
block.userId = 0x06
# 打印
print(hex(block.cmdId), hex(block.subCmdId), hex(block.rfId), hex(block.dotId), hex(block.flowId), hex(block.userId))
e_Upload_DataFormat
import ZlBusApi as zlapi
import ctypes
# 打印
print(hex(zlapi.e_Upload_DataFormat.NEW_UPLOAD_DATA_QUATERNION | zlapi.e_Upload_DataFormat.NEW_UPLOAD_DATA_GYRO))
memsDataBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.memsDataBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.temperature = 25.0
block.quat.element.w = 1.0
block.quat.element.x = 0.0
block.quat.element.y = 0.0
block.quat.element.z = 0.0
block.acc.axis.x = 100.0
block.acc.axis.y = 200.0
block.acc.axis.z = 300.0
block.gyro.axis.x = 10.0
block.gyro.axis.y = 20.0
block.gyro.axis.z = 30.0
deviceStateBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.deviceStateBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.deviceState = 0xFFFFFFFF
# 打印
print(hex(block.deviceState))
batteryBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.batteryBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.mvOk = True
block.mv = 3300
# 打印
print(block.mv)
adcValueBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.adcValueBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.adcNums = 2
block.adcValue[0] = 2652
block.adcValue[1] = 1458
block.adcValue[2] = 0
# 打印
print(block.adcNums, block.adcValue[0], block.adcValue[1])
cmdOkBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.cmdOkBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.pkId.cmdId = 0x01
block.dataBlockId = 0xD501
block.dataLen = 0
# 打印
print(block.dataBlockId, block.dataLen)
cmdErrBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.cmdErrBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.pkId.cmdId = 0x01
block.dataBlockId = 0xD501
block.errCode = 0x01
# 打印
print(block.dataBlockId, block.errCode)
uploadDataFormatBlock_t (略……)
e_SampleHz (类型e_Upload_DataFormat,略……)
samplingHzBlock_t (略……)
e_UploadHz (略……)
uploadHzBlock_t (略……)
e_FiterParam (略……)
filterMapBlock_t (略……)
e_Convention (略……)
icDirBlock_t (略……)
devieRfNameBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.devieRfNameBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
rfName = b"RfName"
ctypes.memmove(ctypes.addressof(block.name), rfName, len(rfName))
# 打印
print(bytes(block.name).split(b'\0', 1)[0].decode('utf-8', errors='ignore'))
rfPowerBlock_t (略……)
e_LedColor (略……)
e_LedMode (略……)
ledRgbDataBlock_t (略……)
e_BaudRate (略……)
uartBaudRateBlock_t (略……)
blockSizeBlock_t (略……)
deviceMacBlock_t (略……)
deviceSnFullStrBlock_t (类似devieRfNameBlock_t, 略……)
deviceBoardVersionBlock_t (类似devieRfNameBlock_t, 略……)
deviceFirmwareVersionBlock_t (类似devieRfNameBlock_t, 略……)
dotIdBlock_t (略……)
bleConnIntervalBlock_t (略……)
e_AccRange (略……)
accRangeBlock_t (略……)
e_GyroRange (略……)
gyroRangeBlock_t (略……)
magEllipsoidCalParamBlock_t (略……)
e_TK_FlowIdFormat (略……)
flowIdFormatBlock_t (略……)
ahrsOffsetBlock_t (略……)
e_DataOutPort (略……)
dataPortBlock_t (略……)
dataPortMapBlock_t (略……)
adcFilterParam_t (略……)
fingerMapBlock_t (略……)
e_AdcEn (略……)
e_BlockSizeType (略……)
deviceBlock_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.deviceBlock_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.devId = 0x01
block.connState = 0x01
block.mac[:] = (ctypes.c_uint8 * 6)(0x11, 0x22, 0x33, 0x44, 0x55, 0x66)
device_name = b"TestDevice"
ctypes.memmove(ctypes.addressof(block.name), device_name, len(device_name))
# 打印
print(bytes(block.mac).hex(' '))
print(bytes(block.name).split(b'\0', 1)[0].decode('utf-8', errors='ignore'))
deviceBlockList_t
import ZlBusApi as zlapi
import ctypes
block = zlapi.deviceBlockList_t()
# 赋0,初始化
ctypes.memset(ctypes.addressof(block), 0, ctypes.sizeof(block))
# 赋值
block.nums = 2
block.list[0].mac[:] = (ctypes.c_uint8 * 6)(0x11, 0x22, 0x33, 0x44, 0x55, 0x66)
block.list[1].mac[:] = (ctypes.c_uint8 * 6)(0x22, 0x33, 0x44, 0x55, 0x66, 0x77)
device_name1 = b"TestDevice1"
device_name2 = b"TestDevice2"
ctypes.memmove(ctypes.addressof(block.list[0].name), device_name1, len(device_name1))
ctypes.memmove(ctypes.addressof(block.list[1].name), device_name2, len(device_name2))
# 打印
print(bytes(block.list[0].mac).hex(' '))
print(bytes(block.list[0].name).split(b'\0', 1)[0].decode('utf-8', errors='ignore'))
print(bytes(block.list[1].mac).hex(' '))
print(bytes(block.list[1].name).split(b'\0', 1)[0].decode('utf-8', errors='ignore'))
dongleSnFullStrBlock_t (类似deviceSnFullStrBlock_t, 略……)
deviceConnNumsBlock_t (略……)
identifyWayBlock_t (略……)
Dongle: scanBlock_t
import ZlBusApi as zlapi
import ctypes
#----------------------------------------------------------------------------------
# zlex.api.scanBlock_t
#----------------------------------------------------------------------------------
def use_api_DL_ScanBlock():
block = zlapi.scanBlock_t()
# 设置 Mac
block.mac[:] = (ctypes.c_uint8 * 6)(0x11, 0x22, 0x33, 0x44, 0x55, 0x66)
# 设置 name
device_name = b"TestDevice"
ctypes.memmove(ctypes.addressof(block.name), device_name, len(device_name))
print(bytes(block.mac).hex(' '))
print(bytes(block.name).split(b'\0', 1)[0].decode('utf-8', errors='ignore'))
timeStampSyncBlock_t (略……)
接口说明(略……)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
zlbusapi-0.5.12-py3-none-any.whl
(212.2 kB
view details)
File details
Details for the file zlbusapi-0.5.12-py3-none-any.whl.
File metadata
- Download URL: zlbusapi-0.5.12-py3-none-any.whl
- Upload date:
- Size: 212.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb7912082a2516f6e0eba9fd9bd1ce26e1049ae8d3f12ebe7aa0d747040ec42d
|
|
| MD5 |
f914c0a833483a4e27fdfa3ec3378e92
|
|
| BLAKE2b-256 |
f661a8bbe8f03539666aedbd81083076335c812f52babff42828bf964ac24e95
|