对于TGCD的开发,神念科技提供的文件包括,头文件thinkgear.h,thinkgear.lib,thinkgear.dll,有这三个文件,在win32下开发就不是什么难事了吧
如果是java语言开发,那么有ThinkGear.java
如果是C#,那么可以参考ThinkGear.cs
我们这里只讲述C接口,对于C接口,在开发包目录下还有个示例程序thinkgear_testapp.c程序,你可以用vc打开,并链接上thinkgear.lib即可以运行。
将示例程序整理如下:
/******************************************************************* * Copyright(c) 2014-2015 传智播客 * All rights reserved. * * 文件名称: main.cpp * 简要描述: 该文件演示了脑波程序通过TGCD与设备通信 * * 创建日期: 2014-02-03 * 作者: * 说明: 1.0 * * 修改日期: * 作者: * 说明: ******************************************************************/ #include <Windows.h> #include <stdio.h> #include "thinkgear.h" void wait() { system("pause"); } int main() { char *comPortName = NULL; int dllVersion = 0; // 动态库版本 int connectionId = 0; // 连接ID int packetsRead = 0; // 包数量 int errCode = 0; // 错误码 /* 获取动态库版本 */ dllVersion = TG_GetDriverVersion(); printf( "ThinkGear DLL version: %d\n", dllVersion ); /* 获取连接ID */ connectionId = TG_GetNewConnectionId(); if( connectionId < 0 ) { printf("ERROR: TG_GetNewConnectionId() returned %d.\n", connectionId ); wait(); exit( EXIT_FAILURE ); } /* 原始数据日志 */ errCode = TG_SetStreamLog( connectionId, "streamLog.txt" ); if( errCode < 0 ) { printf("ERROR: TG_SetStreamLog() returned %d.\n", errCode ); wait(); exit( EXIT_FAILURE ); } /* ThinkGear数据日志 */ errCode = TG_SetDataLog( connectionId, "dataLog.txt" ); if( errCode < 0 ) { printf("ERROR: TG_SetDataLog() returned %d.\n", errCode ); wait(); exit( EXIT_FAILURE ); } /* 准备连接的COM口 */ comPortName = "\\\\.\\COM3"; // \\.\COM3 errCode = TG_Connect( connectionId, comPortName, TG_BAUD_9600, TG_STREAM_PACKETS ); if( errCode < 0 ) { printf("ERROR: TG_Connect() returned %d.\n", errCode ); wait(); exit( EXIT_FAILURE ); } if( 0==TG_EnableBlinkDetection(connectionId, 1)) // 启动眨眼检测 { printf("Success enalbe blink"); } /* 不停的读取数据 */ packetsRead = 0; while(1/* packetsRead < 10*/ ) { //Sleep(50); /* 读一个报文 */ errCode = TG_ReadPackets( connectionId, 1 ); /* 如果这个报文读取成功 */ if( errCode == 1 ) { int att, det, sig; #if 0 /* 尝试读眨眼 */ if(( errCode = TG_GetValueStatus(connectionId, TG_DATA_BLINK_STRENGTH)) != 0 ) { /* 读取专注度值 */ printf("blink: %d\n", TG_GetValue(connectionId, TG_DATA_BLINK_STRENGTH) ); system("pause"); } #endif if(( errCode = TG_GetValueStatus(connectionId, TG_DATA_ATTENTION)) != 0 ) { att = TG_GetValue(connectionId, TG_DATA_ATTENTION) ; det = TG_GetValue(connectionId, TG_DATA_MEDITATION); sig = TG_GetValue(connectionId, TG_DATA_POOR_SIGNAL); printf("attentin = %d, meditation=%d, signal=%d\n", att, det, sig); } } else { printf("ReadPackets:errcode=%d\n", errCode); Sleep(1000); } } /* 释放连接 */ TG_FreeConnection( connectionId ); /* End program */ system("pause"); return( EXIT_SUCCESS ); }