Protocollo
Sessione
Il collegamento è iniziato da un programma, aprendo una sessione con la porta TCP (default 61235) dell'interfaccia XnTcp. Una sola sessione per volta viene supportata. Mentre una sessione è attiva, richieste di collegamento da altri programmi operanti sullo stesso o su un altro computer vengono respinte finché:Trasferimento dati
La communicazione avviene attraverso un input ed un output stream di bytes. I comandi XpressNET vengono inviati (in entrambe le direzioni) in formato binario uno dopo l'altro senza alcun byte di controllo a separarli. Ogni comando trasmesso inizia con un header e si conclude con il byte X-OR di verifica. Per uteriori dettagli sui comandi, vedere le specifiche XpressNET (documento PDF). Poiché l'individuazione della fine del messaggio è resa possibile unicamente grazie al campo di lunghezza, contenuto nei 4 bit inferiori del header, la correttezza di questo campo è fondamentale al corretto funzionamento dell'interfaccia. Attenzione: l'interfaccia XnTcp supporta soltanto XpressNET in Versione 3.0 (versione corrente).
Pacchetti TCP
Le normali implementazioni di TCP ritardano usualmente la trasmissione dei dati sino a quando un numero di bytes sufficiente a riempire il buffer della macchina ricevente è stato accumulato. Per evitare questo accumulo di dati che può portare ad un decadimento delle prestazioni, il programma trasmettente deve chiamare periodicamente (ad esempio, alla fine di ogni comando XpressNET) la funzione flush di TCP.
Sincronizzazione
A differenza del protocollo RS-232, TCP non fornisce i segnali RTS/CTS, né alcun altro modo per determinare quando il sito remoto è pronto a ricevere dati. In circostanze normali, tuttavia, i controlli interni insiti nel protocollo TCP evitano la perdita di dati dovuta al completo riempimento dei buffer di trasmissione in entrambe le direzioni. Nonostante ciò, il programma trasmettente deve evitare di inviare troppi comandi senza attendere di aver ricevuto risposta. Poiché ad ogni comando inviato viene fornita una risposta, vuoi dalla Stazione di Comando, vuoi dall'interfaccia XnTcp, una soluzione tecnica applicabile è contare i comandi XpressNET in uscita ed in ingresso ed assicurarsi che la differenza tra i due contatori non superi una soglia predefinita.
Comandi di interfaccia
L'interfaccia XnTcp trasmette alla Stazione di Comando i messaggi inviati dal computer e viceversa, senza analizzarne il contenuto. Un'eccezione è data dai comandi che contengono il valore esadecimale F nei quattro bit superiori del header e che, in conformità alle specifiche XpressNET, vengono eseguiti dall'interfaccia stessa. I seguenti commandi sono supportati dall'interfaccia XnTcp:
Comando Esadecimale |
Significato |
0xF0 0xF0 | Richiesta della versione hardware e software dell'interfaccia |
0xF2 0x01 ADR X-Or-byte | Richiesta/Modifica dell'indirizzo XpressNET dell'interfaccia |
0xF2 0x02 BAUD X-Or-byte | Richiesta/Modifica della velocità di trasmissione (baudrate). La modifica della velocità di trasmissione non ha alcun effetto pratico ed è supportata soltanto per compatibilità con le interfacce RS-232. |
Per una descrizione dettagliata di questi comandi, delle risposte fornite dall'interfaccia e dei possibili messaggi di errore trasmessi dall'interfaccia, consultare le specifiche di XpressNET.
Mantenimento della connessione
Per evitare che il collegamento TCP/IP cada a causa di un time-out, quando la communicazione è rimasta inoperosa per 4 secondi l'interfaccia XnTcp invia al computer un messaggio di conferma non sollecitato (01 04 05).
Entrata in Modalità di Servizio posticipata
Quando il computer invia un comando che comporta l'ingresso in Modalità di Servizio (0x21 010... or 0x22... or 0x23...) e la Stazione di Comando non si trova già in tale modalità, l'interfaccia XnTcp:Servizio di ricerca
Sulle reti in cui è operante il servizio DHCP, il numero IP dell'interfaccia XnTcp può venir reperito inviando un Datagramma UDP di broadcast (porta di default 61234). Il Datagramma deve essere lungo un byte e deve contenere il valore esadecimale 25. L'interfaccia XnTcp risponde con un Datagramma di 18 bytes, contenente:
Bytes | Contenuto |
0-15 | Nome NetBios dell'interfaccia (ad esempio XNTCP001) |
16-17 | Numero della porta TCP utilizzata per la comunicazione XpressNET (Big endian) |
L'indirizzo IP è contenuto nello pseudo-header del Datagramma.
XpressNET è un marchio della Lenz Electronik, Gmbh