Difference between revisions of "Talk:BCI on Sockets"
MarioPolino (Talk | contribs) m (→CMD_TO_DSP) |
MarioPolino (Talk | contribs) m |
||
Line 22: | Line 22: | ||
Non abbiamo provato a cambiare la configurazione in quanto la configurazioni rimangono salvate nel dispositivo, e una configurazione sbagliata potrebbe causare problemi. | 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. | 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= | =Informazioni aggiuntive ricavate dai sorgenti= | ||
Le comunicazioni con il dispositivo avvengono su tre porte TCP: | Le comunicazioni con il dispositivo avvengono su tre porte TCP: |
Revision as of 15:22, 14 September 2011
In questa sezione sono raccolte tutte le informazioni riservate relative al progetto.
Contents
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
Campo | STX | Tag | Length | msg | ETX |
---|---|---|---|---|---|
Dimensione | 1 byte | 1 byte | 2 byte | Length | 1 byte |
CMD_TO_DSP
Mandato sulla control Socket CMD_TO_DSP è il comando che permette di comunicare con B.E. Light
Campo | STX | CMD_TO_DSP | Length | CMD | ParC_Len | ParA_Len | ParC | ETX |
---|---|---|---|---|---|---|---|---|
Dimensione | 1 byte | 1 byte | 2 byte | 2byte | 2byte | 2byte | ParC byte | 1 byte |
Info | 0x2 | 0x21 | Comandi indicati nei sorgenti come BE_CMD_* | Length dei parametri che verrano passati | Length attesa del pacchetto di risposta | 0x3 |
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
Campo | Count | Data | Regs(Opzionale) |
---|---|---|---|
Dimensione | 4 byte | 2 byte* n°Chn | 44 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:
DynRange | Scale Factor |
---|---|
0 | 0.125 |
1 | 2.05 |
Dump Sessione
Nel seguente file si trova un dump di una sessione di connessione fatto a livello di rete con wireshark.