Experimental Physics and Industrial Control System
|
Pavel,
Sorry for the delay, I see the following missing in your Makefile
which should be included after base.dbd:
tronix_DBD += devTDS3000.dbd
Nick
On 12/12/2011 9:51 AM, Pavel Masloff wrote:
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 Pavel Masloff
- 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
- Re: Tektronix 3000/5000 oscilloscopes Pavel Masloff
- Navigate by Date:
- Prev:
Re: Tektronix 3000/5000 oscilloscopes Pavel Masloff
- Next:
Re: Tektronix 3000/5000 oscilloscopes Pavel Masloff
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
<2011>
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: Tektronix 3000/5000 oscilloscopes Pavel Masloff
- Next:
Re: Tektronix 3000/5000 oscilloscopes Pavel Masloff
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
<2011>
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|
ANJ, 18 Nov 2013 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
·
Search
·
EPICS V4
·
IRMIS
·
Talk
·
Bugs
·
Documents
·
Links
·
Licensing
·
|