Connetti l'applicazione per PC a un gruppo di dispositivi hardware simili, usando TCP

0

La nostra azienda ha iniziato a progettare un sistema in cui molte piattaforme (tipicamente 4 o 6) sensibili alla forza, contenenti celle di carico, trasmettono i dati al PC tramite TCP.

Ogni piattaforma e il PC devono essere collegati tramite un cavo di rete a uno switch di rete che funge da hub.

Ogni piattaforma eseguirà un dispositivo microcontrollato, con un firmware sviluppato dal nostro fornitore.

Quindi le mie domande sono:

What is the recommended client/server relationship between the software application and each one of the peripherals?

Should the application establish one connection for each platform?

All'inizio penserei che la piattaforma dovrebbe essere il server (ascoltatore), in modo che rimanga continuamente in "attesa" (ascolto) quando acceso, in attesa che il PC chieda di connettersi ad esso (mi chiedo come specificare l'IP corretto, però ...).

Ma dal momento che il PC è solo uno e le piattaforme sono molte, forse il PC dovrebbe essere il "server", dato che ogni periferica è uno dei tanti "client"? Questo mi ha confuso ...

    
posta heltonbiker 06.08.2015 - 22:26
fonte

2 risposte

1

Trasmissione: l'approccio più semplice

Data:

Each platform and the PC shall be connected by network cable to a network switch acting as a hub.

Dovrebbe essere sicuro assumere che i dispositivi si trovino tutti sulla stessa rete. Ognuno di questi dispositivi lancia i suoi dati nella trasmissione per la rete e non ti preoccupare. Non è necessario configurare dove si trova il server, o anche se è attivo fino a quel momento (o in basso, e deve essere ricollegato). I dispositivi lanciano i loro dati e continuano con la raccolta.

Anche il server è altrettanto semplice. Ascolta i pacchetti trasmessi alla rete, quando ne riceve uno, lo elabora e continua con l'ascolto dei pacchetti.

Questa è davvero la cosa più semplice che puoi fare, e funzionerà se tutto è sulla stessa rete (può diventare rumoroso per altre cose sulla rete se ci sono molti sensori che forniscono dati).

Code di messaggi

Se sei disposto a investire un po 'di tempo nei dispositivi e quali dati stanno inviando, l'uso di una coda di messaggi può semplificare l'architettura. In particolare, ZeroMQ che consente una struttura più formale.

Ancora una volta, i dispositivi scrivono su un feed e il server legge da esso. Ecco le basi di esso. È un approccio piuttosto flessibile e ci sono molte architetture che possono essere applicate qui a seconda delle specifiche del bisogno.

Se vuoi andare con qualcosa che ha una consegna garantita, guarda a uno che ha un broker di messaggi più robusto. Ciò consente quindi alle strutture di ragionare un po 'di più sull'inclusione di fare cose come avere più lavoratori / consumatori fuori dalla coda dei messaggi per elaborare i dati se il carico inizia ad avere un problema (ma si vuole assicurarsi che ogni messaggio vada solo a un lavoratore).

    
risposta data 07.08.2015 - 05:10
fonte
0

Dal punto di vista del consumatore, voglio a) impostazione semplice e opzionalmente b) cose da connettere a Internet.

Per il punto a) i dispositivi dovrebbero essere in grado di rilevare automaticamente il server, sulla rete locale (ad es. Zeroconf) o su Internet.

Per quanto riguarda b) visto che stai già pianificando di usare TCP, probabilmente HTTP non aggiungerà molto impegno. Probabilmente può essere d'aiuto nella progettazione dato che non dovrai pensare al protocollo da usare, come aggiungere sicurezza, ecc. Particolarmente utile perché la parte server sarebbe molto semplice.

    
risposta data 07.08.2015 - 04:03
fonte

Leggi altre domande sui tag