Okay, I think I get that now. Your explanation about GPIB not supporting
asynInt16Array kind of makes sense now that you've come out and said it.
I didn't realize that was the fundamental basis of the matter.
The relationship between the port drivers, asyn and all of its
interfaces, and StreamDevice has always been a bit of a black box, to
me. This is first time I've ever needed to look inside of it.
Thanks.
--- rod.
Mark Rivers wrote:
I agree with Eric. The GPIB driver implements the asynOctet interface, but not the asynInt16Array, etc. So it only knows how to read a stream of bytes, not how to assemble them into other data types.
It does seem like Dirk was identifying and fixing the problems that were preventing StreamDevice from working for your device, so that is probably the route I would suggest following. Or else you could use one of the existing Tektronix support packages.
Mark
-----Original Message-----
From: Eric Norum [mailto:[email protected]]
Sent: Wednesday, February 01, 2012 5:53 PM
To: Rod Nussbaumer
Cc: Mark Rivers; epics Techtalk
Subject: Re: asyn reading to waveform records
This might be possible, but asynOctet is not really intended to handle multi-byte values.
Trying to coerce it to do so is likely to open several wormy cans of things like endian issues and such.
On Feb 1, 2012, at 3:44 PM, Rod Nussbaumer wrote:
Thanks, Mark& Eric. If need be, I will take that approach, although I'm really hoping I don't have to.
Is there something I've done wrong in trying to use the waveform record in the way I've done it? It feels like I'm so close, and everything I see in the documentation and in the dbd file suggests it should be possible.
-- rod.
Mark Rivers wrote:
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.
- References:
- asyn reading to waveform records Rod Nussbaumer
- RE: asyn reading to waveform records Mark Rivers
- Re: asyn reading to waveform records Rod Nussbaumer
- Re: asyn reading to waveform records Eric Norum
- RE: asyn reading to waveform records Mark Rivers
- Navigate by Date:
- Prev:
RE: asyn reading to waveform records Mark Rivers
- Next:
RE: mvme6100 HW issues? Vesna Samardzic-Boban
- 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 Mark Rivers
- 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
|