Comment tracer des données par programme c?
Je suis un ingénieur en mécanique qui ne dispose que de peu de connaissances en programmation C. J'ai écrit du code pour faire des simulations, et je veux visualiser les résultats de simulation. Pour le moment je suis en utilisant Dev-C
pour l'écriture de mes codes. Avec fopen
et fprintf
commandes que j'ai générer un .dat
fichier qui comprend les résultats. Puis-je ouvrir GNUPLOT
programme et importer mes .dat
fichier pour tracer les résultats. Cela prend du temps et je dois attendre jusqu'à la fin de la simulation. Est-il un moyen facile de connecter mon plotter avec Dev-C
donc mon traceur commence à tracer des données au cours de la simulation? Toute bibliothèque ou etc. ?
source d'informationauteur CrazyHorse
Vous devez vous connecter pour publier un commentaire.
Puisque vous savez déjà gnuplot, la chose la plus simple à faire est peut être de simplement appeler gnuplot à partir de votre programme et de tuyaux de données:
OK, une seule solution, comme vous l'écriture dans un fichier, serait de faire juste un
system()
appel lorsque vous écrivez dans le fichier et l'appel gnuplot.Mais, cela signifie que vous devriez changer le nom du fichier à chaque fois, mais je crains que si vous le faites, il ne semble correcte, puisque vous êtes l'envoi de petites quantités de données à chaque fois.
http://www.gnu.org/software/libc/manual/html_node/System-Calls.html
Je n'ai jamais utilisé gnuplot, mais si vous regardez cette page ( http://gnuplot-tricks.blogspot.com/ ), vous pouvez trouver quelques trucs qui pourraient permettre cela à bien fonctionner.
Mais, je pense, à moins que vous allez tracer tout vous-même, et de sauter gnuplot, alors que vous avez juste besoin d'attendre, comme vous êtes.
Vous pouvez trouver l'interface C pour gnuplot peut vous aider à:
http://ndevilla.free.fr/gnuplot/
J'ai été en utilisant PLPlot pour le traçage de C et l'ai trouvé à la fois efficace et facile. Il est multi-plateforme, open source, et prend en charge un large éventail de parcelle capacités. Je vous recommande d'avoir un oeil sur les exemples pour commencer.
J'avais un pipi de regarder autour pour voir ce que les autres ont fait en termes de tracé en temps réel dans gnuplot, et trouvé ceci:
http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html
Il y a un petit script Perl qui peut conduire le complot, et que vous venez de tuyau de vos informations.
Vos données sont écrites sur le fichier, vous pouvez
tail -f yourdata.dat
et tuyau en temps réel traceur.Aussi, parce que vous utilisez le fichier stdio appels, vous aurez besoin de rincer régulièrement (en appelant
fflush
)Évidemment votre simulation serait en cours d'exécution en arrière-plan ou dans un autre shell. De cette façon, vous pourriez sortir de traçage à tout moment sans interrompre la simulation.
Espère que c'est de quelque utilité pour vous.