Temps réel de traçage/enregistrement de données
Je vais écrire un programme qui trace des données à partir d'un capteur connecté à l'ordinateur. La valeur du capteur va être tracé en fonction du temps (valeur de la sonde sur l'axe des y, le temps sur l'axe des x). Je veux être en mesure d'ajouter de nouvelles valeurs à l'intrigue en temps réel. Ce qui serait le mieux pour ce faire en C++?
Edit: Et en plus, le programme sera exécuté sur une machine Linux
Paul, ce n'est pas vraiment une question, c'est plus une demande de conseils et même alors, il est vague. Je devine que vous êtes à la recherche pour une cartographie de la bibliothèque qui vous permet d'ajouter des données à la parcelle de façon dynamique. Je suggère de ramasser les mots clés de cette phrase et en route pour Google.
Avez-vous besoin de l'heure exacte ou est relative à temps suffisant? L'extraction relative moment de l'OS peut être plus rapide que le temps absolu.
Avez-vous besoin de l'heure exacte ou est relative à temps suffisant? L'extraction relative moment de l'OS peut être plus rapide que le temps absolu.
OriginalL'auteur Paul | 2010-02-03
Vous devez vous connecter pour publier un commentaire.
Écrire une fonction qui peut tracer une
std::deque
dans une manière que vous souhaitez, puis.push_back()
valeurs du capteur sur la file d'attente disponibles, et.pop_front()
valeurs à partir de la file d'attente, si elle devient trop longue pour de nice le tracé.La nature exacte de votre tracé de la fonction dépend de votre plate-forme, les besoins, les sens de l'esthétique, etc.
Vous ne pouvez pas effectuer une itération sur un
std::queue
, alors vous voudrez probablement utiliserstd::deque
directement au lieu de cela, vous pouvez toujourspush_back
etpop_front
avec un deque.c'est un très bon point, je vais mettre à jour ma réponse.
OriginalL'auteur jilles de wit
Vous êtes particulièrement préoccupé par le C++ aspect? J'ai fait 10Hz ou si les données de fréquence sans casser une sueur par la mise gnuplot en lecture/terrain/boucle d'actualisation ou avec LiveGraph sans problèmes.
OriginalL'auteur Digikata
Vous pouvez utiliser anneau de tampons. Dans un tel tampon que vous avez lu la position et la position d'écriture. De cette façon, un thread peut écrire à la mémoire tampon et d'autres de lire et de tracer un graphique. Pour plus d'efficacité vous finissent généralement de la rédaction de votre propre cadre de référence.
La taille de cette mémoire tampon peut être estimée à l'aide par exemple.: la livraison des données de vitesse du capteur (40KHz?), la taille de la sonde et la durée que vous souhaitez garder pour tracer les fins.
Ça dépend aussi si vous voulez stocker de telles données non compressées, magasin de rendu de la parcelle - tout pour l'analyse hors ligne. En non-RTOS environnement de votre "temps réel" dépend de la vitesse de traitement: à quelle vitesse vous pouvez récupérer/store/processus et tracer les données. Habituellement, il est quasi-temps réel l'efficacité.
OriginalL'auteur Marcin Gil
Vous pourriez vouloir vérifier RRDtool pour voir si elle répond à vos besoins.
OriginalL'auteur Dave Bacher
J'ai fait quelque chose de similaire pour un appareil qui a une perméabilité de la sonde connectée via RS232.
Btw, je pense que il ya tellement de nombreuses bibliothèques, il suffit de chercher pour eux:
OriginalL'auteur Jack
Je suppose que vous allez déployer cette application sur un système d'exploitation temps réel. Mais, quel sera le débit de données et quelles sont les exigences en temps réel! Donc, comme écrit ci-dessus, une solution simple peut être plus que suffisant. Mais, si vous avez contraintes temps réel, tout change radicalement. Un multi-fileté de conception avec des canaux de données peut résoudre vos problèmes.
OriginalL'auteur baris.aydinoz