您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 基于mindwave脑电波进行疲劳检测算法的设计
这一节我将讲解thinkgear.h里面的函数和宏定义。这一些都可以在MindSetDevelopmentTools\ThinkGearCommunicationsDriver\docs\html\index.html这个路径中找到并打开。是使用doxygen软件生成的API帮助文档。下面我将做一下简单的翻译。其实最主要的功劳还是google翻译(^v^)?这些是API1THINKGEAR_APIintTG_GetDriverVersion()2获取当前TGCD库的版本34THINKGEAR_APIintTG_GetNewConnectionId()5返回一个控制ID,是一个整数。该ID是ThinkGear的连接对象。67/////////////////////下面的函数要用到TG_GetNewConnectionId////////////////////////////////8THINKGEAR_APIintTG_SetStreamLog(intconnectionId,constchar*filename)9做为一个ThinkGear的连接,将对它进行串行数据流字节的读取,它将自动记录这些字节数据到一个日志文件中。10THINKGEAR_APIintTG_SetDataLog(intconnectionId,constchar*filename)11作为一个ThinkGear连接器读取并解析来自它的串行数据流的数据包,它将记录数据解析到一个日志文件。12THINKGEAR_APIintTG_EnableBlinkDetection(intconnectionId,intenable)13启用或禁止眨眼检测14THINKGEAR_APIintTG_Connect(intconnectionId,constchar*serialPortName,intserialBaudrate,intserialDataFormat)15连接一个ThinkGear连接,通过给定的ConnectionId,在串行通信(COM)端口,以便与ThinkGear模块进行通信。16THINKGEAR_APIvoidTG_FreeConnection(intconnectionId)17释放与给定的ThinkGear连接相关联的所有内存。18///////////////////////////////////////////////////////////////////////////////////////////192021/////////////////////下面的函数要用到TG_Connect////////////////////////////////22THINKGEAR_APIintTG_ReadPackets(intconnectionId,intnumPackets)23尝试使用ThinkGear连接,通过指定的ConnectionId,读取串口数据流的numPackets。24THINKGEAR_APIintTG_GetValueStatus(intconnectionId,intdataType)25如果数据类型是由最近一次调用TG_ReadPackets后更新的。那么将返回非零。26THINKGEAR_APIfloatTG_GetValue(intconnectionId,intdataType)27通过指定dataType类型(该参数的取值为define的那些TG_DATA_开头的常量)将返回指定类型所取到的值。28THINKGEAR_APIintTG_SendByte(intconnectionId,intb)29通过ThinkGear连接器(大概是为了某个ThinkGear模块)发送一个字节。30THINKGEAR_APIintTG_SetBaudrate(intconnectionId,intserialBaudrate)31指定connectionid和串口波特率,然后尝试改变波特率。32THINKGEAR_APIintTG_SetDataFormat(intconnectionId,intserialDataFormat)33给出connectionid和串口数据格式,进而改变所使用的ThinkGear连接的数据包解析格式。34THINKGEAR_APIvoidTG_Disconnect(intconnectionId)35指定ID,从串行通信端口断开ThinkGear连接。36///////////////////////////////////////////////////////////////////////////////////////////37383940THINKGEAR_APIintTG_WriteStreamLog(intconnectionId,intinsertTimestamp,constchar*msg)41THINKGEAR_APIintTG_WriteDataLog(intconnectionId,intinsertTimestamp,constchar*msg)42THINKGEAR_APIintTG_EnableLowPassFilter(intconnectionId,intrawSamplingRate)43作为一个ThinkGear连接读取并解析原始脑电值(通过TG_ReadPackets函数),对原始波形数据,驱动程序会自动套用30Hz的低通滤波器。44THINKGEAR_APIintTG_EnableAutoRead(intconnectionId,intenable)45启用或禁用后台自动读取连接。这些是宏定义:1#defineTHINKGEAR_API__declspec(dllimport)//栈调用方式2#defineWINVER0x05013#defineTG_MAX_CONNECTION_HANDLES1284MaximumnumberofConnectionsthatcanberequestedbeforebeingrequiredtofreeone.5////////////////波特率TG_Connect()和TG_SetBaudrate()这两个函数会用到///////////////////////6#defineTG_BAUD_120012007#defineTG_BAUD_240024008#defineTG_BAUD_480048009#defineTG_BAUD_9600960010#defineTG_BAUD_576005760011#defineTG_BAUD_1152001152001213////////////////数据格式////////////////////////////////14#defineTG_STREAM_PACKETS015#defineTG_STREAM_5VRAW116#defineTG_STREAM_FILE_PACKETS21718////////////////获取哪一种数据类型TG_GetValue()这个函数会用到////////////////////19#defineTG_DATA_BATTERY0//应该是电量吧20#defineTG_DATA_POOR_SIGNAL1//连接质量21#defineTG_DATA_ATTENTION2//专注度22#defineTG_DATA_MEDITATION3//冥想度23#defineTG_DATA_RAW4//原始数据24#defineTG_DATA_DELTA5//δ波段25#defineTG_DATA_THETA6//θ脑波26#defineTG_DATA_ALPHA17//α脑波27#defineTG_DATA_ALPHA28//α脑波28#defineTG_DATA_BETA19//β脑波29#defineTG_DATA_BETA210//β脑波30#defineTG_DATA_GAMMA111//γ脑波31#defineTG_DATA_GAMMA212//γ脑波32#defineTG_DATA_BLINK_STRENGTH37//眨眼强度对于上面讲到的一些数据的解释,网上的资料真的有点少。对于上面提到的宏进行详解POOR_SIGNAL质量无符号的一个字节的整数值描述了神念科技NeuroSky的ThinkGear测量到的信号的强弱,它的范围值从0到200。零以外的值表示检测到了某种噪声信号。数值越高,表示测到的噪声越多。数值达到200说明神念科技NeuroSky的ThinkGear触点没有接触到用户的皮肤。这个值每秒都会有输出,显示了刚刚测量到的信号的质量。信号质量差的原因很多。按照严重程度,它们分别是:•传感器,地面,或者参考触点都没有在人的头上(即没有人戴ThinkGear的电极)。•传感器、地面或者参考触点没有与人的皮肤接触好(比如:头发夹在里面,或者耳机与头的尺寸不适合,或者耳机没有放置在头部正确的位置)。•佩戴者动作过多(即头部或身体过于晃动,或碰撞到耳机)•过多环境静电噪声(某些环境中会有强大的静电信号,或者在佩带传感器时人的静电积累)。•过多的非EEG生物噪声(即肌电,心电,眼电等)。正常使用神念科技NeuroSky的ThinkGear产品时也会不可避免的受到一定数量噪声的干扰,神念科技NeuroSky的过滤技术和eSense™专利算法都可以检测,改正,补偿,解释和容忍不同类型非脑电噪声。多数用户都只对eSense值感兴趣,如专注度Attention和冥想度Meditation,他们无需担心POOR_SIGNAL质量值,除非检测到POOR_SIGNAL质量值时专注度Attention和冥想度Meditation都无法更新。POOR_SIGNAL质量值对那些对噪音比较敏感的应用程序比较有用(正如一些医学或研究用的应用程序)或者只要检测出一点噪音数据就需要立刻作出反应的应用程序。默认情况下,数值的输出是有效的。通常一秒钟输出一次。eSense“专注度Attention”指数这个无符号的一个字节值表明用户当前的“eSense专注度Attention指数”,即使用者精神“集中度”水平或“注意度”水平的强烈程度,例如,当你能够进入高度专注状态并且可以稳定地控制你的心理活动,该指数的值就会很高。该指数值的范围是0到100。心烦意乱、精神恍惚、专注度Attention不集中以及焦虑等精神状态都将降低专注度Attention指数的数值。默认情况下,数值的输出是有效的。通常一秒钟输出一次。eSense“冥想度Meditation“指数这个无符号的一个字节值表明用户当前的“eSense冥想度Meditation指数”,即使用者精神“平静度”水平或“冥想度Meditation”水平。该指数值的范围是0到100。需要注意的是,冥想度Meditation指数反映的是使用者的精神状态,而不是其身体状态,所以,简单地进行全身肌肉放松并不能快速地提高冥想度Meditation水平。然而,对大多数人来说,在正常的环境下,进行身体放松通常有助于精神状态的放松。冥想度Meditation水平的提高与大脑活动的减少有明显的关联。长期观察结果表明:闭上眼睛可以使得大脑无需处理通过眼睛看到的景象从而降低大脑精神活动水平。所以,闭上眼睛通常是提高冥想度Meditation值的有效方法。心烦意乱、精神恍惚、焦虑、激动不安等精神状态以及感官刺激等都将降低冥想度Meditation指数的数值。默认情况下,数值的输出是有效的。通常一秒钟输出一次。原始波值raw(16位)此数值由两个字节组成,代表一个单一的原始波样品。它的值是一个从-32768到32767之间的十六位带符号整数。数值的第一个字节代表高位,第二个字节代表低位。要重建完整的原始波的值,只要简单地将第一个字节左移8个位,并且按位或第二个字节:RAWWaveValue(16-bit)
本文标题:基于mindwave脑电波进行疲劳检测算法的设计
链接地址:https://www.777doc.com/doc-2723837 .html