TGC是一个后台应用程序,它负责和脑波设备建立连接,并获取数据,另一方面,它打开了一个端口在监听,让二次开发的应用程序,可以通过socket连接到这个TGC后台程序,获取脑波数据并展示,这种接口适合非常高级的语言开发的游戏或者是其他应用,比如用flash来开发的游戏。这里演示还是用c语言,演示连接端口以及获取数据的方法。

演示代码如下:

/*******************************************************************
* Copyright(c) 2014-2015 传智播客
* All rights reserved.
*
* 文件名称: main.cpp
* 简要描述: 该文件演示了脑波程序通过TGC与设备通信
*
* 创建日期: 2014-02-03
* 作者:
* 说明: 1.0
*
* 修改日期:
* 作者:
* 说明:
******************************************************************/
#include <WinSock2.h>
#include <stdio.h>
#include <json.h> extern char* SHA1(const unsigned char *pIn, char *pOut, int nOutLen); int main()
{
// 初始化socket环境
WORD wVersionRequested;
WSADATA wsaData;
int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0) {
printf("WSAStartup failed with error: %d\n", err);
return 1;
} if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
printf("Could not find a usable version of Winsock.dll\n");
WSACleanup();
return 1;
}
else
printf("The Winsock 2.2 dll was found okay\n"); // 连接thinkgear,端口是13854
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(13854);
int ret = connect(sock, (const sockaddr*)&addr, sizeof(addr));
if(ret < 0)
{
printf("connect error\n");
return 0;
} // 与TGC通信的数据格式是json包,具体的json包格式可以参考开发文档
Json::FastWriter writer;
Json::Reader reader; Json::Value packet;
std::string str; // 设置TGC 服务
packet.clear();
packet["enableRawOutput"] = false; // 不要原始数据
packet["format"] = "Json"; // 数据格式为json
// root.append(packet);
str = writer.write(packet);
printf("json=%s\n", str.c_str());
ret = send(sock, str.c_str(), str.length(), 0); // 发送数据给TGC
printf("ret=%d\n", ret); char buf[2048]={0};
while(1)
{
int index = 0;
memset(buf, 0, sizeof(buf));
//Sleep(1000); while(1)
{
ret = recv(sock, &buf[index], 1, 0); // 收报文,\r为报文结束标记
if(ret > 0)
{
if(buf[index] == '\r')
{
buf[index] = 0;
break;
}
index++;
}
} // 分析json数据包
reader.parse(buf, packet); // 输出json报文
printf("%s\n", writer.write(packet).c_str()); // 输出脑波数据
str = writer.write(packet);
if(strstr(str.c_str(), "eSense"))
{
printf("%s\n", str.c_str());
// system("pause");
} // 输出眨眼数据,用TGC接口可以获取用户是否眨眼
if(strstr(str.c_str(), "blink"))
{
printf("%s\n", str.c_str());
system("pause");
} } system("pause"); return 0;
}

脑波设备mindwaveTGC接口示例的更多相关文章

  1. 脑波设备mindwave TGCD接口开发示例

    对于TGCD的开发,神念科技提供的文件包括,头文件thinkgear.h,thinkgear.lib,thinkgear.dll,有这三个文件,在win32下开发就不是什么难事了吧 如果是java语言 ...

  2. 脑波设备mindwave二次开发框架

    神念科技提供的mindwave提供了脑波耳机和相应的游戏,这些游戏你可以通过购买神念科技的mindwave耳机来获取,这里不多作介绍. 我们作为程序员,如果有了相应的创意,也可以通过他们提供的二次开发 ...

  3. 脑波设备mindwave介绍

    脑波,又称之为脑电波,是人大脑发出的电波,非常的微弱,只能通过设备来检测. 人的脑波在不同状态下,会不同,因此可以通过脑波来量化分析人的精神状态. 科学家讲脑电波分为四种,以下为详细解释(摘自百度百科 ...

  4. 脑波设备mindwave数据流二次开发示例

    数据流开发神念科技提供了两个文件ThinkGearStreamParse.h和ThinkGearStreamParse.cpp两个文件,主要接口为: 宏定义: /* Data CODE definit ...

  5. 基于脑波眼电-语音-APP控制的多功能智能轮椅

    前言:这个项目是在2016-2017完成的,做的很浅显,贴出来与大家分享,希望能有帮助. 摘要 本项目主要是针对脑电信号控制的智能轮椅的设计,脑电控制是智能医疗领域的重要研究方向,旨在帮助行动不便但智 ...

  6. php中创建和调用webservice接口示例

    php中创建和调用webservice接口示例   这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservi ...

  7. usb驱动开发5之总线设备与接口

    Linux设备模型中的总线落实在USB子系统里就是usb_bus_type,它在usb_init的函数bus_register(&usb_bus_type)里注册.usb_bus_type定义 ...

  8. php 接口示例

    php 接口示例: public function dev(){ $m=new Model('machine_info'); $ip=$_GET['ip']; echo $ip; //$arr=$m- ...

  9. 微信js-sdk开发获取签名和获取地理位置接口示例

    ###微信js-sdk开发获取签名和获取地理位置接口示例 前言:在做微信公众号开发时需要获取用户的地理位置信息,之前通过高德或者百度.腾讯等地图的api时发现经常获取不到,毕竟第三方的东西,后来改为采 ...

随机推荐

  1. Python进阶之map()、reduce()、filter()

    map()函数 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB",&q ...

  2. hdu 5724 Chess 博弈

    题目链接 一个n行20列的棋盘. 每一行有若干个棋子. 两人轮流操作, 每人每次可以将一个棋子向右移动一个位置, 如果它右边有一个棋子, 就跳过这个棋子, 如果有若干个棋子, 就将这若干个都跳过. 但 ...

  3. 走进C标准库(8)——"string.h"中函数的实现相关字符串操作函数

    我的strcat: char *strcat(char *dest,char *src) { char * reval = dest; while(*dest) dest++; while(*src) ...

  4. 15.java.lang.InstantiationException

    java.lang.InstantiationException 实例化异常 当试图通过Class的newInstance()方法创建某个类的实例,但程序无法通过该构造器来创建该对象时引发 Class ...

  5. Cortex-M3学习日志(五) -- DAC实验

    终于逮了个忙里偷闲的机会,就再学一下LPC1768的外围功能吧,循序渐进是学习的基本规则,也许LPC1768的DAC与8位单片机16位单片机里面集成的DAC操作类似,但是既然这是懒猫的学习日志,就顺便 ...

  6. Unix/Linux环境C编程入门教程(11) 开发环境搭建VMWare虚拟安装之虚拟化检测

    常开启虚拟化技术.如果你的主板是最新的,它在冷启动后能够检测到配置变化.每当我改变我的主板上的VT设置,它都会自动推迟下次重新启动生效.如何确定VT已经开启或禁用? 如图表示成功开启了VT. F10 ...

  7. libcurl get post http

    一.              概念 1.         为什么要使用libcurl 1)        作为http的客户端,可以直接用socket连接服务器,然后对到的数据进行http解析,但要 ...

  8. MFC 可以设置背景色、字体、字体颜色、透明背景的 Static 静态文本控件

    MFC库里没有符合这个条件的控件,于是我自己写了一个,初步测试有效. 注:可以设置透明背景,但还不能做到透明度设置(如50%透明度) 如果设置了背景色,就不保留透明背景 默认背景色是透明的 [cpp] ...

  9. Eclipse无法识别(手机)设备的解决方案

    遇到问题 开始学习android一个多月了,用Eclipse开发,用android手机调试.之前一直好好的,突然Eclipse无法识别手机设备了.纠结了好久,找了各种解决方法,弄了一晚上终于解决问题了 ...

  10. asp.net textbox keyup事件触发后台的textchange事件

    textbox文本框text_change事件,失去焦点才会执行. 通过keyup事件,js控制失去焦点. <asp:TextBox runat="server" ID=&q ...