Talk:BCI on Sockets

From AIRWiki
Revision as of 15:22, 14 September 2011 by MarioPolino (Talk | contribs)

Jump to: navigation, search

In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.

Sorgenti EBNeuro

Queste sono le librerie per l'uso del BENet su Windows:

Questi sono i sorgenti della DLL fornita da EbNeuro (BelIONet.dll):

Documentazione EBNeuro

Questi sono i file di testo che documentano i sorgenti di EbNeuro:

Configurazione Sistema

BENet:

  • IP: 192.168.171.212
  • Mask: 255.255.255.0
  • Mac: 00:50:C2:62:5D:D8

Dispositivo:

  • IP: 192.168.171.2
  • Mask: 255.255.255.0

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)

E' possibile cambiare la configurazione di rete di BENet. Si può fare via ControlSocket una volta che è stato caricato il primo Firmware(quello di BENet). Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi. Più informazioni su come configurare la rete di BENet possono essere trovate nella documentazione fornita da EBNeuro.

Example

public class Main {

	public static void main(String[] args) {
		//Creo lista degli indici
		ArrayList<Short> hwIndexList = new ArrayList<Short>();
		
		//Seleziono i canali che mi interessano
		hwIndexList.add(new Short((short) 0));	
		hwIndexList.add(new Short((short) 1));
		hwIndexList.add(new Short((short) 2));		
		hwIndexList.add(new Short((short) 3));
		hwIndexList.add(new Short((short) 4));
		
 		//Creo Buffer di Acquisizione
		SamplesBuffer sampleBuffer = new SamplesBuffer(1000);

		//Inizializzo BENet indicando Ip porte e buffer
		BENet benet = new BENet("192.168.171.212", 7023, 7024, 7025, sampleBuffer);
		//Setto parametri di acquisizione
		benet.acqParamsSet(hwIndexList, 512, (short) 0, (short) 0, (short) 0,
				(short) 0, (short) 50, null, 2, 512);
		//Avvio Acquisizione
		benet.acqStart();
		//Avvio Thread per la gestione dei dati in arrivo
		benet.startThreadData();


	}
}

Informazioni aggiuntive ricavate dai sorgenti

Le comunicazioni con il dispositivo avvengono su tre porte TCP:

  • 7023 Boot (loading del firmware)
  • 7024 Control (Invio di comandi e settaggi)
  • 7025 Data (Ricezione dati)

Reco Port

Sulla porta 7022 UDP è stato implementato un sistema per il riconoscimento dei dispositivi EBNeuro in una sottorete. Per ulteriori informazioni consultare la documentazione EBNeuro

Boot & Ctrl

Ogni messaggio di comunicazione deve avere il seguente formato.

STX 1 byte 0x02
Tag 1 byte
Length 2 byte short in BigEndian
msg  Lenght byte
ETX 1 byte 0x03
CampoSTXTagLengthmsgETX
Dimensione1 byte1 byte2 byteLength1 byte

CMD_TO_DSP

Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light

CampoSTXCMD_TO_DSPLengthCMDParC_LenParA_LenParCETX
Dimensione1 byte1 byte2 byte2byte2byte2byteParC byte1 byte
Info0x20x21Comandi indicati nei sorgenti come BE_CMD_*Length dei parametri che verrano passati Length attesa del pacchetto di risposta0x3

Prestare attenzione all'endianess della parte interna del pacchetto.

Data

La trasmissione sulla socket è monodirezionale, cioè si ricevono dati ma non si trasmette mai niente.

Ogni messaggio ricevuto ha il seguente formato.

Count 4 byte intero progressivo che segnala la progressività dei pacchetti.
Data 2 byte * numero Canali
Regs 44 byte Registri di memoria del dispositivo, vengono inviati solo se è attivo il dispatch mode 
CampoCountDataRegs(Opzionale)
Dimensione4 byte2 byte* n°Chn44 byte

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.

i dati così ottenuti devono essere normalizzati in base ad una tabella di sensibilità che dipende dal Dynamic Range impostato in fase di Settaggio. Per il B.E.Light:

DynRangeScale Factor
00.125
12.05

Dump Sessione

Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.