Je pense avoir découvert accidentellement un besoin dans ma vie de systèmes embarqués. Qui est super! Et un peu effrayant. Et j'ai besoin d'aide.
Contexte : J'ai été embauché pour créer une application graphique qui prend des numérisations de deux SICK LMS-291 et les intègre avec un GPS d'une précision inférieure à un pouce, afin que vous sachiez où chaque balayage s'est produit. En tant que programmeur web naïf que je suis, j'ai compris que le timing serait important, mais je ne savais pas que ce serait aussi difficile! Si vous ne savez pas quand chaque point GPS et chaque scan ont eu lieu, vous ne pouvez pas déterminer où les scans ont lieu. Oops.
Ils avaient spécifié Windows 7 comme plate-forme, et acheté un boîtier SeaLevel RS422 vers USB pour brancher les capteurs et le GPS, et en peu de temps j'ai découvert ma folie. Quelque part entre les capteurs et mon programme informatique, quelque chose empêchait les analyses d'arriver en temps opportun. Le LMS émet 75 scans par seconde, soit à 13,32 ms / scan. Mon programme ne les reçoit pas en temps opportun. Il les obtient toutes les 100 millisecondes environ, par groupes de 7 ou 8 ou 10 ou quelque chose. Parfois, il n'y a pas assez d'analyses ou elles sont mutilées. Soit cet adaptateur SeaPort n'envoie que dix fois par seconde (est-ce possible? Je ne sais pas comment fonctionne l'USB) soit Windows ne vérifie pas le tampon (il doit y avoir un tampon quelque part, non?) Presque assez souvent.
Aujourd'hui : cela conduit à des inexactitudes avec lesquelles le client est fondamentalement d'accord. Je ne le suis pas, cependant, et comme j'ai la chance de faire un travail similaire pour le client (en intégrant plus d'entrées de capteurs!), Je voudrais comprendre comment le faire correctement, par exemple compte tenu de la précision du GPS , être en mesure de donner des garanties sur la précision et l'exactitude des emplacements de numérisation.
A quoi cela ressemble-t-il? J'ai besoin d'une interface utilisateur et de pouvoir vérifier les entrées de ces trois appareils toutes les 13,32 millisecondes. Si j'utilisais FreeRTOS avec, disons, Nano-X pour l'interface graphique, exécuté sur un ordinateur portable qu'ils fournissent, cela ressemblerait-il à une solution sensée? Est-il possible que l'adaptateur RS-422 vers USB soit à l'origine de ces retards, et l'utilisation de Windows est en fait très bien à cet effet?