https://airwiki.elet.polimi.it/api.php?action=feedcontributions&user=MarioPolino&feedformat=atomAIRWiki - User contributions [en]2024-03-29T10:06:50ZUser contributionsMediaWiki 1.25.6https://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13604Talk:BCI on Sockets2011-09-15T17:00:37Z<p>MarioPolino: /* Classe BENet */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al driver B-Rain scritto in java per il BENet.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/BENetdll.tar.bz2 BENetdll.tar.bz2]<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll):<br />
<br />
[http://173.0.57.181/files/BRain/sorgentiEBNeuro.zip sorgentiEBNeuro.zip]<br />
<br />
Questi sono i binari dei firmware che la dll invia al BNet:<br />
<br />
[http://173.0.57.181/files/BRain/firmware.zip firmware.zip]<br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro:<br />
<br />
[http://173.0.57.181/files/BRain/B8630061126_W1A.doc Specifiche/Architettura Software]<br />
<br />
[http://173.0.57.181/files/BRain/BelioNet.doc Mizar & BE Light I/O Module]<br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
==Router==<br />
Abbiamo configurato un Router per la connessione wireless con BENet<br />
*Router: D-Link DI624<br />
*Credenziali: admin lavadmin<br />
*essid: B-Rain<br />
*passwifi: brainwpa<br />
*Pannello Amministrazione: 192.168.171.1<br />
<br />
=API del driver B-Rain=<br />
Documentazione dei Metodi pubblici del driver B-Rain<br />
==Classe BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer) throws ConnectionProblem<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
<br />
In caso di problemi riscontrati durante l'instaurazione della connessione viene sollevata l'eccezione ConnectionProblem.<br />
<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. ([http://173.0.57.181/files/BRain/hwindexmap.jpg HwIndex Map])<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*highPass indice del filtro passa alto Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*notch frequenza per filtro Notch<br />
*label Non abbiamo trovato utilità a questo parametro. Comunque è stato inserito in quanto parte della struttura che poi viene inviata al dispositivo per il settaggio dei canali<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
<br />
==AcqStart==<br />
void AcqStart()<br />
Metodo che attiva la modalità di acquisizione EEG<br />
Da lanciare prima di leggere dalla dataSocket<br />
==OhmStart==<br />
void OhmStart()<br />
Metodo che attiva la modalità OhmMeter<br />
Da lanciare prima di chiedere i valori di impedenza<br />
==startThreadData==<br />
void startThreadData()<br />
Avvia il Thread di Acquisizione dati.<br />
==stopThreadData==<br />
void stopThreadData()<br />
Interrompe il Thread di Acquisizione dati.<br />
==AcqStop==<br />
void AcqStop()<br />
Disattiva le modalità di acquisizione(spegne sia AcqStart che ohmStart)<br />
<br />
=Example=<br />
Questo è un esempio di utilizzo delle dll di EbNeuro su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/esempioUsodll.zip esempioUsodll.zip]<br />
<br />
Questo è un esempio dell'uso dei metodi pubblici della classe BENet del driver B-Rain per un'acquisizione EEG della durata di 10 minuti:<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
//Interruzione dell'acquisizione dopo 10 minuti<br />
int minutiDiAcquisizione = 10;<br />
Tools.waitSeconds(minutiDiAcquisizione*60);<br />
benet.stopThreadData();<br />
benet.acqStop();<br />
<br />
<br />
}<br />
}<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short (attenzione all'endianess)<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
<br />
Nel caso di perdita della connessione i dati vengono immagazzinati dal BENet in un buffer di grandezza di circa 800 byte (circa 30 secondi di acquisizione su 28 canali). Nel caso si saturi questo buffer e la connessione non sia ristabilita entro il proporzionale ammontare di secondi, i pacchetti successivi all'ultimo pacchetto ricevuto vengono scartati e si riceveranno i nuovi pacchetti con indici perciò maggiori del successivo pacchetto atteso. La perdita di questi pacchetti viene solo notificata nell'output, si lascia a chi utilizzerà il driver la possibilità di modificare il comportamento in questo caso.<br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark:<br />
<br />
[http://173.0.57.181/files/BRain/EsempiodiAcquisizione.pcap EsempiodiAcquisizione.pcap]</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13597Talk:BCI on Sockets2011-09-15T16:49:07Z<p>MarioPolino: /* Router */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al driver B-Rain scritto in java per il BENet.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/BENetdll.tar.bz2 BENetdll.tar.bz2]<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll):<br />
<br />
[http://173.0.57.181/files/BRain/sorgentiEBNeuro.zip sorgentiEBNeuro.zip]<br />
<br />
Questi sono i binari dei firmware che la dll invia al BNet:<br />
<br />
[http://173.0.57.181/files/BRain/firmware.zip firmware.zip]<br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro:<br />
<br />
[http://173.0.57.181/files/BRain/B8630061126_W1A.doc Specifiche/Architettura Software]<br />
<br />
[http://173.0.57.181/files/BRain/BelioNet.doc Mizar & BE Light I/O Module]<br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
==Router==<br />
Abbiamo configurato un Router per la connessione wireless con BENet<br />
*Router: D-Link DI624<br />
*Credenziali: admin lavadmin<br />
*essid: B-Rain<br />
*passwifi: brainwpa<br />
*Pannello Amministrazione: 192.168.171.1<br />
<br />
=API del driver B-Rain=<br />
Documentazione dei Metodi pubblici del driver B-Rain<br />
==Classe BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. ([http://173.0.57.181/files/BRain/hwindexmap.jpg HwIndex Map])<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*highPass indice del filtro passa alto Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*notch frequenza per filtro Notch<br />
*label Non abbiamo trovato utilità a questo parametro. Comunque è stato inserito in quanto parte della struttura che poi viene inviata al dispositivo per il settaggio dei canali<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
<br />
==AcqStart==<br />
void AcqStart()<br />
Metodo che attiva la modalità di acquisizione EEG<br />
Da lanciare prima di leggere dalla dataSocket<br />
==OhmStart==<br />
void OhmStart()<br />
Metodo che attiva la modalità OhmMeter<br />
Da lanciare prima di chiedere i valori di impedenza<br />
==startThreadData==<br />
void startThreadData()<br />
Avvia il Thread di Acquisizione dati.<br />
==stopThreadData==<br />
void stopThreadData()<br />
Interrompe il Thread di Acquisizione dati.<br />
==AcqStop==<br />
void AcqStop()<br />
Disattiva le modalità di acquisizione(spegne sia AcqStart che ohmStart)<br />
<br />
=Example=<br />
Questo è un esempio di utilizzo delle dll di EbNeuro su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/esempioUsodll.zip esempioUsodll.zip]<br />
<br />
Questo è un esempio dell'uso dei metodi pubblici della classe BENet del driver B-Rain per un'acquisizione EEG della durata di 10 minuti:<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
//Interruzione dell'acquisizione dopo 10 minuti<br />
int minutiDiAcquisizione = 10;<br />
Tools.waitSeconds(minutiDiAcquisizione*60);<br />
benet.stopThreadData();<br />
benet.acqStop();<br />
<br />
<br />
}<br />
}<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short (attenzione all'endianess)<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark:<br />
<br />
[http://173.0.57.181/files/BRain/EsempiodiAcquisizione.pcap EsempiodiAcquisizione.pcap]</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13596Talk:BCI on Sockets2011-09-15T16:48:44Z<p>MarioPolino: /* Configurazione Sistema */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al driver B-Rain scritto in java per il BENet.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/BENetdll.tar.bz2 BENetdll.tar.bz2]<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll):<br />
<br />
[http://173.0.57.181/files/BRain/sorgentiEBNeuro.zip sorgentiEBNeuro.zip]<br />
<br />
Questi sono i binari dei firmware che la dll invia al BNet:<br />
<br />
[http://173.0.57.181/files/BRain/firmware.zip firmware.zip]<br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro:<br />
<br />
[http://173.0.57.181/files/BRain/B8630061126_W1A.doc Specifiche/Architettura Software]<br />
<br />
[http://173.0.57.181/files/BRain/BelioNet.doc Mizar & BE Light I/O Module]<br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
==Router==<br />
Abbiamo configurato un Router per la connessione wireless con BENet<br />
Router: D-Link DI624<br />
Credenziali: admin lavadmin<br />
essid: B-Rain<br />
passwifi: brainwpa<br />
Pannello Amministrazione: 192.168.171.1<br />
<br />
=API del driver B-Rain=<br />
Documentazione dei Metodi pubblici del driver B-Rain<br />
==Classe BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. ([http://173.0.57.181/files/BRain/hwindexmap.jpg HwIndex Map])<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*highPass indice del filtro passa alto Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*notch frequenza per filtro Notch<br />
*label Non abbiamo trovato utilità a questo parametro. Comunque è stato inserito in quanto parte della struttura che poi viene inviata al dispositivo per il settaggio dei canali<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
<br />
==AcqStart==<br />
void AcqStart()<br />
Metodo che attiva la modalità di acquisizione EEG<br />
Da lanciare prima di leggere dalla dataSocket<br />
==OhmStart==<br />
void OhmStart()<br />
Metodo che attiva la modalità OhmMeter<br />
Da lanciare prima di chiedere i valori di impedenza<br />
==startThreadData==<br />
void startThreadData()<br />
Avvia il Thread di Acquisizione dati.<br />
==stopThreadData==<br />
void stopThreadData()<br />
Interrompe il Thread di Acquisizione dati.<br />
==AcqStop==<br />
void AcqStop()<br />
Disattiva le modalità di acquisizione(spegne sia AcqStart che ohmStart)<br />
<br />
=Example=<br />
Questo è un esempio di utilizzo delle dll di EbNeuro su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/esempioUsodll.zip esempioUsodll.zip]<br />
<br />
Questo è un esempio dell'uso dei metodi pubblici della classe BENet del driver B-Rain per un'acquisizione EEG della durata di 10 minuti:<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
//Interruzione dell'acquisizione dopo 10 minuti<br />
int minutiDiAcquisizione = 10;<br />
Tools.waitSeconds(minutiDiAcquisizione*60);<br />
benet.stopThreadData();<br />
benet.acqStop();<br />
<br />
<br />
}<br />
}<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short (attenzione all'endianess)<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark:<br />
<br />
[http://173.0.57.181/files/BRain/EsempiodiAcquisizione.pcap EsempiodiAcquisizione.pcap]</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13595Talk:BCI on Sockets2011-09-15T15:47:16Z<p>MarioPolino: /* acqParamSet */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al driver B-Rain scritto in java per il BENet.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/BENetdll.tar.bz2 BENetdll.tar.bz2]<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll):<br />
<br />
[http://173.0.57.181/files/BRain/sorgentiEBNeuro.zip sorgentiEBNeuro.zip]<br />
<br />
Questi sono i binari dei firmware che la dll invia al BNet:<br />
<br />
[http://173.0.57.181/files/BRain/firmware.zip firmware.zip]<br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro:<br />
<br />
[http://173.0.57.181/files/BRain/B8630061126_W1A.doc Specifiche/Architettura Software]<br />
<br />
[http://173.0.57.181/files/BRain/BelioNet.doc Mizar & BE Light I/O Module]<br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
=API del driver B-Rain=<br />
Documentazione dei Metodi pubblici del driver B-Rain<br />
==Classe BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. ([http://173.0.57.181/files/BRain/hwindexmap.jpg HwIndex Map])<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*highPass indice del filtro passa alto Non abbiamo trovato questi indici. Chiedere ad EBNeuro<br />
*notch frequenza per filtro Notch<br />
*label Non abbiamo trovato utilità a questo parametro. Comunque è stato inserito in quanto parte della struttura che poi viene inviata al dispositivo per il settaggio dei canali<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
<br />
==AcqStart==<br />
void AcqStart()<br />
Metodo che attiva la modalità di acquisizione EEG<br />
Da lanciare prima di leggere dalla dataSocket<br />
==OhmStart==<br />
void OhmStart()<br />
Metodo che attiva la modalità OhmMeter<br />
Da lanciare prima di chiedere i valori di impedenza<br />
==startThreadData==<br />
void startThreadData()<br />
Avvia il Thread di Acquisizione dati.<br />
==stopThreadData==<br />
void stopThreadData()<br />
Interrompe il Thread di Acquisizione dati.<br />
==AcqStop==<br />
void AcqStop()<br />
Disattiva le modalità di acquisizione(spegne sia AcqStart che ohmStart)<br />
<br />
=Example=<br />
Questo è un esempio di utilizzo delle dll di EbNeuro su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/esempioUsodll.zip esempioUsodll.zip]<br />
<br />
Questo è un esempio dell'uso dei metodi pubblici della classe BENet del driver B-Rain per un'acquisizione EEG della durata di 10 minuti:<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
//Interruzione dell'acquisizione dopo 10 minuti<br />
int minutiDiAcquisizione = 10;<br />
Tools.waitSeconds(minutiDiAcquisizione*60);<br />
benet.stopThreadData();<br />
benet.acqStop();<br />
<br />
<br />
}<br />
}<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short (attenzione all'endianess)<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark:<br />
<br />
[http://173.0.57.181/files/BRain/EsempiodiAcquisizione.pcap EsempiodiAcquisizione.pcap]</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13594Talk:BCI on Sockets2011-09-15T15:46:24Z<p>MarioPolino: /* acqParamSet */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al driver B-Rain scritto in java per il BENet.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/BENetdll.tar.bz2 BENetdll.tar.bz2]<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll):<br />
<br />
[http://173.0.57.181/files/BRain/sorgentiEBNeuro.zip sorgentiEBNeuro.zip]<br />
<br />
Questi sono i binari dei firmware che la dll invia al BNet:<br />
<br />
[http://173.0.57.181/files/BRain/firmware.zip firmware.zip]<br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro:<br />
<br />
[http://173.0.57.181/files/BRain/B8630061126_W1A.doc Specifiche/Architettura Software]<br />
<br />
[http://173.0.57.181/files/BRain/BelioNet.doc Mizar & BE Light I/O Module]<br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
=API del driver B-Rain=<br />
Documentazione dei Metodi pubblici del driver B-Rain<br />
==Classe BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. ([http://173.0.57.181/files/BRain/hwindexmap.jpg HwIndex Map])<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso vedi EBNeuro<br />
*highPass indice del filtro passa alto vedi EBNeuro<br />
*notch frequenza per filtro Notch<br />
*label Non abbiamo trovato utilità a questo parametro. Comunque è stato inserito in quanto parte della struttura che poi viene inviata al dispositivo per il settaggio dei canali<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
<br />
==AcqStart==<br />
void AcqStart()<br />
Metodo che attiva la modalità di acquisizione EEG<br />
Da lanciare prima di leggere dalla dataSocket<br />
==OhmStart==<br />
void OhmStart()<br />
Metodo che attiva la modalità OhmMeter<br />
Da lanciare prima di chiedere i valori di impedenza<br />
==startThreadData==<br />
void startThreadData()<br />
Avvia il Thread di Acquisizione dati.<br />
==stopThreadData==<br />
void stopThreadData()<br />
Interrompe il Thread di Acquisizione dati.<br />
==AcqStop==<br />
void AcqStop()<br />
Disattiva le modalità di acquisizione(spegne sia AcqStart che ohmStart)<br />
<br />
=Example=<br />
Questo è un esempio di utilizzo delle dll di EbNeuro su Windows:<br />
<br />
[http://173.0.57.181/files/BRain/esempioUsodll.zip esempioUsodll.zip]<br />
<br />
Questo è un esempio dell'uso dei metodi pubblici della classe BENet del driver B-Rain per un'acquisizione EEG della durata di 10 minuti:<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
//Interruzione dell'acquisizione dopo 10 minuti<br />
int minutiDiAcquisizione = 10;<br />
Tools.waitSeconds(minutiDiAcquisizione*60);<br />
benet.stopThreadData();<br />
benet.acqStop();<br />
<br />
<br />
}<br />
}<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short (attenzione all'endianess)<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark:<br />
<br />
[http://173.0.57.181/files/BRain/EsempiodiAcquisizione.pcap EsempiodiAcquisizione.pcap]</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13569Talk:BCI on Sockets2011-09-14T14:55:29Z<p>MarioPolino: /* API */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
=API=<br />
Documentazione dei Metodi pubblici di BENet <br />
==BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. (vedi img)<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso<br />
*highPass indice del filtro passa alto<br />
*notch frequenza per filtro Notch<br />
*label ???<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
==AcqStart==<br />
void AcqStart()<br />
Metodo che attiva la modalità di acquisizione EEG<br />
Da lanciare prima di leggere dalla dataSocket<br />
==OhmStart==<br />
void OhmStart()<br />
Metodo che attiva la modalità OhmMeter<br />
Da lanciare prima di chiedere i valori di impedenza<br />
==startThreadData==<br />
void startThreadData()<br />
Avvia il Thred di Acquisizione dati.<br />
==AcqStop==<br />
void AcqStop()<br />
Disattiva le modalità di acquisizione(spegne sia AcqStart che ohmStart)<br />
<br />
=Example=<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
<br />
<br />
}<br />
}<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13568Talk:BCI on Sockets2011-09-14T14:50:52Z<p>MarioPolino: /* API */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
=API=<br />
Documentazione dei Metodi pubblici di BENet <br />
==BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. (vedi img)<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso<br />
*highPass indice del filtro passa alto<br />
*notch frequenza per filtro Notch<br />
*label ???<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
<br />
=Example=<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
<br />
<br />
}<br />
}<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13567Talk:BCI on Sockets2011-09-14T14:49:55Z<p>MarioPolino: /* acqParamSet */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
=API=<br />
==BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
Questo metodo setta tutti i canali con la medesima configurazione.<br />
E' possibile fare un settaggio differente per ogni canale ma questa funzionalità non è implementata in B-Rain.<br />
<br />
*hwIndexList lista degli indici dei canali che si voglio acquisire. (vedi img)<br />
*sampleRate Frequenza di acquisizione espressa in Hz<br />
*coupling 0 per AC, 1 per DC<br />
*dynRange Sensibilità dei canali [[Talk:BCI_on_Sockets#Data]]<br />
*lowPass indice del filtro passa basso<br />
*highPass indice del filtro passa alto<br />
*notch frequenza per filtro Notch<br />
*label ???<br />
*BufferSecs Seconds of DataBuffer (vedi EBNeuro src)<br />
*PacketRate Frequenza con cui lui di invia i pacchetti (Per come è fatto deve essere uguale a sampleRate)<br />
<br />
=Example=<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
<br />
<br />
}<br />
}<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13566Talk:BCI on Sockets2011-09-14T14:35:58Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
=API=<br />
==BENet==<br />
BENet(String IPAddress, int BootPort, int CtrlPort, int DataPort, SamplesBuffer sampleBuffer)<br />
Costruttore della Classe BENet.<br />
*IPAddress String Indirizzo IP del dispositivo a cui connettersi (192.168.171.212)<br />
*BootPort Porta per la gestione del boot (7023)<br />
*CtrlPort Porta per la gestione dei controlli (7024)<br />
*DataPort Porta per la ricezione dei dati (7025)<br />
*samplesBuffer Buffer circolare che immagazzina i dati.<br />
==acqParamSet==<br />
void acqParamsSet(ArrayList<Short> hwIndexList, int sampleRate,<br />
short coupling, short dynRange, short lowPass, short highPass,<br />
short notch, byte[] label, int BufferSecs, int PacketRate)<br />
=Example=<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
<br />
<br />
}<br />
}<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13565Talk:BCI on Sockets2011-09-14T14:22:03Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
=Example=<br />
public class Main {<br />
<br />
public static void main(String[] args) {<br />
//Creo lista degli indici<br />
ArrayList<Short> hwIndexList = new ArrayList<Short>();<br />
<br />
//Seleziono i canali che mi interessano<br />
hwIndexList.add(new Short((short) 0)); <br />
hwIndexList.add(new Short((short) 1));<br />
hwIndexList.add(new Short((short) 2)); <br />
hwIndexList.add(new Short((short) 3));<br />
hwIndexList.add(new Short((short) 4));<br />
<br />
//Creo Buffer di Acquisizione<br />
SamplesBuffer sampleBuffer = new SamplesBuffer(1000);<br />
<br />
//Inizializzo BENet indicando Ip porte e buffer<br />
BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);<br />
//Setto parametri di acquisizione<br />
benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,<br />
(short) 0, (short) 50, null, 2, 512);<br />
//Avvio Acquisizione<br />
benet.acqStart();<br />
//Avvio Thread per la gestione dei dati in arrivo<br />
benet.startThreadData();<br />
<br />
<br />
}<br />
}<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13564Talk:BCI on Sockets2011-09-14T09:29:08Z<p>MarioPolino: /* CMD_TO_DSP */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = "95%" border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13563Talk:BCI on Sockets2011-09-14T09:28:34Z<p>MarioPolino: /* CMD_TO_DSP */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = 650 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13562Talk:BCI on Sockets2011-09-14T09:28:19Z<p>MarioPolino: /* CMD_TO_DSP */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = 850 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13561Talk:BCI on Sockets2011-09-14T09:23:22Z<p>MarioPolino: /* CMD_TO_DSP */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td>Comandi indicati nei sorgenti come BE_CMD_*</td><td>Length dei parametri che verrano passati </td><td>Length attesa del pacchetto di risposta</td><td></td><td>0x3</td></tr><br />
</table><br />
Prestare attenzione all'endianess della parte interna del pacchetto.<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13560Talk:BCI on Sockets2011-09-14T09:18:38Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
ETX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>ETX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td> </td><td></td><td></td><td>LittleEndian</td><td>0x3</td></tr><br />
</table><br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13559Talk:BCI on Sockets2011-09-14T09:16:41Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
<tr><th>Info</th><td>0x2</td><td>0x21</td><td></td><td> </td><td></td><td></td><td>LittleEndian</td><td>0x3</td></tr><br />
</table><br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13558Talk:BCI on Sockets2011-09-14T09:14:09Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>CMD_TO_DSP</td><td>Length</td><td>CMD</td><td>ParC_Len</td><td>ParA_Len</td><td>ParC</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>2byte</td><td>2byte</td><td>2byte</td><td>ParC byte</td><td>1 byte</td></tr><br />
</table><br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13557Talk:BCI on Sockets2011-09-14T09:07:16Z<p>MarioPolino: /* Boot & Ctrl */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===CMD_TO_DSP===<br />
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light<br />
<br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13556Talk:BCI on Sockets2011-09-13T19:13:20Z<p>MarioPolino: /* Data */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordine non crescente sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0 ><br />
<tr align="center"><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr align="center"><td>0</td><td>0.125</td></tr><br />
<tr align="center"><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13553Talk:BCI on Sockets2011-09-13T16:08:18Z<p>MarioPolino: /* Data */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nnela Documentazione fornita da EBNeuro.<br />
<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 550 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
I dati trasmessi sono ordinati per canali in maniera rigorosamente crescente, per esempio se si utilizzano i canali con indice 7,5,23,22 anche se questi sono stati configurati in ordina casuale sulla data socket arriverà un pacchetto con 4 short in modo che il primo short apparterrà al canale 5.<br />
<br />
i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio.<br />
Per il B.E.Light:<br />
<table width = 250 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>DynRange</th><th>Scale Factor</th></tr><br />
<tr><td>0</td><td>0.125</td></tr><br />
<tr><td>1</td><td>2.05</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13552Talk:BCI on Sockets2011-09-13T15:56:27Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nnela Documentazione fornita da EBNeuro.<br />
<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
==Data==<br />
La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.<br />
<br />
Ogni messaggio ricevuto ha il seguente formato.<br />
Count 4 byte intero progressivo che segnala la progressività dei pacchetti.<br />
Data 2 byte * numero Canali<br />
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode <br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>Count</td><td>Data</td><td>Regs(Opzionale)</td></tr><br />
<tr><th>Dimensione</th><td>4 byte</td><td>2 byte* n°Chn</td><td>44 byte</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13551Talk:BCI on Sockets2011-09-13T15:50:49Z<p>MarioPolino: /* Boot */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nnela Documentazione fornita da EBNeuro.<br />
<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot & Ctrl==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
<br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13550Talk:BCI on Sockets2011-09-13T15:45:46Z<p>MarioPolino: /* Informazioni aggiuntive ricavate dai sorgenti */</p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nnela Documentazione fornita da EBNeuro.<br />
<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte TCP:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Reco Port===<br />
Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete.<br />
Per ulteriori informazioni consultare la documentazione EBNeuro<br />
==Boot==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13549Talk:BCI on Sockets2011-09-13T15:40:09Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nnela Documentazione fornita da EBNeuro.<br />
<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
==Boot==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
==Dump Sessione==<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13548Talk:BCI on Sockets2011-09-13T15:37:11Z<p>MarioPolino: </p>
<hr />
<div>In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.<br />
=Sorgenti EBNeuro=<br />
Queste sono le librerie per l'uso del BENet su Windows:<br />
<br />
Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll): <br />
<br />
=Documentazione EBNeuro=<br />
Questi sono i file di testo che documentano i sorgenti di EbNeuro: <br />
<br />
=Configurazione Sistema=<br />
BENet: <br />
*IP: <b>192.168.171.212</b><br />
*Mask: <b>255.255.255.0</b><br />
*Mac: <b>00:50:C2:62:5D:D8</b><br />
Dispositivo:<br />
*IP: <b>192.168.171.2</b><br />
*Mask: <b>255.255.255.0</b><br />
Per i nostri test abbiamo utilizzato qusi sempre l'indirizzo 192.168.171.2, ma un qualsiasi indirizzo della classe 192.168.171.0/24 funziona (naturalmente escluso il 212 che è del BENet)<br />
<br />
E' possibile cambiare la configurazione di rete di BENet.<br />
Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet).<br />
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi.<br />
Più informazioni su come configurare la rete di BENet possono essere trovate nnela Documentazione fornita da EBNeuro.<br />
<br />
<br />
=Informazioni aggiuntive ricavate dai sorgenti=<br />
Le comunicazioni con il dispositivo avvengono su tre porte:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
==Boot==<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table width = 350 border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table><br />
===Dump Sessione===<br />
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=Talk:BCI_on_Sockets&diff=13538Talk:BCI on Sockets2011-09-13T14:48:45Z<p>MarioPolino: Created page with "===Info=== Le comunicazioni con il dispositivo avvengono su tre porte: *7023 Boot (loading del firmware) *7024 Control (Invio di comandi e settaggi) *7025 Data (Ricezione dati) =..."</p>
<hr />
<div>===Info===<br />
Le comunicazioni con il dispositivo avvengono su tre porte:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Boot===<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table></div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=BCI_on_Sockets&diff=13508BCI on Sockets2011-09-06T20:32:50Z<p>MarioPolino: /* BeNet Driver */</p>
<hr />
<div>{{Project<br />
|title=BCI on Socket<br />
|image=Bci on socket.png<br />
|short_descr=Communication on TCP/IP between BCI Software modules<br />
|coordinator=MatteoMatteucci;<br />
|tutor=MatteoMatteucci;<br />
|students=MarioPolino; NikoZarzani;<br />
|resarea=BioSignal Analysis<br />
|restopic=Brain-Computer Interface;<br />
|start=2011/04/15<br />
|status=Active<br />
|level=Bs<br />
|type=Course<br />
}}<br />
Lo scopo del progetto BCI on Socket è quello di permettere l'acquisizione via rete dei segnali cerebrali.<br />
==Galileo Socket==<br />
[[Image:Bci on socket.png]]<br />
<br />
Galileo Socket è un programma scritto in C che si occupa di leggere dalla named pipe creata dal Galileo Plugin, successivamente ciò che viene letto dal sistema di acquisizione viene poi inviato via socket in modalità server con chi si connette a lui sulla porta 9999. L'invio dei dati per ora è in formato raw e si dovrebbe trattare di un array di float.<br />
<br />
Il programma ( galileo_socket.c ) è scaricabile dall'svn dell'airbat: <br />
https://svn.ws.dei.polimi.it/airbat/bci/polino+zarzani/Galileo%20Socket<br />
<br />
===How to compile===<br />
*Cygwin:<br />
''gcc galileo_socket.c -mno-cygwin -lwsock32 -o galileo_socket.exe''<br />
*Dev-C++:<br />
''Tools -> Compiler Options. Check '''Add these commands to the linker command line''' and write '''-lwsock32''' in the textbox.''<br />
<br />
==BeNet Driver==<br />
BeNet Driver è un programma scritto in Java per mediare l'acquisizione dei dati wireless con il dispositivo BENet.<br />
<br />
Il progetto BeNet è scaricabile dall'svn dell'airbat: https://svn.ws.dei.polimi.it/airbat/bci/polino+zarzani/BeNet<br />
<br />
===Info===<br />
Le comunicazioni con il dispositivo avvengono su tre porte:<br />
*7023 Boot (loading del firmware)<br />
*7024 Control (Invio di comandi e settaggi)<br />
*7025 Data (Ricezione dati)<br />
===Boot===<br />
Ogni messaggio di comunicazione deve avere il seguente formato.<br />
STX 1 byte 0x02<br />
Tag 1 byte<br />
Length 2 byte short in BigEndian<br />
msg Lenght byte<br />
EDX 1 byte 0x03<br />
<table border = 1 cellpadding=0 cellspacing=0><br />
<tr><th>Campo</th><td>STX</td><td>Tag</td><td>Length</td><td>msg</td><td>EDX</td></tr><br />
<tr><th>Dimensione</th><td>1 byte</td><td>1 byte</td><td>2 byte</td><td>Length</td><td>1 byte</td></tr><br />
</table></div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=BCI_on_Sockets&diff=13191BCI on Sockets2011-05-16T18:50:32Z<p>MarioPolino: /* How to compile */</p>
<hr />
<div>{{Project<br />
|title=BCI on Socket<br />
|image=Bci on socket.png<br />
|short_descr=Communication on TCP/IP between BCI Software modules<br />
|coordinator=MatteoMatteucci;<br />
|tutor=MatteoMatteucci;<br />
|students=MarioPolino; NikoZarzani;<br />
|resarea=BioSignal Analysis<br />
|restopic=Brain-Computer Interface;<br />
|start=2011/04/15<br />
|status=Active<br />
|level=Bs<br />
|type=Course<br />
}}<br />
[[Image:Bci on socket.png]]<br />
==Galileo Socket==<br />
===How to compile===<br />
*Cygwin:<br />
''gcc galileo_socket.c -mno-cygwin -lwsock32 -o galileo_socket.exe''<br />
*Dev-C++:<br />
''Tools -> Compiler Options. Check '''Add these commands to the linker command line''' and write '''-lwsock32''' in the textbox.''</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=BCI_on_Sockets&diff=13190BCI on Sockets2011-05-16T18:49:59Z<p>MarioPolino: How to compile galileo socket.</p>
<hr />
<div>{{Project<br />
|title=BCI on Socket<br />
|image=Bci on socket.png<br />
|short_descr=Communication on TCP/IP between BCI Software modules<br />
|coordinator=MatteoMatteucci;<br />
|tutor=MatteoMatteucci;<br />
|students=MarioPolino; NikoZarzani;<br />
|resarea=BioSignal Analysis<br />
|restopic=Brain-Computer Interface;<br />
|start=2011/04/15<br />
|status=Active<br />
|level=Bs<br />
|type=Course<br />
}}<br />
[[Image:Bci on socket.png]]<br />
==Galileo Socket==<br />
===How to compile===<br />
*Cygwin:<br />
''gcc galileo_socket.c -mno-cygwin -lwsock32 -o galileo_sock.exe''<br />
*Dev-C++:<br />
''Tools -> Compiler Options. Check '''Add these commands to the linker command line''' and write '''-lwsock32''' in the textbox.''</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=User:MarioPolino&diff=13085User:MarioPolino2011-04-26T10:48:48Z<p>MarioPolino: </p>
<hr />
<div>{{Student<br />
|category=Student<br />
|firstname=Mario<br />
|lastname=Polino<br />
|photo=MPolino.jpg<br />
|email=mpolino90@gmail.com<br />
|projectpage=BCI_on_Sockets<br />
|advisor=MatteoMatteucci<br />
|status=active<br />
}}<br />
Bachelor student in Computer Science Engineering, ord.270.<br />
<br />
== Biography ==<br />
<br />
I was born on July 17th 1990, in Rossano (CS). <br />
I attended high school at LSS V.Bachelet graduating in 2008. <br />
That same year, I enrolled at Polimi in Computer Science Engineering, ord. 270.<br />
<br />
I'm currently working at the Airlab under the guidance of Prof. Matteo Matteucci.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=User:MarioPolino&diff=13084User:MarioPolino2011-04-26T10:48:22Z<p>MarioPolino: </p>
<hr />
<div>{{Student<br />
|category=Student<br />
|firstname=Mario<br />
|lastname=Polino<br />
|photo=MPolino.jpg<br />
|email=mpolino90@gmail.com<br />
|projectpage=http://airlab.elet.polimi.it/index.php/BCI_on_Sockets<br />
|advisor=MatteoMatteucci<br />
|status=active<br />
}}<br />
Bachelor student in Computer Science Engineering, ord.270.<br />
<br />
== Biography ==<br />
<br />
I was born on July 17th 1990, in Rossano (CS). <br />
I attended high school at LSS V.Bachelet graduating in 2008. <br />
That same year, I enrolled at Polimi in Computer Science Engineering, ord. 270.<br />
<br />
I'm currently working at the Airlab under the guidance of Prof. Matteo Matteucci.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=BCI_on_Sockets&diff=13082BCI on Sockets2011-04-26T10:47:30Z<p>MarioPolino: New page: {{Project |title=BCI on Socket |short_descr=Communication on TCP/IP between BCI Software modules |coordinator=MatteoMatteucci; |tutor=MatteoMatteucci; |students=MarioPolino; NikoZarzani;...</p>
<hr />
<div>{{Project<br />
|title=BCI on Socket<br />
|short_descr=Communication on TCP/IP between BCI Software modules<br />
|coordinator=MatteoMatteucci; <br />
|tutor=MatteoMatteucci; <br />
|students=MarioPolino; NikoZarzani; <br />
|resarea=BioSignal Analysis<br />
|restopic=Brain-Computer Interface; <br />
|start=2011/04/15<br />
|status=Active<br />
|level=Bs<br />
|type=Course<br />
}}</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=User:MarioPolino&diff=13011User:MarioPolino2011-03-24T21:39:22Z<p>MarioPolino: </p>
<hr />
<div>{{Student<br />
|category=Student<br />
|firstname=Mario<br />
|lastname=Polino<br />
|photo=MPolino.jpg<br />
|email=mpolino90@gmail.com<br />
|advisor=MatteoMatteucci<br />
|status=active<br />
}}<br />
Bachelor student in Computer Science Engineering, ord.270.<br />
<br />
== Biography ==<br />
<br />
I was born on July 17th 1990, in Rossano (CS). <br />
I attended high school at LSS V.Bachelet graduating in 2008. <br />
That same year, I enrolled at Polimi in Computer Science Engineering, ord. 270.<br />
<br />
I'm currently working at the Airlab under the guidance of Prof. Matteo Matteucci.</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=User:MarioPolino&diff=13009User:MarioPolino2011-03-24T21:33:48Z<p>MarioPolino: </p>
<hr />
<div>{{Student<br />
|category=Student<br />
|firstname=Mario<br />
|lastname=Polino<br />
|photo=MPolino.jpg<br />
|email=mpolino90@gmail.com<br />
|advisor=MatteoMatteucci<br />
|status=active<br />
}}</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=User:MarioPolino&diff=13008User:MarioPolino2011-03-24T21:33:34Z<p>MarioPolino: New page: {{Student |category=Student |firstname=Mario |lastname=Polino |photo=MPolino.jpg |email=mpolino90@gmail.com |advisor=MatteoMatteucci; |status=active }}</p>
<hr />
<div>{{Student<br />
|category=Student<br />
|firstname=Mario<br />
|lastname=Polino<br />
|photo=MPolino.jpg<br />
|email=mpolino90@gmail.com<br />
|advisor=MatteoMatteucci; <br />
|status=active<br />
}}</div>MarioPolinohttps://airwiki.elet.polimi.it/index.php?title=File:MPolino.jpg&diff=13007File:MPolino.jpg2011-03-24T21:33:19Z<p>MarioPolino: </p>
<hr />
<div></div>MarioPolino