Hi I've made some changes in GTKWave source code to handle my problem. This is what I've done, but I'm sure there are many better solutions: 1. If gcc complained about undeclared gzopen64; in src/helpers/tla2vcd.c line 29 change #include <zlib.h> to #include "../libz/zlib.h" 2. Change kick_partial_vcd(void) in vcd_partial.c (line 2317): /////////////////////////////////////////////////////////////////// void kick_partial_vcd(void) { #if !defined _MSC_VER && !defined __MINGW32__ GtkAdjustment *hadj; TimeType ntinc; if(GLOBALS->partial_vcd) { struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 1000000 / 100; select(0, NULL, NULL, NULL, &tv); while(*GLOBALS->consume_ptr_vcd_partial_c_1) { Trptr t; vcd_parse(); GLOBALS->min_time=GLOBALS->start_time_vcd_partial_c_2*GLOBALS->time_scale; GLOBALS->max_time=GLOBALS->end_time_vcd_partial_c_2*GLOBALS->time_scale; GLOBALS->tims.last=GLOBALS->max_time; GLOBALS->tims.end=GLOBALS->tims.last; /* until the configure_event of wavearea */ if(!GLOBALS->timeset_vcd_partial_c_1) { GLOBALS->tims.first=GLOBALS->tims.start=GLOBALS->tims.laststart=GLOBALS->min_time; GLOBALS->timeset_vcd_partial_c_1 = 1; } update_endcap_times_for_partial_vcd(); update_maxmarker_labels(); t = GLOBALS->traces.first; while(t) { regen_trace_mark(t); t = t->t_next; } t = GLOBALS->traces.buffer; while(t) { regen_trace_mark(t); t = t->t_next; } t = GLOBALS->traces.first; while(t) { regen_trace_sweep(t); t = t->t_next; } t = GLOBALS->traces.buffer; while(t) { regen_trace_sweep(t); t = t->t_next; } signalarea_configure_event(GLOBALS->signalarea, NULL); wavearea_configure_event(GLOBALS->wavearea, NULL); ntinc=(TimeType)(((gdouble)GLOBALS->wavewidth)*GLOBALS->nspx); GLOBALS->tims.timecache=GLOBALS->tims.last-ntinc+1; if(GLOBALS->tims.timecache<GLOBALS->tims.first) GLOBALS->tims.timecache=GLOBALS->tims.first; hadj=GTK_ADJUSTMENT(GLOBALS->wave_hslider); hadj->value=GLOBALS->tims.timecache; time_update(); gtkwave_gtk_main_iteration(); } } #endif gtkwave_gtk_main_iteration(); } /////////////////////////////////////////////////////////////////// In fact I've added "Zoom To End" button's code from service_zoom_right function (in zoombuttons.c line 57) to kick_partial_vcd(). I've written a very simple program that makes randome vcd file. You can use it in this way (I assume you are in ~/gtkwave-3.1.9/src, if not change the paths): ./randomvcd | ./helpers/shmidcat | ./gtkwave -I -v randomvcd.c and my vcd_partial.c are attached in a compressed file. I hope this will be useful.. Regards, Abd. Man On Sun, 2008-11-30 at 10:58 +0330, Abdous Mandous wrote: > Hi, > (sorry for my poor English) > I'm using gtkwave in interactive mode as a poor-man logic analyzer! I've > written a simple program to get data from USB (which is connected to > FT245 board) and write it into stdout in VCD format. Everything is fine > but as simulation time increases, I should manually scroll right the > waveform. I'm wondering is there any way to auto-scroll gtkwave to show > end of vcd file when new data receives from stdin? > -I have tried to compile gtwave from source instead of using ubuntu > packages, but the compiled version didn't work in interactive mode! > Regards, > Abd. Man > > > > > > > > _______________________________________________ > geda-user mailing list > geda-user@xxxxxxxxxxxxxx > http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
Attachment:
gtkwave-inter-scroll.tar.bz2
Description: application/bzip-compressed-tar
_______________________________________________ geda-user mailing list geda-user@xxxxxxxxxxxxxx http://www.seul.org/cgi-bin/mailman/listinfo/geda-user