Relazione tra app, porte seriali e driver di dispositivo

1

Nota: Sebbene questa domanda menzioni Java e persino una specifica libreria Java, ha davvero niente da fare con Java ed è molto più di comunicazione seriale e driver di dispositivo . In quanto tale, penso che questo possa essere risolto da chiunque abbia esperienza in quei campi.

Sono in "Enterprise Java Land" da un po 'di tempo e sto cercando di raggiungere i livelli più bassi e capire le cose più vicine al bare metal. Sto cercando di capire le porte seriali ei driver dei dispositivi, e come si relazionano tra loro, e non vedo la foresta tra gli alberi su alcune cose.

Ho riflettuto a lungo su come porre una domanda succinta su questo argomento per i miei principali bloccanti mentali, e penso che il modo migliore per farlo sia chiedere un esempio specifico, e quindi provare a generalizzare la soluzione ( s).

Prendi il seguente esempio:

Esiste una libreria Java per leggere / scrivere dati da / verso le porte seriali chiamata JSerialComm . Se volevo che la mia app Java potesse comunicare direttamente con una porta seriale, posso usare JSerialComm per portare a termine il lavoro.

Dire che sono un ragazzo di elettronica e ho costruito un circuito davvero impressionante su una breadboard. Non importa ciò che fa questo circuito, a parte che ha un sacco di componenti IO (LED, forse alcuni motori, ecc.). Voglio connettere questo circuito al mio portatile tramite la porta seriale, e quindi controllarlo dalla mia app tramite JSerialComm (o qualche lib comparabile / alternativa):

  • Questo circuito dovrebbe essere conforme a RS232? Perché perché no? E se sì, come?
  • Questo circuito avrebbe bisogno del proprio driver di dispositivo nativo? Perché perché no? Se sì, allora perché dovrei avere bisogno di un driver quando posso comunicare con la porta attraverso JSerialComm? E se no, allora cosa stabilisce se è possibile parlare con un dispositivo esterno direttamente tramite la porta (JSerialComm) o quando è necessario utilizzare un driver di dispositivo nativo?

Ancora una volta, non penso che dovrebbe importare quale linguaggio di cui stiamo parlando (Java, C ++, Python, ecc.). Grazie in anticipo!

    
posta smeeb 28.03.2017 - 06:00
fonte

1 risposta

2

RS-232 definisce le caratteristiche elettriche e la temporizzazione dei segnali, il significato dei segnali e le dimensioni fisiche e la piedinatura dei connettori. Il tuo circuito dovrebbe chiaramente adattarsi a questo. La segnalazione RS-232 ha tensioni da +3 a +15 e da -3 a -15, se i tuoi componenti non sono in grado di gestire il +/- 15, ad esempio, provare a parlarci potrebbe rilasciare il fumo magico.

Per implementare RS-232, poiché i livelli di segnalazione non sono usati praticamente da nessun'altra parte, è necessario un convertitore di segnale per convertire i segnali in livelli di tensione utilizzati dalla MCU. Un MAX232 è uno di questi componenti che viene utilizzato in circa un gazillion a tale scopo. Per ulteriori dettagli su come funzionerebbe, consultare la scheda tecnica MAX232.

Per quanto riguarda il driver, non è necessario crearne uno, tuttavia è necessario scrivere software applicativo per comunicare con esso. Il driver per la porta seriale sul computer indica al sistema operativo come parlare con l'hardware specializzato. Probabilmente il tuo computer non avrebbe un MAX232, ma avrebbe altri componenti che soddisfano rotoli simili. Il driver del sistema operativo fornisce i mezzi per accedere a un buffer di invio e ricezione di piccole dimensioni e un mezzo per verificare lo stato dei pin come RTS e CTS. Non ho mai usato JSerialComm, ma è probabilmente un semplice wrapper attorno all'interfaccia della porta seriale nativa del tuo sistema operativo.

Quando si è a livello di applicazione, il driver espone per la maggior parte un flusso di byte di input e output. In molti modi, può essere pensato in modo simile ai flussi di rete. Dovresti definire un protocollo che il tuo dispositivo dovrebbe pronunciare, così puoi inviare messaggi per accendere i motori e spegnere i LED. Non hai bisogno di un driver OS, perché a quel punto tutte le comunicazioni possono essere fatte attraverso i driver della porta seriale esistenti.

    
risposta data 28.03.2017 - 06:21
fonte

Leggi altre domande sui tag