Experimental Physics and
| |||||||||||||||||
|
Mark Rivers wrote:
This is intentional behaviour, and applies to all CA transfers, not just arrays. The reason for the difference is related to numeric conversions and the different DBF_ field types that are available via dbAccess.h (as used by database code) and db_access.h (as used by Channel Access). The full range of values that may appear in a DBF_USHORT (available to database code via dbAccess.h ) cannot be represented in a DBF_SHORT, the 16-bit type available in db_access.h; there are no unsigned types in db_access.h. CA has to convert your DBF_USHORT values into DBF_LONG in order to guarantee that it can transparently transmit all possible field values to the CA client. Similarly, the only db_access.h type that can hold all possible values from a dbAccess.h DBF_ULONG is a DBF_DOUBLE. If you don't want CA doing those conversions behind your back, you should avoid using unsigned types for record fields, and define them as DBF_SHORT and DBF_LONG instead. HTH, - Andrew -- Dear God, I didn't think orange went with purple until I saw the sunset you made last night. That was really cool. - Caro
| ||||||||||||||||
ANJ, 10 Aug 2010 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |