Digitizer.h Ð ************************************************************************ #include "myroot.h" #include "RQ_OBJECT.h" class digitizer : public TQObject { public: RQ_OBJECT("digitizer"); ClassDef(digitizer,0); digitizer(); void FindDevices(void); void Configure(); void Acquire(); void Readout(void); Int_t number_samples_acquired; Double_t *waveFormArray0, *waveFormArray1; char * dataArrayP; private: }; /*********************************************************************** **** digitizer.cpp - description ------------------- ************************************************************************ ***/ // ////////////////////////////////////////////////////////////////////////////////////////// void digitizer::Acquire() { // ### Acquiring a waveform ### ViBoolean done0 =0; ViBoolean done1=0; long timeoutCounter0 = 100000; // Timeout waiting for a trigger long errTimeoutCounter0 = 300000; // Timeout for acquisition completion long timeoutCounter1 = 100000; // Timeout waiting for a trigger long errTimeoutCounter1 = 300000; // Timeout for acquisition completion bool PreTrigger=0; AcqrsD1_acquire(InstrumentID[0]); // Start the acquisition AcqrsD1_acquire(InstrumentID[1]); while (!done0 && errTimeoutCounter0--) { AcqrsD1_acqDone(InstrumentID[0], &done0); // Poll for the end of the acquisition //AcqrsD1_getInstrumentInfo(0, "IsPreTriggerRunning", &PreTrigger); if (!timeoutCounter0--) // Trigger timeout occured {// AcqrsD1_forceTrig(InstrumentID[0]); // Force a 'manual' (or 'software') trigger AcqrsD1_forceTrigEx(InstrumentID[1], 1, 0 ,0); cout<<"\nManual Trigger On Fast Board . . . External Trigger To Slow Board\n"; } } if (!done0) { // Acquisition do not complete successfully AcqrsD1_stopAcquisition(InstrumentID[0]); cout << endl << "Acquisition timeout on DC440!" << endl; cout << endl << "The acquisition has been stopped - data invalid!" << endl; } while (!done1) { AcqrsD1_acqDone(InstrumentID[1], &done1); } if (!done1) { // Acquisition do not complete successfully AcqrsD1_stopAcquisition(InstrumentID[1]); cout << endl << "Acquisition timeout on DC271!" << endl; cout << endl << "The acquisition has been stopped - data invalid!" << endl; } Emit("Acquire()"); } // //---- Main program ------------------------------------------------------------ int main(int argc, char **argv) { TApplication theApp("App", &argc, argv); if (gROOT->IsBatch()) { fprintf(stderr, "%s: cannot run in batch mode\n", argv[0]); return 1; } TestMainFrame mainWindow(gClient->GetRoot(), 400, 220); digitizer* dig = new digitizer(); dig->Connect("Acquire()", "TestMainFrame", &mainWindow, "update_window()"); theApp.Run(); return 0; }; TestMainFrame.h ************************************************************************ class TestMainFrame : public TGMainFrame { private: TGDockableFrame *fMenuDock; TGCompositeFrame *fStatusFrame; TGCanvas *fCanvasWindow; TileFrame *fContainer; TGTextEntry *fTestText; TGButton *fTestButton; TGColorSelect *fColorSel; TGMenuBar *fMenuBar; TGPopupMenu *fMenuFile, *fMenuTest, *fMenuView, *fMenuHelp; TGPopupMenu *fCascadeMenu, *fCascade1Menu, *fCascade2Menu; TGPopupMenu *fMenuNew1, *fMenuNew2; TGLayoutHints *fMenuBarLayout, *fMenuBarItemLayout, *fMenuBarHelpLayout; //TRootEmbeddedCanvas *fEcanvas1, *fEcanvas2, *fEcanvas3, *fEcanvas4; TRootEmbeddedCanvas *fEcanvas1, *fEcanvas2, *fEcanvas3, *fEcanvas4; TGMainFrame *fMain; TGHorizontalFrame *fHF1; TGVerticalFrame *fVF1; TGLayoutHints *fLayout, *fHintTXY; public: TestMainFrame(const TGWindow *p, UInt_t w, UInt_t h); virtual ~TestMainFrame(); virtual void CloseWindow(); virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t); virtual void updatewindow(void); }; TestMainFrame.cpp ************************************************************************ void TestMainFrame::updatewindow(void) { std::cout<<"updating window . . ."; } Makefile *********************************************************************** C++ = c++ CC = cc UCFLAGS = -O0 -g3 -Wall -gstabs+ -D_LINUX -D_ACQIRIS - I/home/lxe/DAQ/Acqiris/AcqirisLinux/usr/include LIB= -L/home/lxe/DAQ/Acqiris/AcqirisLinux/usr/lib INC =-I/home/lxe/DAQ/Acqiris/AcqirisLinux/usr/include INCS =-I$/home/lxe/DAQ/Acqiris/AcqirisLinux/usr/include EVENTO = Event.$(ObjSuf) EventDict.$(ObjSuf) EVENTS = Event.$(SrcSuf) EventDict.$(SrcSuf) EVENTSO = libEvent.$(DllSuf) EVENT = Event$(ExeSuf) ifeq ($(PLATFORM),win32) EVENTLIB = libEvent.lib else EVENTLIB = $(EVENTSO) endif MYGUIO = mygui.$(ObjSuf) MYGUIS = mygui.$(SrcSuf) guiclasses.$(SrcSuf) MYGUI = mygui$(ExeSuf) ACQIRISO = TriggerTest.$(ObSuf) ACQIRIS = TriggerTest.$(SrcSuf) ACQIRIS = TriggerTest.$(ExeSuf) OBJS = $(ACQIRISO) $(MYGUIO) PROGRAMS = $(MYGUI) digitizerdict.C TestMainFramedict.C #------------------------------------------------------------------------------ .SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf) .PHONY: Aclock Hello Tetris all: $(PROGRAMS) $(EVENTSO): $(EVENTO) ifeq ($(ARCH),aix) /usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(ARCH),aix5) /usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(PLATFORM),macosx) # We need to make both the .dylib and the .so $(LD) $(SOFLAGS) $(EVENTO) $(OutPutOpt) $(EVENTSO) $(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \ $(OutPutOpt) $(subst .$(DllSuf),.so,$@) else ifeq ($(PLATFORM),win32) bindexplib $* $^ > $*.def lib -nologo -MACHINE:IX86 $^ -def:$*.def \ $(OutPutOpt)$(EVENTLIB) $(LD) $(SOFLAGS) $(LDFLAGS) $^ $*.exp $(LIBS) \ $(OutPutOpt)$@ else $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(OutPutOpt) $@ $(EXPLLINKLIBS) endif endif endif endif @echo "$@ done" digitizerdict.o: digitizerdict.C TestMainFramedict.o: TestMainFramedict.C $(MYGUI): $(MYGUIO) TriggerTest.o $(LD) $(LDFLAGS) $^ $(LIB) $(GLIBS) $(OutPutOpt) TriggerTest.o digitizerdict.o TestMainFramedict.o -lpthread -lAnDBSLib -lAqLib -o $@ @echo "$@ done" $(OutPutOpt)$@ @echo "$@ done" ifeq ($(PLATFORM),win32) $(LD) $(LDFLAGS) $^ $(LIBS) ../lib/libGeom.lib $(OutPutOpt)$@ else $(LD) $(LDFLAGS) $^ $(LIBS) -lGeom $(OutPutOpt)$@ endif @echo "$@ done" $(OutPutOpt)$@ @echo "$@ done" ifeq ($(ARCH),aix) /usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(ARCH),aix5) /usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(PLATFORM),macosx) # We need to make both the .dylib and the .so $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ $(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \ $(OutPutOpt) $(subst .$(DllSuf),.so,$@) else $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(EXPLLINKLIBS) $(OutPutOpt)$@ endif endif endif ifeq ($(ARCH),aix) /usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(ARCH),aix5) /usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(PLATFORM),macosx) # We need to make both the .dylib and the .so $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ $(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \ $(OutPutOpt) $(subst .$(DllSuf),.so,$@) else $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(EXPLLINKLIBS) $(OutPutOpt)$@ endif endif endif ifeq ($(ARCH),aix) /usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(GLIBS) -p 0 $^ else ifeq ($(ARCH),aix5) /usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(GLIBS) -p 0 $^ else ifeq ($(PLATFORM),macosx) # We need to make both the .dylib and the .so $(LD) $(SOFLAGS) $^ $(OutPutOpt) $@ $(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \ $(OutPutOpt) $(subst .$(DllSuf),.so,$@) else $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(EXPLLINKLIBS) $(OutPutOpt)$@ endif endif endif ifeq ($(ARCH),aix) /usr/ibmcxx/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(ARCH),aix5) /usr/vacpp/bin/makeC++SharedLib $(OutPutOpt) $@ $(LIBS) -p 0 $^ else ifeq ($(PLATFORM),macosx) # We need to make both the .dylib and the .so $(LD) $(SOFLAGS) $^ -lstdc++ $(OutPutOpt) $@ $(LD) -bundle -undefined $(UNDEFOPT) $(LDFLAGS) $^ \ $(OutPutOpt) $(subst .$(DllSuf),.so,$@) else $(LD) $(SOFLAGS) $(LDFLAGS) $^ $(EXPLLINKLIBS) $(OutPutOpt)$@ endif endif endif clean: @rm -f $(OBJS) core distclean: clean @rm -f $(PROGRAMS) $(EVENTSO) $(EVENTLIB) *Dict.* *.def *.exp \ *.root *.ps *.so *.lib *.dll *.d .def so_locations @rm -rf cxx_repository -@cd RootShower && $(MAKE) distclean .SUFFIXES: .$(SrcSuf) ### mygui.o: mygui.cxx $(CXX) $(CXXFLAGS) -c $< TriggerTest.o : TriggerTest.cpp ${CXX} -c $*.cpp $(UCFLAGS) $(CXXFLAGS) -o $*.o digitizerdict.C : digitizer.h digitizerLinkDef.h @echo "Generating dictionary . . ." @rootcint digitizerdict.C -c digitizer.h @echo "done . . . " TestMainFramedict.C : TestMainFrame.h @echo "Generating dictionary for TestMainFrame. . ." @rootcint TestMainFramedict.C -c TestMainFrame.h @echo "done . . .