Конечно можно написать программу на Delphi, куда затем вставить ActiveX-объект и делать в ней, что хош (как это делается можно прочитать тут). Но следующим этапом будет либо самостоятельная релизация алгоритма обработки данных, либо поиск сторонних библиотек функций.
Сколько веревочке не виться, а придется ставить LabView.
Who is f@$king Alice?Но как подключить к LabView наш мозгонавтический аксессуар?
LabVIEW (англ. Laboratory Virtual Instrumentation Engineering Workbench) — это среда разработки и платформа для выполнения программ, созданных на графическом языке программирования «G» фирмы National Instruments (США)...
Перетряхивание сайта National Instruments и форума Emotiv выдало минимум два решения.
Решение 1 (Emotiv EEGlogger sample program with LabVIEW) от пользователя hideok34
Он выложит пример подключения к EPOC-у через свою DLL. Вобщем, делает все что нам надо. Но решение к сожалению несколько запутанно, комментарии в проекте исключительно на японском :)
Решение 2 (LabVIEW Emotiv Toolkit) от пользователя BigCheese
Это Toolkit - набор компонентов оберток функций библиотеки edk.dll. Прекрасно сделано и структурировано все отлично , кроме того что нет прямого доступа к ЭЭГ данным.
(Я понимаю, что некоторым читателям моего блога интересен конечный результат. Поэтому забегая вперед скажу что в итоге пришлось сделать свою DLL и свой VI файл доступа к нему взять проект можно тут :). Те кто хочет разъяснений или просто являются поклонниками моего литературного стиля :) могут читать дальше :))
Сначала у меня возникла несколько иная идея. Подключить к LabView не Emotiv, а BioExplorer через его ActiveX-объект. Очень уж мне нравится в BioExplore-ре возможность проигрывать и останавливать запись ЭЭГ. Все было классно, пока не дошел до момента извлечения данных из массива передаваемого по указателю. В CallBack обработчике ActiveX объекта добраться до всего массива мне так и не удалось. Особо обидно, что передавался только один элемент массива из 8. Пощелкав зубами в шаге от победы, решил искать иной выход.
Кстати кому хочется потрахаться с ActiveX могут взять VI-файл с моими последними изысканиями.
Разбираться в японских комментариях не хотелось поэтому пошел разбираться с EmotivToolkit-ом.
BigCheese - молодец, код просто замечательный, но видимо код делался либо на Developer версии SDK либо вообще на SDKLite поэтому вообще не содержит функций доступа к ЭЭГ данным. Но это же самое интересное!
Что Я могу сказать?
LABVIEW это отличная среда, прекрасно документированная и снабженная примерами. Просто хочется закинуть горячо любимые Delphi, Visual Studio далеко-далеко, а потом идти искать их обратно. Потому как Labview непривычно и неудобно использовать в работе с указателями и структурами. То что в обычной среде делается за 15-20 минут, в Labview рисуется не меньше часа. Даже с хорошо продуманной структурой VI проекта, все выглядит уж очень мудрено и запутанно.
Поэтому Я решил убрать всю мороку с хэндлами внутрь DLL-ки которая имеет всего 3 функции.
int OpenEEG(PTDevice hDevice);
- Инициализировать движок. Вернуть клюшку :).Если все ОК вернуть 0 , если все плохо вернуть -1
int ReadEEG(PTDevice hDevice, int Channel, double * DataOut, int *BuffSize);
- Считать с выбранного канала данные и вернуть их количество. Если все ОК - вернуть 0, и -1 если наоборот.
int CloseEEG(PTDevice hDevice);
- Отключится от движка, освободить память.
Используя такую DLL VI файл будет максимально компактным и простым для понимания и использования.
В результате проект получился такой (в архиве версия несколько сложнее, тут удалены все отладочные переменные).
Никаких вложенных VI (кроме использования своей DLL). Красота :)
Да такой проект не умеет брать одновременно данные с нескольких каналов, или выводить мигание или настроения пользователя.
Мне это не надо. Если Вам надо, используйте Toolkit от BigCheese.
Кстати есть подозрение, что полученную DLL-ку можно использовать не только в LabView.
Итак что лежит в архиве:
biolab.vi - Проект LabView с использованием DLL
DLL - Проект Visual Studio 2008 с кодом DLL. Там же в файле (BioLabDLL.cpp) можно откопать таблицу соответствий номеров каналов.
Если Вас еще мучает вопрос, а стоит ли мучения того посмотрите какой широкий набор готовых алгоритмов обработки сигналов предоставляет LabView.
Еще вопросы есть? Да где бы взять $1440 для его покупки. :)
З.Ы. Заполнив форму тут можно скачать 30-дневный триал LABVIEW 2011
Непослушные дяди и тети, которые не уважают интеллектуальную собственность, копирастов и U.S.Patent найдут ВСЁ, что надо для счастья на РуТрекере.
Классно. Я так понял это получается РЭГ как в больничке и выводиться на график)))
ОтветитьУдалитьНу да только есть один вопрос - а что с этим делать. Даже в среде врачей - ЭЭГ-диагност - это где-то близко к шаману который ставит диагноз по пульсу.
УдалитьПерезалейте архив плиз. Он уже протух давно ((((
ОтветитьУдалитьНу вообще уже не актуально они все поправили ... правда последний раз когда я ставил Опенвайб месяца два назад обнаружил под XP такой косяк. Т.к. программисты явно закладывались на 7-ку и на работу с SDK версии 1.04 то ищет оно Emotiv по пути.
УдалитьC:\Program Files (x86)\Emotiv Research Edition SDK_v1.0.0.4-PREMIUM
Вылечить это два способа.
Первый длинный поправить на 1.05 пересобрать дистрибутив.
Или просто создать такую папку на компьютере и просто туда скопировать последнюю версию SDK ну и в настройке DataAcquisionServer указать к ней путь.
Удачи.