This section demonstrates how Spectra can be called from a c program. We assume that this is done on a PC where Spectra is installed.
This is the Makefile:
SRC_DIR=/usr/local/experiment/Spectra/src TANGO_LIB = -L/usr/lib/x86_64-linux-gnu -ltango -llog4tango -lomniORB4 -lomniDynamic4 -lomnithread SIS3100_LIB=-L/usr/lib -l_sis3100 PYTHON_LIB=-L/usr/lib/python2.7/config-x86_64-linux-gnu -lpython2.7 GPIB_LIB=-L/usr/lib -lgpib TINE_LIB=-L/usr/lib -ltinemt -ltbufsrv PERL_LIB=-Wl,-E -fstack-protector -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu -lperl -ldl -lm -lpthread -lc -lcrypt LIB_DIR=/usr/local/experiment/Spectra/lib LIBS=$(SRC_DIR)/cmc_dummy.o \ $(SRC_DIR)/can_dummy.o \ -L$(LIB_DIR) -lgra -ltng_ifc -ladslib \ $(PERL_LIB) \ $(SIS3100_LIB) $(PYTHON_LIB) $(GPIB_LIB) $(TINE_LIB) \ -lnsl -ldl -lm -lc -lpthread -lstdc++ \ $(TANGO_LIB) -ljsoncpp \ -L/usr/X11R6/lib -lX11 all: graDemo graDemo.o: graDemo.c gcc -c -o graDemo.o -I/usr/local/experiment/Spectra/src graDemo.c graDemo: graDemo.o g++ graDemo.o $(LIBS) -o graDemo
This is the main function:
#include <stdio.h> #include <math.h> #include "gra_common.h" int main( int argc, char **arg, char **env) { info__scan *info; float *x, *y; int i; /* Initialization: Analyze the command line arguments and determine the directory for the help file, etc. */ gra_init( argc, arg); /* create a SCAN, set the y-values to sin() and display it */ gra_command( " crea test 0 10 100"); gra_command( " calc test = sin(test)"); gra_command( " display;wait"); if( !gra_return_info_address( "test", &info)) { printf( " GQE test does not exist \n"); return; } /* fetch the data addresses */ gra_return_data_address( "test", &x, &y); /* clear screen */ gra_command( "cls"); /* stop the interactive mode, i.e.: A DISPLAY is not preceded by a CLS */ gra_stop_inter(); for( i=0; i < 100; i++) { y[i] = cos(x[i]); info->curr_index = i + 1; gra_display(); } gra_start_inter(); /* change the y-values and re-display */ for( i=0; i < 100; i++) { y[i] = tan(x[i]); } gra_command( "auto/y;display;say \" Press <ret> to continue \""); gra_keyw(1); /* enter the interactive SPECTRA */ gra_entry(); return 1; }