Blackrock Neurotech Cerebus设备的纯Python接口
项目描述
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_config
和set_channel_config
目前还没有做任何事情set_channel_spk_config
和set_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 查看散列)
关闭
pycbsdk-0.1.3.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | c9d80a826c2a0bf346da0f1afcc4f99f4103f8739ccca517c53ffb06a49ed39e |
|
MD5 | 7cc822ac1f15ac31b0a111ab62d86eb4 |
|
BLAKE2b-256 | 4e50092914e46587c78e57401f21e6805042168012661a2c29e81cd435fe1256 |
关闭
pycbsdk-0.1.3-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 4463d6dde19c5ad499f5519ce4885b856d25406e6c22b511b46d70a0f569612e |
|
MD5 | e86c1439b90970ee8c6ca77683a028f4 |
|
BLAKE2b-256 | c0500f52fb5b390a3158bea491f500257c11a79c3b162bd4be007853b72b319f |