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@moria.seul.org
> 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@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user

Reply via email to