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

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

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

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

posted @ 2015-01-21 10:23  Bodyjiang  阅读(5878)  评论(2编辑  收藏  举报