EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Tektronix 3000/5000 oscilloscopes
From: Pavel Masloff <[email protected]>
To: Eric Norum <[email protected]>, [email protected]
Cc: EPICS Tech Talk <[email protected]>
Date: Mon, 12 Dec 2011 18:51:59 +0300
Hello, Nick!
Dear colleagues!

Could you please explain how to use your TDS3000 support for my Tektronix 3054C (i have only the Ethernet interface)?

I am using the RHEL x86 operating system. I have successfully installed epics base (R3-14-12-1), extensions (1.7), sequencer (seq-2.1.3), asyn driver support (asyn4-18), tektronix tds3000 device support (tds3000-2.4) according to the manual. And they all seem to be working fine.

I think I have some problems with creating an application. I can't understand how to perform the following:

Using the software

In order to use the support in an application do the following:

    Add the following to <top>/configure/RELEASE

    TDS3000 = <full path to installation directory>
    ASYN = <full path to installation directory>
       

    Add the following to the application Makefile.

    <app>_LIBS_vxWorks += asyn
    <app>_LIBS_vxWorks += devTDS3000
       

    Add the following to the <app>Include.dbd.

    include "devTDS3000.dbd"
       

    Add the following to the Db Makefile.

    DB_INSTALLS += $(TDS3000)/db/TDS3000.vdb


My configuration is as follows:
EPICS_HOST_ARCH=linux-x86
EPICS_BASE=/root/applications/epics/R3-14-12-1/base
PATH=$PATH:$EPICS_BASE/bin/$EPICS_HOST_ARCH
SNCSEQ=/root/applications/epics/R3-14-12-1/modules/seq/seq-2.1.3
ASYN=/root/applications/epics/R3-14-12-1/modules/asyn/asyn4-18
TDS3000=/root/applications/epics/R3-14-12-1/modules/instrument/tds3000/tds3000-2.4
apps=$EPICS_BASE/../apps
extensions=$EPICS_BASE/../extensions

1. I have created an application in the apps directory by invoking:
mkdir tronix
cd tronix
$EPICS_BASE/bin/$EPICS_HOST_ARCH/makeBaseApp.pl -t ioc tronix
$EPICS_BASE/bin/$EPICS_HOST_ARCH/makeBaseApp.pl -i -t ioc tronix
2. Then I edited the RELEASE file in CONFIGURE/RELEASE - added 2 lines (specified the TDS3000 and ASYN paths).
3. After that I built Makefile in apps/tronix/
3. Then I opened the Makefile in the tronixApp folder and added:
tronix_LIBS_vxWorks += asyn
tronix_LIBS_vxWorks += devTDS3000

4. Added include "devTDS3000.dbd" to apps/tronix/tronixApp/src/O.Common/tronixInclude.dbd.
5. Added "DB_INSTALLS += $(TDS3000)/db/TDS3000.vdb" to the Db Makefile (apps/tronix/tronixApp/Db/Makefile).
6. Invoked make under "apps/tronix/tronixApp/"


Eventually got the following error:

/usr/bin/g++ -c  -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500           -D_X86_  -DUNIX  -D_BSD_SOURCE -Dlinux  -D_REENTRANT   -O3   -Wall      -m32     -g  -MMD -I. -I../O.Common -I. -I.. -I../../../include/os/Linux -I../../../include  -I/root/applications/epics/R3-14-12-1/modules/seq/seq-2.1.3/include -I/root/applications/epics/R3-14-12-1/base/include/os/Linux -I/root/applications/epics/R3-14-12-1/base/include    -I/root/applications/epics/R3-14-12-1/modules/asyn/asyn4-18/include       tronix_registerRecordDeviceDriver.cpp
/usr/bin/g++ -o tronix  -L/root/applications/epics/R3-14-12-1/base/lib/linux-x86 -Wl,-rpath,/root/applications/epics/R3-14-12-1/base/lib/linux-x86       -m32               tronix_registerRecordDeviceDriver.o tronixMain.o    -lrecIoc -lsoftDevIoc -lmiscIoc -lrsrvIoc -ldbtoolsIoc -lasIoc -ldbIoc -lregistryIoc -ldbStaticIoc -lca -lCom  
tronix_registerRecordDeviceDriver.o: In function `__static_initialization_and_destruction_0':
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:134: undefined reference to `pvar_rset_asynRSET'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:134: undefined reference to `pvar_func_asynRecordSizeOffset'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynAiInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynAiInt32Average'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynAiFloat64'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynAiFloat64Average'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devAiTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynAoInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynAoFloat64'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devAoTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynBiInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynBiUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devBiTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynBoInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynBoUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devBoTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynLiInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynLiUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynLoInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynLoUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynMbbiInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynMbbiUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devMbbiTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynMbbiDirectUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynMbboInt32'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynMbboUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devMbboTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynMbboDirectUInt32Digital'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynSiOctetCmdResponse'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynSiOctetWriteRead'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynSiOctetRead'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devSiTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynSoOctetWrite'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devSoTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynWfOctetCmdResponse'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynWfOctetWriteRead'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynWfOctetRead'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynWfOctetWrite'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynInt8ArrayWfIn'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynInt8ArrayWfOut'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynInt16ArrayWfIn'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynInt16ArrayWfOut'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynInt32ArrayWfIn'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynInt32ArrayWfOut'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynFloat32ArrayWfIn'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynFloat32ArrayWfOut'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynFloat64ArrayWfIn'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynFloat64ArrayWfOut'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_devWfTDS3000Gpib'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:405: undefined reference to `pvar_dset_asynRecordDevice'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:415: undefined reference to `pvar_drvet_drvAsyn'
tronix_registerRecordDeviceDriver.o: In function `tronix_registerRecordDeviceDriver':
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:453: undefined reference to `pvar_func_vxi11RegisterCommands'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:454: undefined reference to `pvar_func_asynRegister'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:455: undefined reference to `pvar_func_asynInterposeFlushRegister'
/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86/tronix_registerRecordDeviceDriver.cpp:456: undefined reference to `pvar_func_asynInterposeEosRegister'
collect2: ld returned 1 exit status
make[2]: *** [tronix] Error 1
make[2]: Leaving directory `/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src/O.linux-x86'
make[1]: *** [install.linux-x86] Error 2
make[1]: Leaving directory `/root/applications/epics/R3-14-12-1/apps/tronix/tronixApp/src'
make: *** [src.install] Error 2


Thanks.

Pavel

On Tue, Dec 6, 2011 at 6:41 PM, Eric Norum <[email protected]> wrote:
Nick DiMonte at the APS has written a nice support package for Tektronix 3000/5000 oscilloscopes.   The same driver works with Network, GPIB, or RS-232 interfaces.
I believe that the screens are still MEDM-only.
http://www.aps.anl.gov/epics/modules/instrument/tds3000/index.html

On Dec 5, 2011, at 11:33 PM, Dirk Zimoch wrote:

> Pavel,
>
> I don't know the TDS 5054, but most oscilloscopes come with GPIB, RS232, or VXI11 (="GPIB over TCP") network interface and are controlled with text commands. In that case the combination asynDriver/StreamDevice will do the job.
>
> http://www.aps.anl.gov/epics/modules/soft/asyn/
> http://epics.web.psi.ch/software/streamdevice/
>
> If you are lucky, someone has already written a StreamDevice protocol file for it. But if not, it is not difficult.
>
> Here at PSI, we also run EPICS directly on some oscilloscopes. Many oscilloscopes nowadays use Windows as the operating system and come with an API to get direct access to the oscilloscope functions. This allows to write an EPICS device driver. Running the IOC directly on the oscilloscope saves some network traffic. With an external IOC, the data is first transferred from the oscilloscope to the IOC (e.g. via VXI11) and then from the IOC to the client via Channel Access. With an IOC integrated into the oscilloscope, you only have Channel Access. But writing such a driver is somewhat sophisticated.
>
> Dirk
>

--
Eric Norum
[email protected]







--
Sincerely,

Pavel Maslov, MSc
R&D Institute for Electro-Physical Apparatus


Mobile: +7 (951) 672 22 19
Phone: +7 (812) 461 01 01

Replies:
RE: Tektronix 3000/5000 oscilloscopes Mark Rivers
Re: Tektronix 3000/5000 oscilloscopes Eric Norum
Re: Tektronix 3000/5000 oscilloscopes Nicholas P. DiMonte
References:
[help] EPICS build no good Pavel Masloff
Re: [help] EPICS build no good Andrew Johnson
Re: [help] EPICS build no good Pavel Masloff
Re: [help] EPICS build no good Andrew Johnson
Re: [help] EPICS build no good Pavel Masloff
Re: [help] EPICS build no good Dirk Zimoch
Tektronix 3000/5000 oscilloscopes Eric Norum

Navigate by Date:
Prev: Re: About the interface LabCA problem that Matlab can't read image datafrom areaDetector Till Straumann
Next: RE: Tektronix 3000/5000 oscilloscopes Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Tektronix 3000/5000 oscilloscopes Eric Norum
Next: RE: Tektronix 3000/5000 oscilloscopes Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·