#实时 #神经科学 #脑电图 #神经天空 #脑电波 #脑机接口

bin+lib rustymind

NeuroSky MindWave EEG 头戴设备的驱动程序、解析器和实时绘图器

4 个版本

0.1.3 2021 年 6 月 22 日
0.1.2 2021 年 6 月 21 日
0.1.1 2021 年 6 月 21 日
0.1.0 2021 年 6 月 21 日

#249 in 可视化

自定义许可协议

565KB
636

rustymind

crates.io api_doc

锈脑是用纯 Rust 编写的 NeuroSky MindWave EEG 头戴设备的驱动程序和解析器。您可以使用它连接、交互并实时绘制头戴设备的数据。

解析器基于 NeuroSky 发布的 MindWave 通信协议

下面是使用基于 rustymind 解析器的 CLI 工具 rustymind-plot 绘制的实时脑电图的截图。

Real time plot screenshot

入门

rustymind-plot 运行时需要两个参数

  • MindWave 设备路径。在 Mac 上,路径可能是 /dev/tty.usbserial-10000 的格式
  • 头戴设备 ID(打印在电池盒内部)
cargo run --bin rustymind-plot "/dev/tty.usbserial-10000" a05f

如果不传递头戴设备 ID 参数,则模块将自动连接到它找到的任何头戴设备。

要使用 rustymind 作为库,您需要使用 connect_headset 函数和 Parser 结构。例如

use rustymind::{connect_headset, PacketType, Parser};

let mut port = connect_headset("/dev/tty.usbserial-10000", b"\xa0\x5f")?;
let mut buffer: Vec<u8> = vec![0; 2048];
let mut parser = Parser::new();

loop {
    let bytes_read = port.read(buffer.as_mut_slice()).unwrap();
    for i in 0..bytes_read {
        if let Some(x) = parser.parse(buffer[i]) {
            for r in x {
                match r {
                    PacketType::Attention(value) => {
                        println!("Attention value = {}", value);
                    }
                    PacketType::Meditation(value) => {
                        println!("Meditation value = {}", value);
                    }
                    PacketType::AsicEeg(value) => {
                        println!("EEG power values = {:?}", value);
                    }
                    _ => (),
                }
            }
        }
    }
}

此软件不适用于医疗诊断或治疗。

依赖项

~15–26MB
~217K SLoC