Depends on the value.
CA sends the data as a double, so you get ~52 bits of information which are then scaled, not all 64 bits.
Note how ‘-f 0’ shows the wrong number, the lower bits in the hex number are basically zeroed.
$ pvput large 0x1234567812345678
New : 2025-07-24 10:06:55.607
1311768465173141112
$ pvget large
large 2025-07-24 10:06:55.607
1311768465173141112
$ caget -lx large
large
0x7FFFFFFF
$ caget -f 0 large
large
1311768465173140992
$ python3
>>> hex(1311768465173140992)
'0x1234567812345600'
On 2025-07-24, 9:55 AM, "Heinz Junkes (FHI)" <[email protected]> wrote:
I can also read the value with channel access camonitor/caget with -f 0 shows it correctly ;-)
(base) hactar:Db junkes$ camonitor -f 0 PPB:DOOR:WIEGAND:1:_data
PPB:DOOR:WIEGAND:1:_data 2025-07-24 15:52:15.150886 0
PPB:DOOR:WIEGAND:1:_data 2025-07-24 15:52:35.552332 6242213385
PPB:DOOR:WIEGAND:1:_data 2025-07-24 15:53:00.685626 9745890313
> For what it’s worth, you can read INT64 with PV Access.
> Doesn’t mean you need to change everything over to PVA. Using CS-Studio, you may keep all your displays in Channel Access, but just for that one PV use “pva://PPB:DOOR::WIEGAND:1:data” to read it via PV Access.
> All right, thanks for the clarification. I understand that this is not possible.
> > > Lack of INT64/UINT64 is not caget/caput/camonitor problem. These types are missing in the Channel Access protocol and it would be not an easy task to add them.
> > > Look into db_access.h file: there are 8 "basic" DBF_nnn types and a number of DBR_nnn types, of which first 8 are aliases to DBF_nnn, while the rest are 8x DBR_STS_nnn, 8x DBR_TIME_nnn, 8x DBR_GR_nnn, 8x DBR_CTRL_nnn, plus a number
of exotic ones, like DBR_STSACK_STRING.
> > > It is hardly possible to extend the CA type nomenclature without breaking compatibility in some way.
> > > > With best regards,
> > > > > On Thu, 24 Jul 2025, Heinz Junkes (FHI) via Tech-talk wrote:
> >> >> I have an int64in record and cannot read the decimal value via caget/camonitor.
> >> >> epics> dbpr PPB:DOOR::WIEGAND:1:data,7
> >> ACKS: NO_ALARM ACKT: YES ADEL: 0 AFTC: 0
> >> AFVL: 0 ALST: 8591023625 AMSG: ASG :
> >> ASP : PTR (nil) BKLNK: ELL 0 [(nil) .. (nil)] BKPT: 00
> >> DESC: Wiegand w1 DISA: 0 DISP: 0 DISS: NO_ALARM
> >> DISV: 1 DPVT: PTR 0x55a303ba30
> >> DSET: PTR 0x7fb81f00c0 DTYP: wiegandInt64in
> >> EGU : EVNT: FLNK: CONSTANT HHSV: NO_ALARM
> >> HIGH: 0 HIHI: 0 HOPR: 0 HSV : NO_ALARM
> >> HYST: 0 INP : CONSTANT 1 LALM: 8591023625 LCNT: 0
> >> LLSV: NO_ALARM LOLO: 0 LOPR: 0 LOW : 0
> >> LSET: PTR 0x55a303b3a0 LSV : NO_ALARM MDEL: 0
> >> MLIS: ELL 0 [(nil) .. (nil)] MLOK: c0 b8 03 a3 55 00 00 00
> >> MLST: 8591023625 NAME: PPB:DOOR::WIEGAND:1:data NAMSG:
> >> NSEV: NO_ALARM NSTA: NO_ALARM OLDSIMM: NO PACT: 0
> >> PHAS: 0 PINI: YES PPN : PTR (nil) PPNR: PTR (nil)
> >> PRIO: LOW PROC: 0 PUTF: 0
> >> RDES: PTR 0x55a2fdc0a0 RPRO: 0
> >> RSET: PTR 0x7fb81c0d40 SCAN: I/O Intr SDIS: CONSTANT
> >> SDLY: -1 SEVR: NO_ALARM SIML: CONSTANT SIMM: NO
> >> SIMPVT: PTR (nil) SIMS: NO_ALARM SIOL: CONSTANT
> >> SPVT: PTR 0x55a3042840 SSCN: 65535 STAT: NO_ALARM
> >> SVAL: 0 TIME: 2025-07-24 10:33:53.999485865 TPRO: 0
> >> TSE : 0 TSEL: CONSTANT UDF : 0 UDFS: INVALID
> >> UTAG: 0 VAL : 8591023625
> >> >> With caget/camonitor I get the value displayed as float:
> >> >> (base) hactar:~ junkes$ caget PPB:DOOR::WIEGAND:1:data
> >> PPB:DOOR::WIEGAND:1:data 8.59102e+09
> >> (base) hactar:~ junkes$ camonitor PPB:DOOR::WIEGAND:1:data
> >> PPB:DOOR::WIEGAND:1:data 2025-07-24 10:33:53.999486 8.59102e+09
> >> >> >> The attempt to specify the type is not possible:
> >> >> (base) hactar:~ junkes$ caget -d DBR_INT64 PPB:DOOR::WIEGAND:1:data
> >> Requested dbr type out of range or invalid - ignored. ('caget -h' for help.)
> >> PPB:DOOR::WIEGAND:1:data 8.59102e+09