From da1398b183052122d7d4420bef59b6cb8d559858 Mon Sep 17 00:00:00 2001 From: Yann Sionneau Date: Wed, 19 Aug 2015 12:49:30 +0200 Subject: [PATCH] pxi6733: fix crash when samples are all the same When samples are all the same, min = max, which PyDAQmx does not like. This avoids the following crash reported by Kathie: C:\Users\rabi\artiq\artiq\frontend [master]> python .\artiq_rpctool.py ::1 3256 call load_sample_values 100000 'np.array([0.0,0.0],dtype=float)' Traceback (most recent call last): File ".\artiq_rpctool.py", line 112, in main() File ".\artiq_rpctool.py", line 107, in main call_method(remote, args.method, args.args) File ".\artiq_rpctool.py", line 79, in call_method ret = method(*[eval(arg) for arg in args]) File "C:\Users\rabi\AppData\Local\Continuum\Anaconda3\lib\site-packages\artiq- 0.0+dev-py3.4.egg\artiq\protocols\pc_rpc.py", line 142, in proxy return self.__do_rpc(name, args, kwargs) File "C:\Users\rabi\AppData\Local\Continuum\Anaconda3\lib\site-packages\artiq- 0.0+dev-py3.4.egg\artiq\protocols\pc_rpc.py", line 134, in __do_rpc return self.__do_action(obj) File "C:\Users\rabi\AppData\Local\Continuum\Anaconda3\lib\site-packages\artiq- 0.0+dev-py3.4.egg\artiq\protocols\pc_rpc.py", line 128, in __do_action raise RemoteError(obj["message"]) artiq.protocols.pc_rpc.RemoteError: Traceback (most recent call last): File "C:\Users\rabi\AppData\Local\Continuum\Anaconda3\lib\site-packages\artiq- 0.0+dev-py3.4.egg\artiq\protocols\pc_rpc.py", line 476, in _handle_connection_cr ret = method(*obj["args"], **obj["kwargs"]) File "C:\Users\rabi\AppData\Local\Continuum\Anaconda3\lib\site-packages\artiq- 0.0+dev-py3.4.egg\artiq\devices\pxi6733\driver.py", line 117, in load_sample_val ues byref(num_samps_written), None) File "", line 3, in WriteAnalogF64 File "", line 2, in function File "C:\Users\rabi\AppData\Local\Continuum\Anaconda3\lib\site-packages\pydaqm x-1.3.1-py3.4.egg\PyDAQmx\DAQmxFunctions.py", line 28, in mafunction raise DAQError(error,errBuff.value.decode("utf-8"), f.__name__) PyDAQmx.DAQmxFunctions.DAQError: Minimum is greater than or equal to the maximum . Ensure the maximum value is greater than the minimum value. If using a custom scale, ensure that the scaled maximum is greater than the scaled minimum. Property: DAQmx_AO_Min Corresponding Value: 0.0 Property: DAQmx_AO_Max Corresponding Value: 0.0 Channel Name: Dev1/ao1 Task Name: _unnamedTask<4> Status Code: -200082 in function DAQmxWriteAnalogF64 --- artiq/devices/pxi6733/driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/artiq/devices/pxi6733/driver.py b/artiq/devices/pxi6733/driver.py index 2d139dc85..153098b5d 100644 --- a/artiq/devices/pxi6733/driver.py +++ b/artiq/devices/pxi6733/driver.py @@ -93,7 +93,7 @@ class DAQmx: values = values.flatten() t = self.daq.Task() t.CreateAOVoltageChan(self.channels, b"", - min(values), max(values), + min(values), max(values)+1, self.daq.DAQmx_Val_Volts, None) channel_number = (c_ulong*1)()