Je vais écrire un programme qui parcourt des données d'un capteur connecté à l'ordinateur. La valeur du capteur va être tracée en fonction du temps (valeur du capteur sur l'axe des Y, le temps sur l'axe des x). Je veux pouvoir ajouter de nouvelles valeurs à l'intrigue en temps réel. Quoi de mieux pour faire cela avec en C ++? P>
EDIT: Et d'ailleurs, le programme sera exécuté sur une machine Linux p>
6 Réponses :
écrire une fonction qui peut tracer un La nature exacte de votre fonction de tracé dépend de votre plate-forme, des besoins, du sens de l'esthétique, etc. p> std :: deque code> d'une manière que vous aimez, alors
.push_back () code> valeurs du capteur sur la file d'attente. et
.pop_front () code> Valeurs de la file d'attente si elle devient trop longue pour un bon complot. P>
Cela semble prometteur. Je vais regarder ça. Merci!
Vous ne pouvez pas itérer sur un std :: file d'attente code>, vous voudrez donc probablement utiliser
std :: deque code> directement à la place; Vous pouvez toujours
push_back code> et
pop_front code> avec une drique.
Vous pouvez utiliser
La taille de ce tampon peut être estimée à l'aide d'une vitesse de livraison de données par exemple à partir de capteur (40 kHz?), de taille d'une sonde et d'une durée de temps que vous souhaitez conserver à des fins de traçage. P>
Cela dépend également si vous souhaitez stocker de telles données non compressées, stockez le complot rendu - tout pour une analyse hors ligne ultérieure. Dans l'environnement non-RTOS, votre "temps réel" dépend de la vitesse de traitement: quelle vitesse vous pouvez récupérer / stocker / stocker et tracer des données. Habituellement, c'est une efficacité de temps quasi réel. P>
J'ai fait une chose similaire pour un dispositif qui avait un capteur de perméabilité attaché via RS232. P>
BTW Je pense qu'il y a tellement de bibliothèques, juste la recherche d'eux: p>
Je suppose que vous déployez cette application sur un RTO. Mais, quel sera le taux de données et quelles sont les exigences en temps réel! Par conséquent, comme écrit ci-dessus, une solution simple peut être plus que suffisante. Mais si vous avez des contraintes de temps en temps réel, tout change radicalement. Un design multi-threadé avec des tuyaux de données peut résoudre vos problèmes en temps réel. p>
Êtes-vous particulièrement préoccupé par l'aspect C ++? J'ai fait 10Hz ou donc les données de taper sans briser la transpiration en mettant Gnuplot dans une boucle de lecture / raffretation / rafraîchissante ou avec LiveGraph sans problèmes. P>
Vous voudrez peut-être vérifier RRDTool pour voir si cela répond à vos exigences. p>
RRDTool est un système de journalisation de données de haute performance et de système de graphique pour les données de la série chronologique. P> blockQuote>
Paul, ce n'est pas vraiment une question, c'est plus une demande de conseil et même alors c'est vague. Je suppose que vous recherchez une bibliothèque de graphique qui vous permet d'ajouter des données à la parcelle de manière dynamique. Je suggère de choisir les mots-clés de cette phrase et de vous rendre à Google.
Avez-vous besoin d'une heure exacte ou est-ce que le temps est-il suffisant? La récupération de l'heure relative du système d'exploitation peut être plus rapide que la durée absolue.