Bellon Balázs Önálló laboratórium beszámoló Témakiírás: Szövegbevitel agy-számítógép interfész segítségével Konzulens: Mészáros Tamás



Hasonló dokumentumok
Önálló laboratórium dokumentáció

Novell GroupWise levelező rendszer alapok Kiadványunk célja, hogy a Nemzeti Közszolgálati Egyetemen használt Novell GroupWise (a továbbiakban GW)

CellCom. Szoftver leírás

MUNKAANYAG. Angyal Krisztián. Szövegszerkesztés. A követelménymodul megnevezése: Korszerű munkaszervezés

11. Balra zárt igazítás A bekezdés sorai a bal oldali margóhoz igazodnak. 12. Beillesztés

Felhasználói kézikönyv

Használati útmutató. Xperia C C2305/C2304

Címtár Felhő Projektfeladat specifikáció

Nokia C1-01/C Felhasználói kézikönyv

Nokia Felhasználói kézikönyv

AXEL Számlázó és készletnyilvántartó program

E-Fedezetkezelő. felhasználói kézikönyv. Fővállalkozói adminisztrátorok számára

1. oldal, összesen: 29 oldal

2.0 verzió. vényíró és gyógyszerinformációs szoftver szakrendelők, kórházi ambulanciák részére. Felhasználói kézikönyv

Használati útmutató. Xperia Z C6603/C6602

1. BEVEZETÉS A RENDSZER ELEMEI, ARCHITEKTÚRÁJA... 5

Operációs rendszerek Windows Xp

ORPHEUS. Felhasználói kézikönyv. C o p y r i g h t : V a r g a B a l á z s Oldal: 1

AXEL PRO Számlázó és Készletnyilvántartó Program

TomTom Bridge Referencia útmutató

Gate Control okostelefon-alkalmazás

Smart speed VF-795 CJA28BAVDAPA

Programozói elődöntő feladat. Főtámogató. Arany fokozatú támogatók. Szervezők

03. AZ F-SECURE POLICY MANAGER TELEPÍTÉSI LÉPÉSEI

Bosch Video Client. Kezelési útmutató

Blonde. Szépségszalon, Szolárium, Spa, Fitness. Ügyviteli Rendszer. Funkcionális Specifikáció. Verzió 1.1

Felhasználási útmutató a. Dr. Hibbey oktatószoftver-családhoz

Általános funkciók partitúrái. Felhasználói dokumentáció verzió 2.0.

Rendszerterv. 1. Funkcionális terv Feladat leírása:

Smart grand VF-696 CJA28DAVDAPA

Fontos biztonsági előírások

Kiegészítő melléklet (elektronikus beszámoló)

ConCorde EasyPhone 10 Használati útmutató

Bevezetés az Arduino mikrovezérlők programozásába

Hálózatkezelés Szolgáltatási minőség (QoS)

BBS-INFO Kiadó, 2016.


Szoftver-ergonómiára vonatkozó szabvány, avagy ISO 9241

SEGÉDLET ELEKTRONIKUS FELÜLET HASZNÁLATÁHOZ. EMVA ÚMVP I. és II. intézkedéscsoportjához kapcsolódó képzések

PC-DVR FELHASZNÁLÓI KÉZIKÖNYV. A műszaki tartalom előzetes bejelentés nélküli változtatásának jogát fenntartjuk!

BAUSFT. Pécsvárad Kft Pécsvárad, Pécsi út 49. Tel/Fax: 72/ ISO-bau. Szigetelés kiválasztó verzió.

Év zárása és nyitása 2015-ről 2016-ra

ConCorde Raptor P67 Használati útmutató

Üdvözöljük. Solid Edge kezdő lépések 2

Felhasználói kézikönyv

ADAFOR Iskolai adatforgalmazó program Kezelési útmutató

TÉRINFORMATIKA AZ INTERNETEN

Nokia Felhasználói kézikönyv

Felhasználói kézikönyv

Office Gyakori kérdések

Tartalomjegyzék 5 TARTALOMJEGYZÉK

Ittfoglalomösszea legfontosabbtudnivalókat, részleteka honlapon, illetvea gyakorlatvezetőtől is kaptok információkat.

Szövegszerkesztés Verzió: 0.051

FELHASZNÁLÓI KÉZIKÖNYV

Alkalmazási segédlet a MiniCheck-RA-H festékrétegmérő készülékhez és az ezt támogató MiniCheckForKiv szoftverhez.

7. gyakorlat Tervlapok készítése, a terv elektronikus publikálása

Gate Control okostelefon-alkalmazás

Szövegszerkesztő programok: Jegyzettömb, WordPad, Microsoft Word

Az anyagdefiníciók szerepe és használata az Architectural Desktop programban

Felhasználói kézikönyv Felhasználói kézikönyv EziWeigh6 mérlegkijelzőhöz

MÁOK Sm. Szervezete 7400 Kaposvár, Cseri major Utolsó frissítés: TÁVOKTATÁS. MS Excel táblába oszlop beszúrása

IBM i. Hálózatkezelés DHCP 7.1

AIX 6.1. IBM Systems Director Console for AIX

Symbol PPT 8800 sorozat Felhasználói kézikönyv

Nokia Felhasználói kézikönyv

Felhasználói kézikönyv a minősítési értékelő modul használatához

mega macs 66 Gyorsindítási útmutató QSMM66V46HU1014SO

Tartalomjegyzék Általános ismeretek a programról A táblázatok használata Az objektumtípusok áttekintése Részletes leírás Statisztikai jelentés 129

Techtrading Műszaki Fejlesztő és Kereskedelmi Kft.

Vényírás. 1. ábra. 1. oldal

Operációs rendszerek Microsoft Windows 2000


Bevezetés. A WebAccess használatának bemutatása előtt néhány új funkció felsorolása következik:

MAGic Képernyőnagyító szoftver beszédképességgel

On-line értékelési módszerek II. Lengyelné Molnár Tünde

KITÖLTÉSI ÚTMUTATÓ ELEKTRONIKUS FELÜLET HASZNÁLATÁHOZ. EMVA Agrár-környezetgazdálkodási támogatások

Nokia C Felhasználói kézikönyv

Nokia C Felhasználói kézikönyv

GroupWise 5.2 használói jegyzet

elektronikus kitöltés és benyújtás

ArcGIS 8.3 példa 1. Dr. Iványi Péter

edia 2.3 Online mérési platform feladatfelviteli kézikönyv Diagnosztikus mérések fejlesztése Molnár Gyöngyvér Papp Zoltán Makay Géza Ancsin Gábor

Rövid használati utasítás

mega macs 56 Gyorsindítási útmutató QSMM56V46HU0914SO

Nokia C Felhasználói kézikönyv

A First Businesspost Sender Cockpit használata

MS Access Feladatgyűjtemény

Entitások Projektfeladat specifikáció

SEGÉDLET ELEKTRONIKUS FELÜLET HASZNÁLATÁHOZ. EMVA Monitoring adatszolgáltatás

A tömörítési eljárás megkezdéséhez jelöljük ki a tömöríteni kívánt fájlokat vagy mappát.

Felhasználói kézikönyv. NAVIGON max. Magyar Április

Az Ön kézikönyve SONY ERICSSON XPERIA GO

Összefoglaló az SMS Center által nyújtott szolgáltatásokról

Felhasználói kézikönyv

Országos Szakiskolai Közismereti Tanulmányi Verseny 2005/2006 SZÁMÍTÁSTECHNIKA

Médiaadat-tároló. Felhasználói kézikönyv

Kati Fotó Fuji Labor internetes ügyfélprogram Verziószám: Felhasználói útmutató

SATEL. CA-64 RIASZTÓKÖZPONT ( es szoftver verzió) Telepítési útmutató

TestLine - 9.A hardver Minta feladatsor

Átírás:

Bellon Balázs Önálló laboratórium beszámoló Témakiírás: Szövegbevitel agy-számítógép interfész segítségével Konzulens: Mészáros Tamás

Tartalomjegyzék 1. Feladatleírás... 3 2. A felhasznált eszköz... 4 2.1 Az eszköz leírása... 4 2.2 Az eszköz üzembe helyezése, szoftveres környezet... 4 2.3 Tesztelés... 6 3. Szövegbeviteli módszerek... 7 3.1 Más emberek munkája... 7 3.2 Saját megoldás... 8 3.3 Kezdeti szótár, profilok... 8 3.4 Tanuló algoritmus... 9 3.5 Menürendszer... 9 4. Cross platform, hálózat, mobil eszközök... 10 5. Implementáció, teszt program... 11 5.1 Szerver alkalmazás... 11 5.2 Kliens alkalmazás... 11 6. Irodalomjegyzék... 14

1. Feladatleírás A feladat egy olyan szövegbeviteli rendszer megvalósítása, amely kommunikációs lehetőséget teremt különböző motorikus funkciókat korlátozó betegségekben (ALS) szenvedő emberek számára. A feladat célja így az EEG neuroheadset felhasználásával megvalósított karakteres szövegbevitel. A félév során elvégzett feladatok: Ismerkedés a készülékkel (Emotiv Epoc) Ismerkedés az Emotiv szoftveres környezetével Szövegbeviteli módszerek utáni kutatás Szövegbevitelt segítő algoritmusok Alkalmazások irányítása a headset segítségével Alternatív kommunikációs lehetőségek (nem betűnként, pl természetes nyelvű menürendszer) Megjelenítés elválasztása a headset kezelésétől, külön eszköz felhasználása Mobil platformok támogatása

2 A felhasznált eszköz 2.1 Az eszköz leírása [1] A rendelkezésre álló eszköz egy Emotiv EPOC neuroheadset. Főbb jellemzői: 14 szenzor Beépített gyroscope, fej mozgatását képes érzékelni Vezeték nélküli megvalósítás Kognitív érzékelés (Affective suite) Arcmimika érzékelése (Expressive suite) Hangulat érzékelése (Affectiv suite) A headset mellé tartozik az Emotiv által készített szoftveres felület, amely önmagában számos funkciót valósít meg, illetve a programozáshoz felhasználható SDK. 2.2 Az eszköz üzembe helyezése, szoftveres környezet Az eszköz tárolás során szét van szerelve, ami alatt azt értjük, hogy az érzékelők eltávolíthatóak, kicsavarhatóak a készülékből. Tárolásukra külön tok van, amely a rajtuk lévő szivacsok kiszáradását próbálja elkerülni. Ezért használat előtt az érzékelők szivacsos részét folyadékkal be kell nedvesíteni, majd bele kell csavarni az eszközbe. Összesen 16 darab érzékelő elektróda van (ebből 2 referencia elektróda) Az érzékelők elhelyezése után meg lehet próbálni elhelyezni a fejre, azonban ez sem triviális feladat, így a hosszú haj vagy a rossz elhelyezés az eszköz pontosságát befolyásolhatja. Erre segít a vezérlő program felülete, amely fekete, piros, narancssárga, sárga, zöld színű színskálán jelzi az egyes elektródák jelének erősségét.

A megfelelő elhelyezés nem feltétlenül eredményezi az összes érzékelő zöld színű jelzését. Ettől függetlenül az eszközt használatba lehet venni. A control panelen ezen túl található 3 különböző panel [2]. Expressiv Suite: ez a része használható a programnak arcmimika érzékelésére. Bár a feladatunk a kognitív részt használja, arcmimika érzékelése is hasznos lehet egyes felhasználóknak, ezért érdemes lehet a későbbiekben a headset ilyen képességeinek a felhasználása. Affectiv Suite: hangulatváltozás detektálása, mint unalom, izgalom, frusztráció. A mi esetünkben nem feltétlenül hasznos, esetleg érdekes lehet a hangulatok monitorozása későbbi felhasználásra. Cognitive Suite: a szoftver ennek a része valósítja meg a kognitív érzékelést. Működése során megpróbáljuk a programot különböző gondolatokra betanítani, majd később ugyanezen gondolatokra való koncentráció alkalmazásával lehet eseményt kiváltani. A tesztprogram részeként egy 3 dimenziós kocka mozgatása a cél, de a program részeként a betanított érzeteket meg lehet feleltetni egy billentyű lenyomásának is. A gondolatok, érzetek betanítása és kezelése nem egyszerű feladat. Egy érzet kezelése sem triviális feladat, több esetén pedig nehéz a különböző érzeteket elkülöníteni. Emellett az elmentett érzetek közel sem biztos, hogy legközelebbi használatkor működni fognak. Így a készülék használata jelentősen befolyásolta a felhasználói felület tervezésének lépéseit. Nem lehet elvárni minden embertől 2-3 különálló érzet betanulását.

2.3 Tesztelés Problémát jelenthet az eszköz tesztelése, ha éppen nem áll rendelkezésre (otthoni tesztelés), vagy olyasmit szeretnénk rajta tesztelni, amire nem vagyunk képesek (több érzet használata). Erre jelenthet megoldást az Emocomposer program. Segítségével a headset minden funkcióját le lehet szimulálni. Hasznos funkció mindemellett még a scriptelési lehetőséget biztosító része a programnak. Így különböző érzeteket, cselekvéseket sorban le lehet programozni és egy gombnyomással végrehajtani. A program készítői számos test scriptet is létrehoztak nekünk, tovább egyszerűsítve a tesztelést.

3. Szövegbeviteli módszerek 3.1 Más emberek munkája Sima billentyűzet kiosztás: Ilyen megoldásokat lehet találni az interneten, melyek egy szabványos billentyűzetet jelenítenek meg és a billentyűk között lehet váltogatni, általában négy irány, valamint egy kijelölő funkció használatával. Lehet tisztán kognitív érzékelővel is vezérelni, ez nehézkes, általában inkább gyroscope-al szokás ezeket használni. Tanuló algoritmust nem valósít meg, vagy esetleg csak szavak befejezését segíti a billentyűzet valamely részén megjelenő kész szavak listájával. Tisztán kognitív érzékelővel ennek a billentyűzetnek a használata bár megoldható, nehézkes lehet. Ilyen alkalmazás található az Emotiv honlapján is [3]. Egy érzetet használó megoldás: Elképzelhető egy olyan megoldás, ahol a kiválasztható betűk egy mátrixban vannak a képernyőn elhelyezve. Az oszlopok között folyamatosan váltogat az alkalmazás egy meghatározott időnként, a felhasználó pedig egy érzettel ki tudja választani az oszlopot, majd ezután a program a sorok között váltogat, így ezzel a megoldás ki lehet választani a mátrix egyes elemeit. Esetleg egy tanuló algoritmus átrendezheti a betűk sorrendjét valamilyen módszer szerint, de ez nem feltétlen szükséges, sőt előfordulhat, hogy egyes felhasználók jobban szeretik ebben az esetben a betűk statikus elhelyezkedését. Ez a megoldás első megközelítésben lassúnak tűnik, azonban nem elhanyagolható az az előnye, hogy a felhasználónak nem kell több érzetet bevinnie a számítógépbe, könnyedén használható. Egy amerikai kutatás során [4] használtak ilyen megoldást, bár ők másmilyen headsettel, más eeg eljárással valósították meg. Hat betű megjelenítése egyszerre: Ebben a megoldásban egy hatszög csúcsainak elrendezésében hat darab betű jelenik meg. A betűk között lehet váltani, illetve ha a hat darab betű között nincsen a keresett, akkor lehet további hat betűre váltani. A megoldás valamilyen tanuló algoritmust is felhasználhat, ahol a legépelt szavak eltárolásával a betűk megjelenésének sorrendjét dinamikusan át lehet rendezni, így gyorsítva a gépelést. A megoldás problémája lehet, hogy sokat kell váltogatni a hat betűk között, mire meglátjuk az általunk keresett betűt, illetve használatához relatív sok érzet szükséges (3-4) [5].

3.2 Saját megoldás A saját megoldás első elképzelésem alapján egy kör alakban elrendezett billentyűzet. A kör mozgatása balra és jobbra is lehetséges, a kör egy adott pontján pedig az aktív, kiválasztott betű található. Így két érzet forgatja a kört, egy pedig a kiválasztást végzi. A betűk sorrendje dinamikusan, leütött betűnként átrendezhető a szövegkörnyezettől függően. A dinamikusan sorrend meghatározására a program egy szótárat tarthat nyilván a használt szavakról és azok gyakoriságáról. Ez a megoldás első körben ugyan jónak tűnik, a headset-tel való ismerkedés során kiderült, hogy a 2-3 érzet használata korántsem egyszerű dolog. Emellett egyes betegségek korlátozhatják az ember kognitív képességeit [6], így előfordulhat, hogy nehezebben tudnak érzeteket betanulni a headsettel. Ezért fontos, hogy a szövegbevitelnek biztosítsunk olyan beviteli felületet is, melyet egy érzettel is lehet használni. Erre jó megoldás a már korábban említett mátrixos szövegbevitel. A végső változatban érdemes lehet a kettő változat közötti váltás támogatása a felhasználó képességeinek figyelembe vételével. 3.3 Kezdeti szótár, profilok A tanuló algoritmus implementálása során fellép egy olyan probléma, hogy mi legyen a kiinduló állapot, amikor először kezdi el valaki használni az alkalmazást. Egyszerű megoldás ebben az esetben a sima ABC sorrend, tehát a nulláról való tanítás, de ennek a betanítása sokáig is eltarthat, ezért egy alternatív kezdőállapot felajánlása a program használatba vételekor előnyös lehet. Az interneten első keresésre is több gyakori szavak listát lehet találni szinte minden nyelvről, amelyek általában a leggyakrabban használt N szavat mutatják, gyakoriság szerint sorba rendezve. Ebből elő lehetne állítani egy kiindulási szótárt. Ezek után kérdés lehet még az, hogy a kezdeti szótárt milyen módon használjuk, illetve mi történik akkor, ha egy alkalmazásnak több ember adatait, szokásait kell kezelni egyszerre. Érdemes lehet meghatározni egy profil rendszert, amely az egyes felhasználóik beállításait és ezzel együtt a szokásait külön tárolja el, a program használatakor pedig lehet váltogatni az egyes profilok között, így használata közben a tanító algoritmus mindig csak az adott személyre vonatkozó szótárt használja. Profilonként érdemes lehet bevezetni egy olyan opciót, ahol a szótárakat fel lehet tölteni elmentett szótárakkal, és az aktuális szótárt is el lehet menteni. Nálunk ebben az esetben a szótár feltöltése lesz érdekes. Feltöltésből célszerű több fajta feltöltést használni, ahol az egyik feltöltés egy üres szótárat tölt fel, tehát elveszítjük a szokásainkat, a másik fajta összefűzést valósít meg, tehát a meglévő szótárhoz feltölti az általunk megadottat. Most hogy meghatároztunk egy profil rendszert, illetve a szótárak elmentését, és feltöltését, vissza lehet térni a kezdeti szótár meghatározására. Érdemes lehet előállítani a szavak gyakorisági listájával egy alap, tanító szótárt, mely betöltésével határozunk meg egy alap állapotot. A tanító szótárban meghatározzuk, hogy milyen szavaknak milyen kezdeti gyakoriságot szeretnénk megadni, így például elképzelhető egy olyan megoldás, hogy a leggyakoribb 100 szó N-szer fontosabb, mint a leggyakoribb 200, és így tovább, valamint azt is meg tudjuk adni, hogy mekkora használat után fogja az egyedi szokásaink felülírni a tanító szótárban meghatározottakat. Például ha a leggyakoribb szavak előfordulása a tanuló szótárban alacsony számban van meghatározva, akkor rövid használat után is a saját szokásaink erősebb változásokat idéznek elő a tanításban, míg egy magasabb számú szó gyakoriságot meghatározó tanító szótárban változást előidézni nehezebb, hosszabb feladat lesz. Egy megfelelő tanító szótár kialakítása így nem egyértelmű feladat, viszont ez a megoldás remélhetőleg jól skálázható és módosítható, illetve így az alkalmazásunk nem kötött egyetlen nyelv használatához.

3.4 Tanuló algoritmus Sima ABC sorrend használata: Ez első körben amíg a dinamikus szótár üres, vagy nem elég nagy, addig használható. Esetleg egyéb csoportosítás, pl. mássalhangzók és magánhangzók egybeszedve. Dinamikus szótár [7]: dinamikusan bővítünk egy szótárat, ahova a beütött szavakat eltároljuk, ez alapján határozzuk meg, hogy milyen betűk milyen sorrendben következnek. Az első betű lehet az első helyen a leggyakrabban előforduló betű, a második helyen a második helyen leggyakrabban előforduló betű. Ez már talán működne, de lehet érdemes lenne figyelmi, hogy a már meglévő betűk szekvenciája milyen szavakat tudna befejezni. Így az első betű továbbra is a leggyakrabban előforduló első betű, a második, illetve n.-dik betűnél pedig figyelembe vesszük, hogy mi van előtte, és mivel tudjuk befejezni, így kigyűjtjük azon szavak listáját, amelyeket be tudunk fejezni a meglévő betűkkel, és ezek közül keressük ki a leggyakrabban előforduló betűket. Ez idáig úgy tűnik, hogy működhet, azonban így csupán azt figyeljük, hogy milyen szavakat ütöttünk le, a szavak használatának gyakoriságáról még nem esett szó, így problémás lehet, ha egy olyan szó, vagy szavak csoportja, melyeket ugyan ritkán használunk, de el van már tárolva a szótárunkban, negatívan befolyásolhatják a kívánthoz képest a billentyűzet működését, ezért ki kell találni a betűk fontosságának egy olyan súlyozását, amely figyelembe veszi a szavak előfordulását is. Ezt legegyszerűbb módon talán úgy lehetne megoldani, hogy minden szónak tároljuk az előfordulását is, tehát ha olyan szavat gépeltünk be, amely már benne van a dinamikus szótárunkban, annak egy előfordulási számát növeljük, a betűk fontosságánál pedig ezt az előfordulási tényezőt használjuk fel a sorrend előállításához, így az adott szekvenciát a leggyakrabban folytató betű fog a lista elejére kerülni. A betűk mellett egy szó befejező opció is lehetne, amely az adott szekvencia által alkotott leggyakoribb n szavat felajánlja automata befejezésként is. 3.5 Menürendszer A programot ha a billentyűzeten felül szeretnénk egyéb funkcionalitásokkal bővíteni, érdemes lehet egy neuroheadset által használható menü rendszert kialakítani, de korlátozott számú érzettel rendelkezünk, így akár a menürendszer előhívására szolgáló még egy érzet felhasználása nem biztos, hogy lehetséges. Egy megoldás lehet erre, hogy az érzeteket, vagy az érzetek egy csoportját megkülönböztetjük aszerint, hogy mennyi ideig volt aktív, így például a kiválasztó érzet hosszan tartása megvalósíthatna egy menü gombot, ami az éppen aktív részéből a programnak átlép egy menüben. A menü egy egyszerű listából állna, melyben két érzettel lehet navigálni. A program így a billentyűzet mellett tartalmazhat egyéb részeket is. A mi esetünkben megfogalmazódott egy olyan igény, hogy betűk gépelése helyett lehetőség legyen teljes mondatok, kifejezések gyors bevitelére, egyfajta természetes nyelvű menürendszer kialakítása [8]. Erre létrehozhatunk egy olyan felületet, amely ilyen kifejezéseket tartalmaz, a kifejezéseket kiválasztva az azonnal begépelésre történik. Esetleg meg lehet határozni egyéb opciókat is, ahol kifejezés helyett üzenetet küld a program valahova (például előre meghatározott email küldése). A felületen megjelenő kifejezéseket egy külső programrészből lehet bevinni, sorrendet meghatározni. Ez a felület már nem a neuroheadsettel működik.

4. Cross platform, hálózat, mobil eszközök A tervezési feladatok során felmerült annak a lehetősége, hogy laptop, illetve monitor elhelyezése a fekvő beteg környezetében nem feltétlenül egyszerű feladat. A felhasználói feladat megjelenítésére akár egy táblagép is megfelelő eszköz lenne. Ugyanakkor az Emotiv által adott eszköz szoftvere nem működik mobil operációs rendszereken. Erre megoldás lehet egy kliens-szerver architektúrájú megoldás létrehozása. A program így föl lesz bontva két részre: Szerver alkalmazás: Hálózaton várja a kliensek csatlakozását A kliensek elől elrejti a headset kezelését Bővíthetőség, nem kell jelentős változásokat végrehajtani más eszköz támogatása miatt A profilok, beállítások mind a szerver oldalon kerülnek eltárolásra Ezzel együtt a szótárak is Kliens alkalmazás: Egyszerű megjelenítő felület Hálózaton keresztül kapja a parancsokat, beállításokat Hálózaton keresztül bővíti a szerver által tartalmazott szótárat Könnyű portolhatóság, nem használunk SDK specifikus könyvtárat Változás esetén a klienseket nem kell újra írni

5. Implementáció, teszt program 5.1 Szerver alkalmazás A szerver alkalmazás C# nyelven íródott program. Futás közben a 7536-os porton várja a kliens csatlakozását, majd csatlakozás után egy listában lévő cselekvéseket küldi át a kliensnek. Jelenleg egy cselekvést kezel, ez a H gomb lenyomása. Használat Emokey program segítségével történik, ez az alkalmazás az Emotiv SDK-t még nem használja. A szerver a start gomb lenyomására indul el. A hálózati kommunikációt a szerver osztály kezeli. Létrehozása után a start metódus meghívásával készít egy TcpListener objektumot, mellé pedig egy külön szálat ami a kliens csatlakozását várja. Egy kliens csatlakozása esetén a kiszolgálásra indul egy új szál, ahol a kommunikációs történik. A program bár elméletileg képes egyszerre több kliens kezelésére is, ez jelenleg az elküldendő üzenetek tekintetében nincs figyelembe véve, így több kliens esetén nincs garantálva, hogy minden kliens minden üzenetet megkap. Az akciók egy láncolt listában tárolódnak, melyet mind a GUI, mind a Server osztály használatba vesz. Ide kerül be egy új esemény, a kliens szál pedig ebből a listából veszi ki a legrégebbi eseményt, és elküldi a megfelelő üzenetet a kliens felé. FIFO működés. 5.2 Kliens alkalmazás A kliens alkalmazás szintén C# nyelven írodott. A program egyelőre csak az egy érzetes, mátrixos karakterbevitelt valósítja meg. A felületén be lehet állítani a szerver címét, a portot, valamint a mátrixban lévő kiválasztó kurzor léptetési idejét, bizonyos megkötésekkel (1 és 15 másodperc közötti érték). A connect gomb segítségével történik a kiválasztás, a keyboard gomb jeleníti meg a billyentyűzetet, míg a select gomb lokális kiválasztást enged meg, tehát nem muszáj a szerverhez csatlakozni a program használatához. A szerverhez hasonló módon a kliens program is működik az Emokey programmal önállóan is.

A hálózat kezelését a Client osztály valósítja meg. A Start metódusban megadott hostname és port változók segítségével megpróbál csatlakozni a szerverhez, majd egy külön szálban várja a szervertől kapott adatokat. Egy irányú kommunikáció, a kliens nem küld adatokat a szervernek. A ReceiveEvent esemény segítségével jelez a GUI-nak, hogy történt valami. Erre a Client osztály létrehozásakor feliratkozik a kliens. A hálózaton bejövő eseményeken túl hibaüzenetek is ezen az eseményen kerülnek ki a GUI-ra.

A SimpleKey osztály valósítja meg a szövegbeviteli részét az alkalmazásnak. Egy C# Form lényegében, aminek a Paint metódusa lett felülírva, így történik a kirajzolás. Létrehozás után be lehet állítani, hogy milyen időintervallumonként léptesse az alkalmazás a kurzort (TimerTick), ami egy Timer időzítő paramétere lesz. A kiválasztás a DoSelect függvénnyel történik, ami fel van iratkozva a Select gomb kattintás eseményére, de meghívásra kerülhet H gomb lenyomására, és hálózaton történő esemény bejövetele esetén is. Egy állapotváltozó figyeli, hogy éppen a kurzor milyen állapotban van, ahol a különböző állapotok lehetnek oszlop, sor kiválasztása, illetve a kiválasztás megtörtént is. Utóbbi esetben elsütésre kerül a SelectedEvent, amire a fő GUI egy függvénye fel van iratkozva, az eseményen keresztül pedig a saját SelectedEventArgs esemény argumentummal történik a kiválasztott karakter elküldése, aminek következtében az megjelenik a fő ablakban.

6. Irodalomjegyzék [1] http://www.emotiv.com/apps/epoc/299/ [2] http://en.wikipedia.org/wiki/emotiv_systems [3] Neurokey alkalmazás, http://www.emotiv.com/store/apps/applications/130/727 [4] Krusienski DJ, Shih JJ. Control of a visual keyboard using an electrocorticographic brain computer interface [5] Benjamin Blankertz1, Guido Dornhege1, Matthias Krauledat1,2, Michael Schr oder1, John Williamson3, Roderick Murray-Smith3,4, Klaus-Robert M uller1,2, The Berlin brain computer interface presents the novalmental typewriter hex-o-spell [6] Femke Nijboer, Ursula Broermann Brain-Computer Interfaces for Communication and Control in Locked-in Patients [7] Tiziano D Albis, A predictive speller for a brain-computer interface based on motor imagery [8] Craig W. Thompson, Kenneth M. Ross, Harry R. Tennant and Richard M. Saenz, Building usable menu-based natural language interfaces to databases