I believe that Zen Szalata from SLAC has also recently written Tektronix scope support based on asynPortDriver.
Mark
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Rod Nussbaumer
Sent: Wednesday, February 01, 2012 1:18 PM
To: epics Techtalk
Subject: asyn reading to waveform records
Hi All.
As a fallback alternative to my earlier problem reading oscilloscope
waveforms with StreamDevice (and to potentially reveal something about
the original problem), I am trying to use asyn to read the waveform into
a waveform record directly (without the aid of StreamDevice).
If I use the waveform record with FTVL=UCHAR or FTVL=CHAR, and
DTYP=asynOctetRead, I am able to acquire the scope binary-formatted data
into the waveform record, and I seem to be able to get the performance
that I require. However, this method gives me byte oriented data, and
the 'scope is sending 16-bit signed data. So, I tried using the
FTVL=SHORT, or FTVL=USHORT and DTYP set to any of the
'asynIntXXArrayWfIn' data types. This results in iocInit reporting :
> devAsynInt16Array::initCommon, TEST:SCOPE1:CURVE find asynInt16Array interface failed
Some combinations of FTVL & DTYP fail with messages like:
> devAsynInt8Array::initCommon, TEST:SCOPE1:CURVE field type must be SIGNED_TYPE or UNSIGNED_TYPE
My application dbd file contains:
> device(waveform,INST_IO,asynWfOctetCmdResponse,"asynOctetCmdResponse")
> device(waveform,INST_IO,asynWfOctetWriteRead,"asynOctetWriteRead")
> device(waveform,INST_IO,asynWfOctetRead,"asynOctetRead")
> device(waveform,INST_IO,asynWfOctetWrite,"asynOctetWrite")
> device(waveform,INST_IO,asynInt8ArrayWfIn,"asynInt8ArrayIn")
> device(waveform,INST_IO,asynInt8ArrayWfOut,"asynInt8ArrayOut")
> device(waveform,INST_IO,asynInt16ArrayWfIn,"asynInt16ArrayIn")
> device(waveform,INST_IO,asynInt16ArrayWfOut,"asynInt16ArrayOut")
> device(waveform,INST_IO,asynInt32ArrayWfIn,"asynInt32ArrayIn")
> device(waveform,INST_IO,asynInt32ArrayWfOut,"asynInt32ArrayOut")
> device(waveform,INST_IO,asynFloat32ArrayWfIn,"asynFloat32ArrayIn")
> device(waveform,INST_IO,asynFloat32ArrayWfOut,"asynFloat32ArrayOut")
> device(waveform,INST_IO,asynFloat64ArrayWfIn,"asynFloat64ArrayIn")
> device(waveform,INST_IO,asynFloat64ArrayWfOut,"asynFloat64ArrayOut")
As yet another possible fallback, is there a way to coerce the
byte-oriented data that I acquire to be 16-bit word data, perhaps using
a subarray record in some obscure way? I probably do need to use a
subarray record anyway, as there is a 6-byte header on the waveform,
which I need to drop.
For the record, this is EPICS 3.14.11 and Asyn R4-13 on x86 Linux.
Thanks.
Rod Nussbaumer
ISAC Controls, TRIUMF
Vancouver, Canada.
- Replies:
- Re: asyn reading to waveform records Rod Nussbaumer
- RE: asyn reading to waveform records Szalata, Zenon M.
- References:
- asyn reading to waveform records Rod Nussbaumer
- Navigate by Date:
- Prev:
Re: asyn reading to waveform records Eric Norum
- Next:
Re: std_R3_1 Bruce Hill
- 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: asyn reading to waveform records Eric Norum
- Next:
Re: asyn reading to waveform records Rod Nussbaumer
- 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
|