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. HTML meta refresh 刷新与跳转(重定向)页面

    <meta http-equiv="refresh" content="5; url=http://www.cnblogs.com/" /> 可用于 ...

  2. OC语法10——@protocol协议,

    参考资料:博客 @protocol,协议: OC中protocol的含义和Java中接口的含义是一样的,它们的作用都是为了定义一组方法规范. 实现此协议的类里的方法,必须按照此协议里定义的方法规范来. ...

  3. Python进阶之面向对象编程概述

    Python面向对象编程(一) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...

  4. ajax防止重复提交请求1

    ajax防止重复提交请求 A. 独占型提交 只允许同时存在一次提交操作,并且直到本次提交完成才能进行下一次提交. module.submit = function() {   if (this.pro ...

  5. CSS自学笔记(6):CSS的模型

    CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框和外边距的方式. 图片来源:w3school.com.cn 元素(element)是一个html文档的实际内容区域,依次由 ...

  6. html5的在ie6,7,8兼容

    <script> //html5 标签 (function () { if (!/*@cc_on!@*/0) return; var html5 = "abbr,article, ...

  7. 【菜鸟学习Linux】-第一章-Linux环境搭建-安装VMware虚拟机

    本人菜鸟一个,刚毕业才上班2个月,现在用到Linux部署项目,这才开始学习Linux,以下是我在安装Linxu系统是遇到的一些问题,希望能给广大菜鸟们在学习的道路上提供帮助和指导,废话不多说!开工! ...

  8. 关于win7系统的Oracle安装时的[INS-30131]问题的解决方案

    我是今天晚上安装的Oracle,结果在第二步遇到了这个问题,前后折腾了两个小时,百度了很多解决方案,终于解决了这个问题; 由于我的电脑系统还是win7的系统,其他的我没试过,不过也差不多都这么解决; ...

  9. google base库之simplethread

    // This is the base SimpleThread. You can derive from it and implement the // virtual Run method, or ...

  10. SGU 248. Integer Linear Programming( 背包dp )

    看了半天...发现就是个背包...然后就不打算敲了. 看了一眼forum..顿时吓傻..其他人用了gcd啊什么的各种奇怪的东西..然后还是敲了个背包结果就AC了= =既然写了代码就扔上来吧... -- ...