-
Notifications
You must be signed in to change notification settings - Fork 9
Closed
Description
I seem to be unable to set the value of a StringOut record programmatically by calling .set(). This program demonstrates the issue:
# Import the basic framework components.
from softioc import softioc, builder, asyncio_dispatcher
# Create an asyncio dispatcher, the event loop is now running
dispatcher = asyncio_dispatcher.AsyncioDispatcher()
# Set the record prefix
builder.SetDeviceName("MY-DEVICE-PREFIX")
# Create some records
strout = builder.stringOut("FLIBBLE", initial_value="ABC")
# Boilerplate get the IOC started
builder.LoadDatabase()
softioc.iocInit(dispatcher)
strout.set("DEF")
# Finally leave the IOC running with an interactive shell.
softioc.interactive_ioc(globals())
The strout.set() line generates this exception:
File "/home/eyh46967/dev/pythonSoftIoc/docs/examples/trial_stringout.py", line 17, in <module>
strout.set("DEF")
File "/home/eyh46967/dev/pythonSoftIoc/softioc/device.py", line 212, in set
datatype, length, data, array = self.value_to_dbr(value)
File "/home/eyh46967/dev/pythonSoftIoc/softioc/device.py", line 186, in value_to_dbr
dbrtype = self.NumpyCharCodeToDbr[value.dtype.char]
KeyError: 'U'
The device.py code appears to be trying to convert the string value into a numpy array on line 173:
value = numpy.require(value, requirements = 'C')
Examining this array gives a value.dtype.char of U, which is unknown to the NumpyCharCodeToDbr mapping dictionary.
Reactions are currently unavailable