Have a look at Nick DiMonte's Tektronix device support to see a way to read out waveforms efficiently.
On Feb 1, 2012, at 11:18 AM, Rod Nussbaumer wrote:
> 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.
>
>
--
Eric Norum
[email protected]
- References:
- asyn reading to waveform records Rod Nussbaumer
- Navigate by Date:
- Prev:
asyn reading to waveform records Rod Nussbaumer
- Next:
RE: asyn reading to waveform records Mark Rivers
- 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:
asyn reading to waveform records Rod Nussbaumer
- Next:
RE: asyn reading to waveform records Mark Rivers
- 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
|