跳转到主要内容

Blackrock Neurotech Cerebus设备的纯Python接口

项目描述

PyPI version

pycbsdk

用于与Blackrock Cerebus设备通信的纯Python包

快速入门

在shell中...

pip install pycbsdk

然后在python中

from pycbsdk import cbsdk


params_obj = cbsdk.create_params()
nsp_obj = cbsdk.get_device(params_obj)  # NSPDevice instance. This will be the first argument to most API calls. 
err = cbsdk.connect(nsp_obj)  # Bind sockets, change device run state, and get device config.
config = cbsdk.get_config(nsp_obj)
print(config)

您还可以尝试使用提供的测试脚本python -m pycbsdk.examples.print_rates或通过快捷方式:pycbsdk_print_rates

介绍

pycbsdk是一个用于与Blackrock Neurotech Cerebus设备通信的纯Python包。它基于Blackrock的cbsdk,但没有任何代码共享,并且pycbsdk不受Blackrock支持。

pycbsdk的API设计旨在模仿C库。实际上,这个库的主要目标之一是帮助在其他语言中原型化库。毕竟,在没有底层编译语言进行大量处理的情况下,Python处理高吞吐量数据是一个较差的选择。

然而,它本身已经很实用!迄今为止,它足够用于一些快速测试脚本,而且它甚至比CereLink丢包更少。所以,请使用它,并做出贡献!我们非常乐意看到API扩展以支持更多功能,甚至有一个额外的“Pythonic”API。

设计

初始化时,NSPDevice实例配置其套接字(但尚未建立连接),为设备状态的镜像分配内存,并注册回调以监控配置状态。

当与设备的连接建立时,将创建并启动两个线程

  • CerebusDatagramThread
    • 使用asyncio检索数据报
    • 切割成通用数据包
    • 将数据包转换为它们的原生类型
    • 将数据包排队到PacketHandlerThread
  • PacketHandlerThread
    • 更新设备状态(例如,镜像设备时间)
    • 根据数据包类型调用已注册的回调。

connect() 默认具有 startup_sequence=True。这将导致 SDK 尝试将设备置于运行状态。否则,它将保持其原始运行状态。

建立连接后,客户端可以使用 API 函数

  • 获取/设置配置
    • set_configset_channel_config 目前还没有做任何事情
    • set_channel_spk_configset_channel_config_by_packet 执行一些操作并且是阻塞的。
    • get_config 默认是非阻塞的,它将简单地读取配置的本地镜像。但是,如果将 force_refresh=True 作为 kwarg 传递,则此函数将阻塞并等待从设备收到回复。请谨慎使用。
  • 注册一个回调,以便在数据出现在处理线程上时立即接收数据。

这些和更多内容将在未来的某个时候出现在文档中...

限制

  • 此库对端口 51002 上的 UDP 套接字拥有独占控制权,因此不能与 Central 或其他任何 pycbsdk 实例一起使用。每台机器上只有一个 pycbsdk Central 实例。
    • CereLink 的 cerebus.cbpy 使用共享内存,因此可以与 Central 或其他 cbpy 实例并行工作。
  • API 仍然非常稀疏且功能有限。
  • 目前,Python 仍然有 GIL。这意味着尽管使用了线程,但如果您的回调函数运行缓慢并阻止了 PacketHandlerThread,这可能会阻止数据报检索,并最终导致数据包丢失。
    • 回调可能会将数据入队到更长的运行 multiprocessing 进程进行处理。
    • 一旦可用,请切换到 无 GIL Python
    • 使用 pycbsdk 在使用真实并行性的语言中原型化应用程序。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

pycbsdk-0.1.3.tar.gz (38.8 kB 查看散列)

上传时间

构建分布

pycbsdk-0.1.3-py3-none-any.whl (48.8 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面