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. JVM学习之类的卸载机制

    类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了,当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据 ...

  2. python 文本编辑基础记录

    不熟悉编码方式,同时python的编码方式折磨我了很长时间,记录下,以免忘记,本文内容存在错误,是自己理解,看到仅当参考 Unicode 是字符集,有点像一本字典,utf-8是在unicode这本字典 ...

  3. 走进C标准库(7)——"string.h"中函数的实现memcmp,memcpy,memmove,memset

    我的memcmp: int memcmp(void *buf1, void *buf2, unsigned int count){ int reval; while(count && ...

  4. MVC3 带查询的分页Helper

    接上篇mvc3 分页Helper. 带查询的分页Helper是在上一篇分页的基础上来的.下面看代码: 首先,在System.Web.Mvc命名空间下的自定义类HtmlPage下面添加一个用于处理“查询 ...

  5. python request的运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  6. 常用Vxworks编程API

    vxWorks编程API 一.官方的Program Guide 位于安装目录下:\docs\vxworks\guide\index.html 二.常用的库: #i nclude "taskL ...

  7. Handlebarsjs学习笔记

    handlebarsjs官网(http://handlebarsjs.com/) 1.引入模板      在html页面中添加 <script id="entry-template&q ...

  8. 比较两个data日期之间的天数相差

    先将字符串转化为Date类型 转化方式参看:http://blog.csdn.net/caoyinghui1986/archive/2008/04/18/2303570.aspx 然后在调用Date. ...

  9. Android View动画

    Animation TypeEvaluator View的animate方法 ValueAnimator ObjectAnimator AnimatorSet 使用xml来创建动画 animation ...

  10. Tomcat从零开始(十一)WebappLoader概述

    好的,我们先看看这个WebappLoader到底在开始的时候做了什么,先看看他的start()方法. public void start() throws LifecycleException { / ...