Ir para conteúdo
Fórum Script Brasil

amp35br

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre amp35br

amp35br's Achievements

0

Reputação

  1. Resolvido! Gastei um tempinho mas deu certo. A solução foi criar um processo filho usando a função fork(). Aí vai como ficou o código: criaFile.cpp #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main (){ FILE *teste; pid_t pID = fork(); if(pID == 0){ system("gnuplot liveplot.gnu"); _exit(0); } else{ for (int i=0; i<20; i++){ int a = i; int b = i+i; int c = i*i; teste = fopen("testefile.txt", "a"); fprintf(teste, "%d \t %d \t %d \n", a, b, c); fclose(teste); sleep(1); } } return 0; } e o arquivo abaixo que é um script para executar no Gnuplot: liveplot.gnu set xrange [0:20] set yrange [0:400] plot "testefile.txt" using 1:2 with lines replot "testefile.txt" using 1:3 with lines pause 1 reread Estou usando o sistema operacional Linux. O único problema ainda é que toda vez que for rodar novamente o programa, tem que apagar o arquivo testefile.txt
  2. Olá Vangodp, Obrigado por sua contribuição. Mas deixa eu ser mais claro no meu problema: Embora sua solução esteja funcionando perfeitamente, o que eu estou querendo é rodar o Gnuplot enquanto o arquivo .txt com os dados está sendo incrementado, ou seja, quero um gráfico sendo construído em tempo real, e não que ele seja apresentado todo de uma vez. Eu andei lendo mais e vi que vou precisar a função fork() e exec(), eu acho. Pois a função system() para a execução do C e só depois que o programa chamado for totalmente executado, ele volta a rodar. Em fim, quero gerar um gráfico de linhas para uma sequência de dados (2 colunas). Só que estes dados são adicionados no arquivo a cada 1 segundo e consequentemente o gráfico é alterado nessa frequência.
  3. Fiz um programa em C++ que cria um arquivo .txt com três colunas. Meu objetivo é fazer com que o Gnuplot coloque as duas últimas colunas em gráfico. O arquivo .txt está sendo gerado normalmente, e o script do Gnuplot está funcionando normalmente. O problema é que quando chamo o Gnuplot pelo C++, o arquivo .txt não funciona mais. Alguém sabe o problema? Estou enviando os dois arquivos abaixo: criaFile.cpp e livplot.gnu Arquivo criaFile.cpp #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main (){ FILE *teste; /*if(teste == NULL){ printf("Arquivo não pode ser aberto\n"); getchar(); exit(1); }*/ system("gnuplot liveplot.gnu"); for (int i=0; i<20; i++){ int a = i; int b = i+i; int c = i*i; teste = fopen("testefile.txt", "a"); fprintf(teste, "%d \t %d \t %d \n", a, b, c); fclose(teste); sleep(1); } return 0; } Arquivo liveplot.gnu set xrange [0:20] set yrange [0:400] plot "testefile.txt" using 1:2 with lines replot "testefile.txt" using 1:3 with lines pause 1 reread
×
×
  • Criar Novo...