Controllo hardware su un computer. Ma che ne dici di diversi?

1

Per un po 'ho riflettuto sulla questione, data una specifica dell'interfaccia standard, se esiste un modo per consentire a più programmi di controllare più dispositivi hardware attraverso la rete. Il programma con cui sto lavorando è l'implementazione standard dello standard ASCOM .

In breve, il principio è che qualsiasi programma può chiamare un altro programma o driver conosciuto e aspettarsi (dal punto di vista del computer) di implementare determinate interfacce standard, consentendo al programma chiamante di controllare l'hardware. Attualmente usiamo solo COM e .NET per fare questo.

Ciò consente a molti produttori di hardware e software di creare software e driver che funzionano tutti insieme. Ormai sta diventando abbastanza standard, comprese le compagnie di telescopi standard che forniscono driver.

All'interno del gruppo ASCOM, abbiamo abbiamo discusso su come farlo attraverso la rete, ma dal momento che siamo più di un gruppo di utenti con un paio di core core, non siamo mai stati in grado di decidere veramente cosa un buon modo per farlo. Per capire meglio la situazione, poiché ho già realizzato un sistema di dimostrazione del concetto che funziona, ecco alcune domande.

  1. Quali trasporti / pipe / interruzioni sono disponibili che la maggior parte o tutte le lingue supportano su tutti i sistemi operativi? O il sistema operativo di trasporto è specifico? Voglio dire, ad esempio, l'interoperabilità COM è su Windows. C'è un equivalente su Linux, ad esempio, che funzionerebbe allo stesso modo e che la lingua potesse usare in modo intercambiabile? La maggior parte delle lingue supporta l'IO di rete. Dobbiamo usarlo per la comunicazione tra processi o ci sono altre opzioni?
  2. Per rendere qualcosa di veramente indipendente dalla piattaforma e dal linguaggio, sarebbe quasi necessario avere a che fare con stringhe di testo, non con oggetti binari. Quali formati standard esistono e quali sono i pro e i contro di ciascuno.
  3. Quali sono i tuoi pensieri su come far interagire più lingue su un solo computer? Funziona bene? Inter-processo o intra-processo pure?
  4. Qualcosa come ASCOM è fatto in qualsiasi altro campo dell'informatica? O gli astronomi sono le uniche persone che collegano insieme vari programmi software e dispositivi hardware per ottenere un sistema funzionante?

Se hai bisogno di ulteriori informazioni, non esitare a chiedere. La home page degli standard ASCOM è breve e, si spera, potrebbe aiutare a illustrare un po 'le cose, ma non mi aspetto che tu esegua la scansione di tutto il sito prima che tu possa rispondere. : D

    
posta Arlen Beiler 11.08.2014 - 23:45
fonte

1 risposta

1

Presumo che la tecnologia di base comune sia i pacchetti TC / IP e una sorta di protocollo a pacchetti in cima. La domanda è quale?

Se i requisiti di prestazioni sono estremi e hai la volontà di scrivere codice di basso livello, probabilmente utilizzerai qualcosa basato su UDP. Questo è un protocollo senza connessione adatto per le comunicazioni peer-to-peer, ma dovrai scrivere un bel po 'di codice di protocollo. I buffer di protocollo (come menzionato da @mattnz) forniscono un modo per generare le strutture e le convenzioni necessarie per supportare i protocolli binari di basso livello attraverso un'ampia varietà di linguaggi e architetture differenti.

Se i requisiti di prestazioni sono moderati e devi supportare molti dispositivi di livello molto basso, probabilmente utilizzerai qualcosa basato sui socket TCP. L'approccio naturale è quello di scrivere server host e client di dispositivo, e ancora una volta i buffer di protocollo potrebbero essere la soluzione giusta. Potresti utilizzarlo per un feed di dati della videocamera, ma non tanto per inviare semplicemente le istruzioni per posizionare un telescopio.

Se i requisiti di prestazione sono meno impegnativi e i dispositivi sono tutti programmati con linguaggi di alto livello, allora potresti scegliere qualcosa in base a HTTP. È abbastanza facile scrivere un server sofisticato sul lato host supportando cose come SOAP, XML, JSON e REST. Un semplice client deve solo assemblare una stringa e inviarla tramite un socket. Esistono librerie disponibili in più lingue per supportare queste tecnologie e in molti modi sono il naturale successore del COM / DCOM che stai già utilizzando. Questo sarebbe adatto per inviare stringhe di comando e ricevere risposte, ma forse meno per grandi quantità di dati binari.

Speriamo che uno o più di questi si adattino a ciò di cui hai bisogno.

    
risposta data 13.08.2014 - 13:34
fonte

Leggi altre domande sui tag