蓝牙解析数据及文档解析说明

摘要:
如果连接成功,您应该看到类似下图的数据。因此,一个小的包只包含一个对开发人员有用的数据,即rawdata。可以说,一个小数据包是一个原始数据,每秒有512个原始数据。如何解析数据包中的原始数据?丢包率低于10%不会影响最终结果。在原始数据的波形上,眨眼就是一个很大的峰值。

1.建议用RealTerm从串口抓数据,下载地址:
http://realterm.sourceforge.net/index.html#downloads_Download
2.打开RealTerm,指定显示方式:在Displa标签页,选择Hex+space。 下图中红圈标记
的地方:蓝牙解析数据及文档解析说明第1张

3.指定波特率,端口,点击Open按钮。如果连接成功,你应该会看到类似下图的数据。

蓝牙解析数据及文档解析说明第2张

4.说明:
TGAM大约每秒钟发送513个包,注意是“大约每秒钟”,意思就是发送包的个数是不会变的,只是发送513个包所花费的时间是一秒左右。
发送的包有小包和大包两种:小包的格式是AA AA 04 80 02 xxHigh xxLow xxCheckSum
前面的AA AA 04 80 02 是不变的,后三个字节是一只变化的,xxHigh和xxLow组成了原
始数据rawdata,xxCheckSum就是校验和。所以一个小包里面只包含了一个对开发者来
说有用的数据,那就是rawdata,可以说一个小包就是一个原始数据,大约每秒钟会有
512个原始数据。
那怎么从小包中解析出原始数据呢?rawdata = (xxHigh << 8) | xxLow;
if(rawdata > 32768){ rawdata =
65536; }
现在原始数据就这么算出来了,但是在算原始数据之前,我们先应该检查校验和。校验
和怎么算呢?sum = ((0x80 + 0x02 + xxHigh + xxLow)^ 0xFFFFFFFF) & 0xFF
什么意思呢?就是把04后面的四个字节加起来,取反,再取低八位。
如果算出来的sum和xxCheckSum是相等的,那说明这个包是正确的,然后再去计算
rawdata,否则直接忽略这个包。丢包率在10%以下是不会对最后结果造成影响的。
现在,原始数据出来了,那我们怎么拿信号强度Signal,专注度Attention,放松度
Meditation,和8个EEG Power的值呢?就在第513个这个大包里面,这个大包的格式是相
当固定的,我们就拿上图中的数据来一个字节一个字节地说明他们代表的含义:

红色的是不变的
AA 同步
AA 同步
20 是十进制的32,即有32个字节的payload,除掉20本身+两个AA同步+最后校验和
02 代表信号值Signal
C8 信号的值
83 代表EEG Power开始了
18 是十进制的24,说明EEG Power是由24个字节组成的,以下每三个字节为一组
18 Delta 1/3
D4 Delta 2/3
8B Delta 3/3
13 Theta 1/3
D1 Theta 2/3
69 Theta 3/3
02 LowAlpha 1/3
58 LowAlpha 2/3
C1 LowAlpha 3/3
17 HighAlpha 1/3
3B HighAlpha 2/3
DC HighAlpha 3/3
02 LowBeta 1/3
50 LowBeta 2/3
00 LowBeta 3/3
03 HighBeta 1/3
CB HighBeta 2/3
9D HighBeta

03 LowGamma 1/3
6D LowGamma 2/3
3B LowGamma 3/3
03 MiddleGamma 1/3
7E MiddleGamma 2/3
89 MiddleGamma 3/3
04 代表专注度Attention
00 Attention的值(0到100之间)
05 代表放松度Meditation
00 Meditation的值(0到100之间)
D5 校验和
解析EEG Power:拿Delta举例,Delta 1/3是高字节,Delta 1/3是中字节,Delta 1/3是低
字节;高字节左移16位,中字节左移8位,低字节不变,然后将他们或运算,得到的结
果就是Delta的值。这些值是无符号,没有单位的,只有在和其他的Beta,Gamma等值
相互比较时才有意义。

5.关于眨眼
TGAM芯片 本身是不会输出眨眼信号的,眨眼是用rawdata原始数据算出来的。表现在原
始数据的波形上,眨眼就是一个很大的波峰。只要用代码检测这个波峰的出现,就可以
找到眨眼的值了。
还有,眨眼其实和脑电波一点儿关系都没有,眨眼只是眼睛动的时候在前额产生的肌
(肉)电,混合在了脑波原始数据中。

若需要源码可以联系我www.jiangyong.net.cn,里面有我的QQ

免责声明:文章转载自《蓝牙解析数据及文档解析说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何统计代码行执行的时间?进行API开发选gRPC还是HTTP APIs?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

最优化算法4.0【信赖域方法】

思路:线搜索最优化算法,一般是先确定迭代方向(下降方向),然后确定迭代步长;信赖域方法直接求得迭代位移; 算法分析 第(k)次迭代,确定迭代位移的问题为(信赖域子问题): [min q_k(d)=g_k^Td+frac{1}{2}d^TB_kd_k ] [s.t.quad ||d||leq Delta_k ] 其中(Delta_k)为信赖域半径 对于求得的...

海明码距离及检错纠错问题和CRC校验

海明校验码 两个长度相等的字符串的海明距离是在相同位置上不同的字符的个数,也就是将一个字符串替换成另一个字符串需要的替换的次数。海明距离与检错和纠错的关系: 1.海明距离为d+1的编码能检测出d位差错。 因为在距离为d+1的检验码中,只改变d位的值,不可能产生另一个合法码。如奇偶校验码,海明距离为2,能查出单个错。 2.海明距离为2d+1的编码,能纠正d位...

获取电脑实时CPU使用率

要求:实现一个计算电脑实时CPU占有率的测试程序,将多种方法获取结果显示在对话框上,动态显示。 实现: 1、新建基于对话框的MFC应用程序,Dialog上添加控件,为控件添加CSting类型变量m_RateResult1、m_RateResult2、m_RateResult3,        2、创建线程类(Thread.h和Thread.cpp),在...

InnoDB存储引擎的记录格式,数据页的结构

  InnoDB是存储引擎,负责将磁盘的数据按照我们的逻辑概念“表”那样存取,这里首先总结下表中每一行数据是以何种形式被InnoDB存储再磁盘的。InnoDB的行记录存储形式有很多种,compact、dynamic、redundant、compressed等。下面介绍compact格式的行数据结构: 每一行的数据组成   除了我们自己的真实数据外,为了提高...

数学基础系列(二)----偏导数、方向导数、梯度、微积分

一、偏导数 对于一元函数y=f(x)只存在y随x的变化,但是二元函数z=f(x,y)存在z随x变化的变化率,随y变化的变化率,随x﹑y同时变化的变化率。如下图所示 1、偏导数定义 设函数$z=f(x,y)$在点(x0,y0)的某个邻域内有定义,定y=y0,一元函数$f(x_{0},y_{0})$在点x=x0处可导,即极限$limlimits_{Delta...

10款你应该了解的开源安全工具

Nessus Nessus可以说是是目前全世界最多人使用的系统漏洞扫描与分析软件。根据sectools.org的数据显示,Nessus是最受欢迎的漏洞扫描器,也是目前使用的第三大流行安全程序。 Nessus有免费版和商业版。目前的版本,Nessus 7.1.0,是一个商业版本,虽然它是免费的个人家庭使用。目前2005年的版本仍然是开源免费的。 虽然Ten...