【OpenBCI】(2):原始数据包解码
去年我写了一篇OpenBCI的博客【OpenBCI】:Matlab实时读取数据流(labstreaminglayer),讲述如何用python的SDK将OpenBCI数据读取到Matlab中。
后来我想,既然是串口通信,能不能用Matlab串口直接读取OpenBCI的数据,跳过官方的python。答案是肯定的。下面讲述一下我利用串口调试助手对OpenBCI原始数据包的解码过程及其数据格式,这样大家可以用任何语言(例如C#,.Matlab等)的串口通信去开发OpenBCI,不再拘泥于python。
1.连接串口
要利用串口调试助手去解码OpenBCI数据,我们先下载一个串口调试助手【串口调试助手下载】
打开串口调试助手,设置串口格式如下:
串口波特率:115200
数据位:8
停止位:1
校验位:无
选择OpenBCI对应的串口号(我的是COM3),打开串口。此时我们再重启一下OpenBCI就可以看到,串口调试助手显示以下信息。代表OpenBCI就位。
2.获取数据包
此时给串口发送不同的字母代表不同的指令:
b--------------begin, 开始采集数据
s--------------stop,停止采集数据
f--------------filter,添加60Hz工频滤波器(国内为50Hz,暂时用不到)
g--------------关闭60Hz工频滤波器(国内为50Hz,暂时用不到)
更多指令参考官方网站[OpenBCI指令集]
我们在串口调试助手下面的发送框里,输入字母“b”,然后点击发送,OpenBCI就开始输出数据到串口,我们可以看到滚动的数据流。
3.数据包解码
因为OpenBCI采样频率为250Hz,所以每秒有250个数据包,部分数据包放大看一下,如下图所示:
图中每一行代表一个数据包,每个数据包由33个字节组成,OpenBCI的所有采集数据(包括8通道的脑电数据和陀螺仪数据)都在这些数据包里。例如上图中的第一行,其数据格式如下:
每个脑电通道数据由3个字节组成,该数据为:低字节序 有符号整数(little endian signed integer),即:
第一个字节小于等于127(0x7F)时,该数为正整数
如通道数据0x29 0x96 0x49 即为 2725449第一个字节大于127(0x7F)时,该数为负整数
如通道数据0xE1 0x96 0x49,即为 -1993143
可以理解为 0x01 0x00 0x00 0x00 - 0xE1 0x96 0x49 = -1993143
计算出的整数乘以系数scale_fac_uVolts_per_count = 0.022351744455307063 即可得到单位为uV的电压数据。
4.结束语
知晓了OpenBCI的数据包格式,这样大家可以用任何语言(例如C#,.Matlab等)的串口通信去读取OpenBCI的原始数据,不再拘泥于官方的python SDK。
是以为记!
【OpenBCI】(2):原始数据包解码相关推荐
- 使用Packet.dll和npf.sys实现原始数据包的发送和接收
相应源码下载地址: http://download.csdn.net/source/3521479 有人可能问我为什么不直接用wpcap.dll,那个不但功能更强大还稳定.那是因为我这个功能很简单 ...
- linux获取网卡协议地址,读取linux下的网络设备的mac地址与发送原始数据包 (2011-11-23 20:11)...
一:linux下的网络设备 linux的网络设备信息都在/proc/net/dev,从这里我们可以得到所有网卡的名字,如eth0, eth1等等 root@dlrc-desktop:/home/dlr ...
- 使用tcpdump查看原始数据包
点击上方 "后端架构师"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 关注订阅号「后端架构师」,收看更多精彩内容 每日英文 Nothing can ...
- 用Go处理原始数据包
文章目录 1. gopacket基本使用 检索可用设备 捕获并过滤数据包 2. 嗅探用户凭证 3. 绕过SYN泛洪保护进行端口扫描 SYN Cookie 绕过 1. gopacket基本使用 Goog ...
- 肝了三天,万字长文教你玩转 tcpdump,从此抓包不用愁
图源 | 视觉中国 来源|Python编程时光(ID: Cool-Python) 今天要给大家介绍的一个 Unix 下的一个 网络数据采集分析工具 -- Tcpdump,也就是我们常说的抓包工具. 与 ...
- 【FFmpeg】FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 | 复用 | 解复用 )
文章目录 一.FFmpeg 简介 二.FFmpeg 相关术语 1.容器 2.媒体流 3.数据帧 4.数据包 5.编解码器 6.复用 7.解复用 博客资源 一.FFmpeg 简介 FFmpeg 是 &q ...
- 如何处理网络丢包故障?—Vecloud微云
我们在使用ping命令对目的站进行询问时,数据包由于各种原因在信道中丢失的现象,就是网络丢包.网络丢包是网络中常见的故障之一,它会引起网速降低甚至造成网络中断. 以下是几种常见的网络丢包故障现象及处理 ...
- SSL加密包解析的几个概念梳理
1.DPI技术初识 DPI(Deep PacketInspection)深度包检测技术是在传统IP数据包检测技术(OSI L2-L4之间包含的数据包元素的检测分析)之上增加了对应用层数据的应用协议识别 ...
- Linux抓包工具tcpdump命令详解
1.简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中 ...
最新文章
- JavaScript数学,四舍五入到小数点后两位[重复]
- 使用python获取路径问题
- PHP递归复制文件夹的类
- 提高数据库处理查询速度
- idea新增文件自动添加到版本控制
- slf4j 和 log4j2 架构设计
- 数控车椭圆编程实例带图_邹军:数控车床任意位置椭圆宏程序的编程
- 深度学习岗位面试记录
- 顺序表的类型定义与基本操作
- 【我们一起写框架】MVVM的WPF框架(一)—序篇
- xp电脑不能访问服务器共享文件夹,XP系统电脑无法访问WIN7共享文件夹怎么办
- 【arcgis中两种路网密度计算结果对比】
- 晚还款没事,各行信用卡容时容差服务大汇总!
- linux单片机用什么数据库,基于ARM-Linux的SQLite嵌入式数据库的研究 -单片机-电子工程世界网...
- 南京理工大学计算机考研大纲,2021南京理工大学考研大纲参考书目
- 数值分析快速复习(1)——Matlab数值积分
- 谷歌五笔输入法电脑版_新手学拼音还是学五笔打字(看完你就明白)
- go juju/ratelimit 简单使用
- 新能源汽车行业研究报告
- 2021闲鱼副业月入过万实战课程:从开店到选择货源到引流