Sometimes when my .NET application calls Task.AddGlobalChannel I get this error:
Device cannot be accessed. Possible causes:
Device is no longer present in the system.
Device is not powered.
Device is powered, but was temporarily without power.
Device is damaged.
Ensure the device is properly connected and powered. Turn the computer off and on again. If you suspect that the device is damaged, contact National Instruments at ni.com/support.
Device Specified: cDAQ9188-1B57846Mod1
Task Name: _unnamedTask<0>
Status Code: -201003
This only occurs after my computer has been in sleep/hibernation. The solution is to click the Reset button in NI MAX. My question is however: How do I perform this reset programatically?
I have checked daqMX.DaqSystem.Local for any possible functions, but none seems to do what I need.
Soon after I posted the question I found the answer (as usual...):
* Iterate through the DAQmx.DaqSystem.Local.Devices array until the right device is found.
* Load the device using DAQmx.DaqSystem.Local.LoadDevice.
* Call .Reset() on the device.
'Look for the device
Dim devs() As String = DAQmx.DaqSystem.Local.Devices
Dim daqDev As DAQmx.Device = Nothing
For Each dev As String In devs
If dev = "myDeviceName" Then
daqDev = DAQmx.DaqSystem.Local.LoadDevice(dev)
If daqDev Is Nothing Then
Throw New Exception("Could not find DAQ device")
I have not figured out how to actually know when the reset is done though...