Hi Pilar,
Can you explain what this variable is used for? I see that the drvInfo field is "mask" which sounds like it is being used as a bit mask?
If so, I don't think that "ao" is the best record type, since its VAL field is a double, not an integer. In this case it would be better to use a longout record instead. And if you want to be able to control all 32 bits without worrying about the sign you should use the asynUInt32Digital interface, rather than asynInt32. That ensures that the value is treated as an unsigned 32-bit number.
Mark
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Pilar Gil Jaldo
Sent: Tuesday, November 14, 2017 4:17 AM
To: [email protected]
Subject: Problem when formating a field as HEX32
Dear all,
I am having following problem.
MaskSet is a 32 double variable:
record(ao, "$(user):MaskSet")
{
field(DTYP ,"asynInt32")
field(OUT ,"@asyn($(PORT),$(ADDR),$(TIMEOUT))mask")
field(LOPR, 0x00000000)
field(HOPR, 0x7FFFFFFF)
field(PINI, "YES")
}
For the CSS/BOY, I have defined a text input field which makes possible
to change the value of this field.
When I set "Default" as format type of the field, everything works fine.
The problem comes when changing the format type to "HEX32". In this
case, it is not possible to control the introduced value to the set field.
For example,
if we introduce 0xFFFFFF7, after pressing Enter, the value changes
automatically to 0xFFFFFF0.
Or when 0x800007F -> the input value changes to 0x8000080.
If now, I change the format type to "Default" again and introduce the
value 134217855 ( 0x800007F as decimal) every works as it should.
Have somebody an idea of what is happening?
Kind regards,
Pilar Gil