对于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 );
}