X-BCI
入门指南
1. X-BCI硬件使用
1.1. 1通道脑机设备
1.2. 2/4通道脑机设备
1.3. 8通道脑机设备
1.4. 设备基础操作
2. X-BCI软件使用
2.1. PC-GUI
2.2. APP
2.3. 系统平台
2.3.1. 账号的注册和登录
2.3.2. 账号的密码修改和退出
2.4. SDK
3. 数据转换方式
3.1. 各个通道设备EEG数据结构表
3.1.1. 1通道脑机设备
3.1.2. 2通道脑机设备
3.1.3. 4通道脑机设备
3.1.4. 8通道脑机设备
3.1.5. 16通道脑机设备
3.2. EEG数据输入和输出(电压)的转换
3.3. 导联数据结构说明
4. 读取数据的方式和数据结构
4.1. 从设备读取数据
4.1.1. 数据实例
4.1.1.1. 1通道脑机设备
4.1.1.2. 2通道脑机设备
4.1.1.3. 4通道脑机设备
4.1.1.4. 8通道脑机设备
4.1.1.5. 16通道脑机设备
4.2. 从PC-GUI获取数据
4.3. 从APP读取数据
4.4. 从系统平台读取数据
4.5. 算法模型调用的数据
4.5.1. 1通道脑机算法
4.5.1.1. 注意力二分类
4.5.1.2. 疲劳三分类
4.5.1.3. 眩晕三分类
4.5.2. 2通道脑机算法
4.5.2.1. 注意力三分类
4.5.2.2. 疲劳三分类
4.5.2.3. 眩晕三分类
4.5.3. 4通道脑机算法
4.5.3.1. 情绪四分类
4.5.4. 8通道脑机算法
4.5.4.1. 注意力三分类
4.5.4.2. 疲劳三分类
4.5.4.3. 情绪三分类
5. 实例
5.1. 从PC-GUI中获取数据
5.1.1. 基础蓝牙配置
5.1.2. EEG数据采集
5.1.3. IMU数据采集
5.2. 从APP中获取数据
5.3. 从系统平台中获取数据
5.3.1. PC-GUI上传数据
5.3.2. APP上传数据
5.3.3. 从系统平台下载数据
5.4. 算法调用结果的数据获取
5.5. 功能展示
5.5.1. APP功能展示
5.5.1.1. 阻抗测试
5.5.1.2. EEG信号
5.5.1.3. IMU信号
5.5.2. PC-GUI功能展示
5.5.2.1. 软件功能区介绍
5.5.2.2. 软件功能介绍
5.5.2.3. 软件使用
5.5.3. 系统平台功能展示
5.5.3.1. 控制面板
5.5.3.2. 设备平台
5.5.3.3. 业务管理
5.5.3.4. 数据平台
5.5.3.5. 系统管理
5.5.3.6. 系统设置
5.5.4. Marker功能展示
5.5.4.1. Marker工具设备
5.5.4.2. Marker工具连接
5.5.4.3. Marker数据
6. 开发流程
6.1. 面向X-BCI设备的开发流程
6.2. 面向X-BCI数据采集的开发流程
6.3. 面向X-BCI系统的开发流程
6.4. 基于SDK的开发流程
6.4.1. 使用示例
6.4.2. 项目结构
6.4.3. API参考
6.4.4. 开发者指南
7. 注意事项
搜索结果
没有相关内容~~
6.4.1. 使用示例
最新修改于
2025-08-01 12:46
* 采集电池数据流 以下示例展示了如何连接到设备并采集10秒的电池和RSSI数据 ``` import asyncio import sys from ble_sdk.client import BleClient from ble_sdk.constants import DeviceType from loguru import logger # 配置应用日志 logger.remove() logger.add( sys.stderr, level="INFO", filter=lambda record: not record["extra"].get("sdk_internal", False), ) DEVICE_ADDRESS = "D2:43:D5:88:4D:9A" # 替换为你的设备地址 def my_data_handler(data): """用户自定义的回调函数,用于处理接收到的数据""" logger.info(f"接收到数据: {data}") async def main(): client = BleClient(address=DEVICE_ADDRESS, device_type=DeviceType.BLE_8) try: async with client: logger.info("设备已连接。") await client.start_battery_stream(my_data_handler) logger.info("电池数据流已启动,监控10秒...") await asyncio.sleep(10) await client.stop_battery_stream() logger.info("电池数据流已停止。") except Exception as e: logger.error(f"发生错误: {e}") if __name__ == "__main__": asyncio.run(main()) ``` * 原始数据模式示例 SDK支持返回去除帧头帧尾的原始16进制数据,便于自定义处理 ``` import asyncio from ble_sdk.client import BleClient from ble_sdk.constants import DeviceType def raw_data_handler(data): """处理原始数据的回调函数""" if isinstance(data, bytearray): print(f"原始数据 (长度={len(data)}): {data.hex()}") else: print(f"解析数据: {data}") async def main(): client = BleClient(address="XX:XX:XX:XX:XX:XX", device_type=DeviceType.BLE_8) async with client: # 启动EEG原始数据流 await client.start_eeg_stream(raw_data_handler, raw_data_only=True) await asyncio.sleep(10) await client.stop_eeg_stream() asyncio.run(main()) ``` * 混合数据流示例混合模式可以同时采集主数据流(EEG或Impedance)、IMU和Lead数据 ``` import asyncio from ble_sdk.client import BleClient from ble_sdk.constants import DeviceType def mixed_data_handler(data): """处理混合数据的回调函数""" print(f"时间戳: {data['timestamp']}") print(f"主数据类型: {data['type']}") # 主数据(EEG或Impedance) if data['type'] == 'eeg': eeg_data = data['eeg_data'] if isinstance(eeg_data, bytearray): print(f"EEG原始数据: {eeg_data.hex()}") else: print(f"EEG通道数据: {len(eeg_data['channels'])} 通道") # IMU数据 imu_data = data.get('imu_data') if imu_data: if isinstance(imu_data, bytearray): print(f"IMU原始数据: {imu_data.hex()}") else: print(f"IMU数据: 加速度={imu_data['acceleration']}") # Lead数据 lead_data = data.get('lead_data') if lead_data: if isinstance(lead_data, bytearray): print(f"Lead原始数据: {lead_data.hex()}") else: print(f"Lead状态: P={lead_data['p_status']}") async def main(): client = BleClient(address="XX:XX:XX:XX:XX:XX", device_type=DeviceType.BLE_8) async with client: # 启动混合数据流,主数据为EEG,启用原始数据模式 await client.start_mixed_stream( mode="eeg", user_callback=mixed_data_handler, raw_main_data_only=True # 所有数据都返回原始格式 ) await asyncio.sleep(30) await client.stop_mixed_stream() asyncio.run(main()) ``` * 使用命令行工具 ( sdk\_cli\_monitor.py ) 我们提供了一个强大的命令行工具,用于快速测试所有数据流。 启动EEG数据流,持续20秒: python examples/sdk\_cli\_monitor.py --mode eeg --duration 20 启动EEG原始数据流: python examples/sdk\_cli\_monitor.py --mode eeg --raw\_data --duration 10 启动混合数据流(主数据为阻抗),持续30秒: python examples/sdk\_cli\_monitor.py --mode mixed --mixed\_primary impedance -- duration 30 启动混合数据流并输出原始数据: python examples/sdk\_cli\_monitor.py --mode mixed --mixed\_primary eeg --raw\_data -- duration 20 启动IMU数据流,并指定设备地址: python examples/sdk\_cli\_monitor.py --mode imu --address "XX:XX:XX:XX:XX:XX" -- raw\_data 查看所有可用参数: python examples/sdk\_cli\_monitor.py --help * 算法的使用 ``` from ble_sdk.algo.eeg import get_eeg_signal # input_list: 去掉header 和 tail 长度 192 的 eeg 数据 # channel_num: 1 2 3 4 通道数 nddata, psddd, ffttt = get_eeg_signal(input_list, channel_num=1) print(nddata.shape, psddd.shape, ffttt.shape) ```
请输入访问密码
开始访问