Penso di aver scoperto per caso un'esigenza nella mia vita di sistemi embedded. Che è grandioso! E un po 'spaventoso. E ho bisogno di aiuto.
Contesto : sono stato assunto per creare un'applicazione GUI che prende scansioni da due SICK LMS-291 e le integra con un GPS con precisione inferiore a pollici, in modo da sapere dove è avvenuta ogni scansione. Come programmatore web ingenuo che sono, ho capito che i tempi sarebbero stati importanti, ma non mi ero reso conto che sarebbe stato difficile! Se non sai quando si sono verificati ciascun punto GPS e ciascuna scansione, non puoi capire dove si verificano le scansioni. Ops.
Avevano specificato Windows 7 come piattaforma, oltre a comprare una scatola SeaLevel RS422 su USB per collegare i sensori e il GPS, e in breve tempo ho scoperto la mia follia. A metà strada tra i sensori e il mio programma per computer, qualcosa stava impedendo alle scansioni di arrivare in modo tempestivo. L'LMS emette 75 scansioni al secondo o a 13,32 ms / scan. Il mio programma non li ottiene in modo tempestivo. Li ottiene ogni 100 o circa millisecondi, in gruppi di 7 o 8 o 10 o qualcosa del genere. Inoltre a volte non vengono visualizzate scansioni sufficienti o sono alterate. O questo adattatore SeaPort invia solo dieci volte al secondo (è possibile? Non so come funziona l'USB) o Windows non controlla il buffer (ci deve essere un buffer da qualche parte, giusto?) Abbastanza spesso.
Oggi : questo porta ad alcune imprecisioni con cui il cliente è sostanzialmente d'accordo. Non lo sono, però, e poiché ho la possibilità di fare un lavoro simile per il cliente (integrando più input di sensori!), Mi piacerebbe capire come farlo nel modo giusto, ad es. Data l'accuratezza del GPS , essere in grado di fornire garanzie sulla precisione e l'accuratezza delle posizioni di scansione.
Che aspetto ha? Ho bisogno di un'interfaccia utente e per poter controllare l'input da questi tre dispositivi ogni 13,32 millisecondi. Se usassi FreeRTOS con, diciamo, Nano-X per la GUI, girassi su un laptop che forniscono, sembrerebbe una soluzione sana? È possibile che l'adattatore da RS-422 a USB stia causando questi ritardi e l'utilizzo di Windows in realtà va bene per questo scopo?