EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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  <20222023  2024  2025  2026  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  <20222023  2024  2025  2026 
<== Date ==> <== Thread ==>

Subject: Re: setInteger64Param
From: Mark Rivers via Tech-talk <[email protected]>
To: Torsten Bögershausen <[email protected]>, "Gofron, Kazimierz" <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Fri, 26 Aug 2022 12:51:46 +0000

>>I wonder if "ai" record is correct for asyInt64.

> Of course not ;-)


Actually the ai record works with asynInt64, and is documented here:

which says this:
  • aiRecord

A 64-bit integer is read from the driver and converted to a 64-bit float. The 64-bit float can exactly represent integers up to 52 bits. The value is read into the .VAL field, not the .RVAL field. Linear conversion is limited to .EOFF and .ESLO. Each time the record is processed a new value is read. SCAN "I/O Intr" is supported.


Even if it does not do what Kaz wants because of the limited number of bits, it should not giving a 0 value.

Perhaps this problem is this line:

setInteger64Param(ADTimePixStartTime,       1661466046253);

Should that be:
setInteger64Param(ADTimePixStartTime,       1661466046253LL);

i.e. explicitly tell the compiler that is a long long constant.

If that does not work then please send the output of

asynReport 1 driver_name

That will show the values of all parameters in the parameter library, and we can see if it has the correct value there.

Mark



From: Torsten Bögershausen <[email protected]>
Sent: Friday, August 26, 2022 7:39 AM
To: Gofron, Kazimierz <[email protected]>; Mark Rivers <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: setInteger64Param
 

 

Hej Kaz

>>I wonder if "ai" record is correct for asyInt64.

Of course not ;-)

 

Please try

record(int64in, "$(P)$(R)StartTime_RBV"){

  field(DTYP, "asynInt64")

  field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))TPX3_START_TIME")

  field(SCAN, "I/O Intr")

}

/Torsten

 

From: Tech-talk <[email protected]> on behalf of "Gofron, Kazimierz via Tech-talk" <[email protected]>
Reply-To: "Gofron, Kazimierz" <[email protected]>
Date: Friday, 26 August 2022 at 14:18
To: Mark Rivers <[email protected]>
Cc: "[email protected]" <[email protected]>
Subject: Re: setInteger64Param

 

Hi Mark,

 

Sorry, I copied a wrong record to the previous email.

 

The correct record is

 

record(ai, "$(P)$(R)StartTime_RBV"){

  field(DTYP, "asynInt64")

  field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))TPX3_START_TIME")

  field(SCAN, "I/O Intr")

}

----------

setInteger64Param(ADTimePixStartTime,       1661466046253);

createParam(ADTimePixStartTimeString,       asynParamInt64,     &ADTimePixStartTime);

 

The callParamCallbacks(); was there. I added additional one just after the setInteger64Param()

 

I wonder if "ai" record is correct for asyInt64.

 

Kaz


From: Mark Rivers <[email protected]>
Sent: Thursday, August 25, 2022 11:56 PM
To: Gofron, Kazimierz <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: setInteger64Param

 

I just noticed that you created the parameter with Type asynInt64 but your record has DTYP asynFloat64. That is not correct, and should have produced an error message after iocInit. 

 

You should either use an ai record with DTYP asynInt64 or an int64In record.

 

Mark

 

Sent from my iPhone



On Aug 25, 2022, at 6:42 PM, Gofron, Kazimierz via Tech-talk <[email protected]> wrote:

Hi all,

 

I am writing an areaDetector driver that reads integer time in multiples of fractions of ns. 

 

ADCore: R3-11

asyn:    R4-22

OS:         ubuntu 20.04LTE

===============

 

record(ai, "$(P)$(R)ElapsedTime_RBV"){

  field(DTYP, "asynFloat64")

  field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))TPX3_ELAPSED_TIME")

  field(SCAN, "I/O Intr")

}

 

In the driver the value is set using (hard coded value here):

setInteger64Param(ADTimePixStartTime,       1661466046253);

 

However, the PV value does not change from 0.

------------

PV is created:

createParam(ADTimePixStartTimeString,      asynParamInt64,     &ADTimePixStartTime);    

 

==========

 

The caput changes the value of PV:

 

kgofron@myHP$ caput TPX3-TEST:cam1:StartTime_RBV 1661466046253

Old : TPX3-TEST:cam1:StartTime_RBV   0

New : TPX3-TEST:cam1:StartTime_RBV   1.66147e+12

=================

 

Any suggestions would be much appreciated.

 

Kazimierz

 

Replies:
Re: setInteger64Param Gofron, Kazimierz via Tech-talk
References:
setInteger64Param Gofron, Kazimierz via Tech-talk
Re: setInteger64Param Mark Rivers via Tech-talk
Re: setInteger64Param Gofron, Kazimierz via Tech-talk
Re: setInteger64Param Torsten Bögershausen via Tech-talk

Navigate by Date:
Prev: Re: Eurotherm modbus support Mark Rivers via Tech-talk
Next: Re: Eurotherm modbus support William Kirstaedter via Tech-talk
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  <20222023  2024  2025  2026 
Navigate by Thread:
Prev: Re: setInteger64Param Torsten Bögershausen via Tech-talk
Next: Re: setInteger64Param Gofron, Kazimierz via Tech-talk
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  <20222023  2024  2025  2026 
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·