Skip to main content

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


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

If you're not sure about the file name format, learn more about wheel file names.

zlbusapi-0.5.12-py3-none-any.whl (212.2 kB view details)

Uploaded Python 3

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

Hashes for zlbusapi-0.5.12-py3-none-any.whl
Algorithm Hash digest
SHA256 fb7912082a2516f6e0eba9fd9bd1ce26e1049ae8d3f12ebe7aa0d747040ec42d
MD5 f914c0a833483a4e27fdfa3ec3378e92
BLAKE2b-256 f661a8bbe8f03539666aedbd81083076335c812f52babff42828bf964ac24e95

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page