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) ```

备案号:京ICP备2022008549号-8

开始访问