Ho deciso di pubblicare un piccolo programmino scritto in C senza tante pretese per il plotting in real time.
Il programa genera i dati in ingresso (asse delle ordinate) e li manda a gnuplot attraverso il file dati.dat allo scorrere del tempo (asse delle ordinate).
In questo adattamento (per linux [arch linux]), ogni 10 secondi mi informa quanta banda ho consumato dall'inizio della sessione di navigazione.
Scusate la gestione un po' orripilante delle ordinate, almeno ho provato a fare un' (introvabile) trasposizione in C del pi¨ ben noto drivegnuplot.pl che certamente i curiosi troveranno in giro.


Codice:
#include <stdio.h>
#include <math.h>


main() {


	system("rm data.dat");


	int x=0, y_pre;
	float y;


	FILE *poppe = popen("gnuplot -persistent", "w");
	FILE *file = fopen("data.dat", "w");


	FILE *pippe = popen("tail /sys/class/net/wlan0/statistics/rx_bytes", "r");
	fscanf(pippe, "%f", &y);
	y=y/1000000;
	y_pre=(int)(y)+100;
	fprintf(poppe, "unset autoscale\n set nokey\n set xrange [0:100]\n set yrange[%d:%d]\n", (int)(y), y_pre);
	pclose(pippe);


	while(1){
		FILE *pippe = popen("tail /sys/class/net/wlan0/statistics/rx_bytes", "r");
		fscanf(pippe, "%f", &y);
		y=y/1000000;
		fprintf(file, "%d\t%f\n", x, y);
		fflush(file);
		
		if(x>=100)
			fprintf(poppe, "set xrange [%d:%d]\n", x-100, x);


		if(y>=y_pre)
			fprintf(poppe, "set yrange [%d:%d]\n", (int)(y)-100,(int)(y));
		
		fprintf(poppe, "plot 'data.dat' using 1:2 w l\n");
		
		x++;
	
		fflush(poppe);
		system("sleep 10");
	}
}