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: Questo ritardo viene introdotto per lasciare al relay controllato da A2 il tempo necessario a scattare. Se la Stazione di Comando si trova già in Modalità di Servizio, la trasmissione dei comandi non viene ritardata.

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