Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2013, 08:35   #1
graf__in
Новичок
Джуниор
 
Регистрация: 08.02.2012
Сообщений: 1
По умолчанию Шлем Epoc Emotiv.

Здравствуйте, нужна помощь в разработке приложения для шлема. В течении нескольких дней не получается переписать код в windows forms,пишу в "visual studio2012, С++". Суть, заключается в том что в консольном приложении CLR работает на ура.



пишу в консоли.
Код:
#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include "edk.h"
#include "edkErrorCode.h"
#include "EmoStateDLL.h"
#include <list>


using namespace System;

#pragma comment(lib, "../lib/edk.lib")

using namespace std;

int main(array<System::String ^> ^args)
{
	

EmoEngineEventHandle hEvent = EE_EmoEngineEventCreate();
	
	EmoStateHandle eState = EE_EmoStateCreate();
	unsigned int userID = -1;
	list<int> listUser;

	if( EE_EngineConnect() == EDK_OK )
	{
		while(!_kbhit()) 
		{
			int state = EE_EngineGetNextEvent(hEvent);
			if( state == EDK_OK )
			{
				EE_Event_t eventType = EE_EmoEngineEventGetType(hEvent);				
				EE_EmoEngineEventGetUserId(hEvent, &userID);
				if(userID==-1)
					continue;			

				if(eventType == EE_EmoStateUpdated  )
				{								
					// Copies an EmoState returned with a EE_EmoStateUpdate event to memory referenced by an EmoStateHandle. 
					if(EE_EmoEngineEventGetEmoState(hEvent,eState)==EDK_OK)
					{
						if(EE_GetUserProfile(userID,hEvent)==EDK_OK)
						{
							//Affective score, short term excitement						
							cout <<"userID: " << userID  <<endl;
							cout <<"    affectiv excitement score: " << ES_AffectivGetExcitementShortTermScore (eState) << endl;
							cout <<"    expressiv smile extent : " << ES_ExpressivGetSmileExtent(eState) <<endl;
						}

						
					}					
					
				}
				// userremoved event
				else if( eventType == EE_UserRemoved )
				{
					cout <<"user ID: "<<userID<<" have removed" << endl;	
					listUser.remove(userID);
				}
				// useradded event 
				else if(eventType == EE_UserAdded)
				{
					listUser.push_back(userID);
					cout <<"user ID: "<<userID<<" have added" << endl;
				}		
				userID=-1;
			}			
		}
	}

	EE_EngineDisconnect();
	EE_EmoStateFree(eState);
	EE_EmoEngineEventFree(hEvent);	
	return 0;
}
Когда пишу в windows forms, библиотеки подключаю таким образом
Код:
#include "edk.h"
#include "edkErrorCode.h"
#include "EmoStateDLL.h"
#pragma comment(lib, "../lib/edk.lib")
Далее пишу
Код:
EmoEngineEventHandle hEvent ;
всё работает нормально , Но стоит присвоить
Код:
hEvent = EE_EmoEngineEventCreate();
Выходить ошибка
не удалось создать P или Invoke для "extern "C" void * __clrcall EE_EmoEngineEventCreate(void)" (?EE_EmoEngineEventCreate@@$$J0YMPA XXZ); в метаданных отсутствует соглашение о вызовах


Может надо по другому библиотеки подключать ? Отдельным классом реализовать ? Или в консоль можно добавить форму. Идея появилась, консоль парсить, и уже в форме обрабатывать полученные данные.

Последний раз редактировалось graf__in; 18.11.2013 в 17:57.
graf__in вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц