Thank you, Mark.
I was very unsure about this.
I did my best to copy the logic of your existing file from your test project, but it’s kinda complicated, and I wouldn’t be surprised if I made a mistake.
I’ll study this in more detail next week.
Cheers,
Peter.
From: Mark Rivers [mailto:[email protected]]
Sent: 31 October 2014 17:57
To: Heesterman, Peter; [email protected]
Subject: RE: devAsynFloat64::initCommon findInterface asynFloat64Type
I see the problem:
LeyboldTurboPortDriverConfigure(TURBO:1)
drvAsynSerialPortConfigure(PUMP:1, COM1:, 0, 0, 0)
## Load record instances
dbLoadRecords("db/LeyboldTurbo.db", "P=PUMP:1:,PORT=PUMP:1")
You have connected the record to the PUMP:1 port, but you should connect it to the TURBO:1 port. PUMP:1 is the underlying serial port, which does not implement asynFloat64. You need to connect it to your LeyboldTurboPortDriver port, TURBO:1.
Mark
Hi Mark,
Attached.
Cheers,
Peter.
Please send the complete output when the IOC starts up. Also send the output of the command
asynReport 10
Mark
Hi Mark,
Here is this constructor (unashamedly copied from your TestAsynPortDriver class):
CLeyboldTurboPortDriver::CLeyboldTurboPortDriver(const char *AsynPortName)
: asynPortDriver(AsynPortName,
1, /* maxAddr */
NUM_PARAMS,
asynInt8ArrayMask | asynInt32Mask | asynFloat64Mask | asynFloat64ArrayMask | asynEnumMask | asynDrvUserMask, /* Interface mask */
asynInt8ArrayMask | asynInt32Mask | asynFloat64Mask | asynFloat64ArrayMask | asynEnumMask, /* Interrupt mask */
0, /* asynFlags. This driver does not block and it is not multi-device, so flag is 0 */
1, /* Autoconnect */
0, /* Default priority */
0) /* Default stack size*/
Cheers,
Peter.
I suspect that in the constructor for your driver you did not set the asynFloat64Mask bit in the interfaceMask argument to the asynPortDriver constructor. If your driver will do callbacks on the asynFloat64 interface you also need to set that bit in the interruptMask argument to the asynPortDriver constructor.
Mark
Hi all,
I’m developing a device that needs to read out a floating point value that forms part of a 24-byte structure read from the serial port.
I’m doing this as an AsynPortDriver device.
I get the above error on my record definition, but I’m not sure why.
I’m still new as an EPICS user, so my question is: can you give me some advice as to what I’m missing?
Many thanks,
Peter.