diff --git a/docs/examples/QDevil/QDAC2/AWG.ipynb b/docs/examples/QDevil/QDAC2/AWG.ipynb index 021b3a649..e031a8987 100644 --- a/docs/examples/QDevil/QDAC2/AWG.ipynb +++ b/docs/examples/QDevil/QDAC2/AWG.ipynb @@ -37,7 +37,7 @@ "import numpy\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/Chaining.ipynb b/docs/examples/QDevil/QDAC2/Chaining.ipynb index e784b98f0..a11e16baa 100644 --- a/docs/examples/QDevil/QDAC2/Chaining.ipynb +++ b/docs/examples/QDevil/QDAC2/Chaining.ipynb @@ -37,7 +37,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/DC_Constant.ipynb b/docs/examples/QDevil/QDAC2/DC_Constant.ipynb index 4cc000f3c..8511c7cea 100644 --- a/docs/examples/QDevil/QDAC2/DC_Constant.ipynb +++ b/docs/examples/QDevil/QDAC2/DC_Constant.ipynb @@ -36,7 +36,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/Debugging.ipynb b/docs/examples/QDevil/QDAC2/Debugging.ipynb index e77564ce8..31ff937c9 100644 --- a/docs/examples/QDevil/QDAC2/Debugging.ipynb +++ b/docs/examples/QDevil/QDAC2/Debugging.ipynb @@ -38,7 +38,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')" + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')" ] }, { diff --git a/docs/examples/QDevil/QDAC2/List.ipynb b/docs/examples/QDevil/QDAC2/List.ipynb index 2922960f3..fb9670d9d 100644 --- a/docs/examples/QDevil/QDAC2/List.ipynb +++ b/docs/examples/QDevil/QDAC2/List.ipynb @@ -36,7 +36,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/MultiGenerator.ipynb b/docs/examples/QDevil/QDAC2/MultiGenerator.ipynb index 62752cf76..0911c8118 100644 --- a/docs/examples/QDevil/QDAC2/MultiGenerator.ipynb +++ b/docs/examples/QDevil/QDAC2/MultiGenerator.ipynb @@ -37,7 +37,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/Scan2D.ipynb b/docs/examples/QDevil/QDAC2/Scan2D.ipynb index 70995c648..095c5c138 100644 --- a/docs/examples/QDevil/QDAC2/Scan2D.ipynb +++ b/docs/examples/QDevil/QDAC2/Scan2D.ipynb @@ -37,7 +37,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/Scan2DDiode.ipynb b/docs/examples/QDevil/QDAC2/Scan2DDiode.ipynb new file mode 100644 index 000000000..ca48d4781 --- /dev/null +++ b/docs/examples/QDevil/QDAC2/Scan2DDiode.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ba1cac37", + "metadata": {}, + "source": [ + "# QDAC-II 2D diode scan" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2240aad5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Logging hadn't been started.\n", + "Activating auto-logging. Current session state plus future input saved.\n", + "Filename : /Users/jps/.qcodes/logs/command_history.log\n", + "Mode : append\n", + "Output logging : True\n", + "Raw input log : False\n", + "Timestamping : True\n", + "State : active\n", + "Qcodes Logfile : /Users/jps/.qcodes/logs/220421-5376-qcodes.log\n", + "Connected to: QDevil QDAC-II (serial:3, firmware:7-0.17.0) in 0.27s\n" + ] + } + ], + "source": [ + "from time import sleep\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from IPython.display import Image, display\n", + "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", + "qdac_addr = '192.168.8.17'\n", + "qdac = QDAC2.QDac2('QDAC2', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d12623a1", + "metadata": {}, + "outputs": [], + "source": [ + "qdac.reset()\n", + "sleep(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "03738e4f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0, \"No error\"'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arrangement = qdac.arrange(\n", + " # QDAC channels 2 & 3 connected to the ends of two back-to-back Ge diodes\n", + " gates={'diodes_left': 2, 'diodes_right': 3},\n", + " # Internal trigger for measuring current\n", + " internal_triggers={'inner'})\n", + "inner_steps = 21\n", + "inner_V = np.linspace(-0.3, 0.4, inner_steps)\n", + "outer_steps = 21\n", + "outer_V = np.linspace(-0.2, 0.5, outer_steps)\n", + "sweep = arrangement.virtual_sweep2d(\n", + " inner_gate='diodes_left',\n", + " inner_voltages=inner_V,\n", + " outer_gate='diodes_right',\n", + " outer_voltages=outer_V,\n", + " inner_step_time_s=20e-3,\n", + " inner_step_trigger='inner')\n", + "qdac.errors()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "61bf6561", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0, \"No error\"'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hook up current measurement to the internal trigger produced by the sweep\n", + "diodes = qdac.channel(2)\n", + "diodes.clear_measurements()\n", + "measurement = diodes.measurement()\n", + "measurement.start_on(arrangement.get_trigger_by_name('inner'))\n", + "qdac.errors()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b4ebfdce", + "metadata": {}, + "outputs": [], + "source": [ + "# Start sweep\n", + "sweep.start()\n", + "sleep(10)\n", + "# Stop current flow\n", + "qdac.channel(2).dc_constant_V(0)\n", + "qdac.channel(3).dc_constant_V(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "cc403579", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "442\n" + ] + } + ], + "source": [ + "sleep(3)\n", + "raw = measurement.available_A()\n", + "# Circumvent flaw in 0.12.0 driver\n", + "print(len(raw))\n", + "available = list(map(lambda x: float(x), raw[-(outer_steps * inner_steps):]))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b921c7d1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "currents = np.reshape(available, (-1, inner_steps)) * 1000\n", + "fig, ax = plt.subplots()\n", + "plt.title('diodes (Ge) back-to-back')\n", + "extent = [inner_V[0],inner_V[-1],outer_V[0],outer_V[-1]]\n", + "img = ax.imshow(currents, cmap='plasma', interpolation='nearest', extent=extent)\n", + "ax.set_xlabel('Volt')\n", + "ax.set_ylabel('Volt')\n", + "colorbar = fig.colorbar(img)\n", + "colorbar.set_label('mA')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.10" + }, + "nbsphinx": { + "execute": "never" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/examples/QDevil/QDAC2/Sine.ipynb b/docs/examples/QDevil/QDAC2/Sine.ipynb index e8377e7d6..c193be531 100644 --- a/docs/examples/QDevil/QDAC2/Sine.ipynb +++ b/docs/examples/QDevil/QDAC2/Sine.ipynb @@ -36,7 +36,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/Square.ipynb b/docs/examples/QDevil/QDAC2/Square.ipynb index 14fbddf4f..f01f4bbe9 100644 --- a/docs/examples/QDevil/QDAC2/Square.ipynb +++ b/docs/examples/QDevil/QDAC2/Square.ipynb @@ -36,7 +36,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/Sweep.ipynb b/docs/examples/QDevil/QDAC2/Sweep.ipynb index 5a4d6b0ee..0ad496fe0 100644 --- a/docs/examples/QDevil/QDAC2/Sweep.ipynb +++ b/docs/examples/QDevil/QDAC2/Sweep.ipynb @@ -37,7 +37,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/Triangle.ipynb b/docs/examples/QDevil/QDAC2/Triangle.ipynb index e137dd6e9..31098703a 100644 --- a/docs/examples/QDevil/QDAC2/Triangle.ipynb +++ b/docs/examples/QDevil/QDAC2/Triangle.ipynb @@ -37,7 +37,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/VirtualGates2dScan.ipynb b/docs/examples/QDevil/QDAC2/VirtualGates2dScan.ipynb index 49f6d2b27..19d7d4fa9 100644 --- a/docs/examples/QDevil/QDAC2/VirtualGates2dScan.ipynb +++ b/docs/examples/QDevil/QDAC2/VirtualGates2dScan.ipynb @@ -37,7 +37,7 @@ "from IPython.display import Image, display\n", "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", "qdac_addr = '192.168.8.153'\n", - "qdac = QDAC2.QDac2('QDAC-II', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", + "qdac = QDAC2.QDac2('QDAC', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')\n", "import qcodes.instrument_drivers.rigol.DS1074Z as DS1000Z\n", "rigol_addr = '192.168.8.199'\n", "scope = DS1000Z.DS1074Z('rigol', visalib='@py', address=f'TCPIP::{rigol_addr}::INSTR')" diff --git a/docs/examples/QDevil/QDAC2/do2dScan.ipynb b/docs/examples/QDevil/QDAC2/do2dScan.ipynb new file mode 100644 index 000000000..a720b6b8e --- /dev/null +++ b/docs/examples/QDevil/QDAC2/do2dScan.ipynb @@ -0,0 +1,422 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ba1cac37", + "metadata": {}, + "source": [ + "# QDAC-II 2D diode scan" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2240aad5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connected to: QDevil QDAC-II (serial:3, firmware:7-0.17.0) in 0.28s\n" + ] + } + ], + "source": [ + "from time import sleep\n", + "import numpy as np\n", + "from qcodes.utils.dataset import doNd\n", + "from qcodes_contrib_drivers.drivers.QDevil import QDAC2\n", + "qdac_addr = '192.168.8.17'\n", + "qdac = QDAC2.QDac2('QDAC2', visalib='@py', address=f'TCPIP::{qdac_addr}::5025::SOCKET')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d12623a1", + "metadata": {}, + "outputs": [], + "source": [ + "qdac.reset()\n", + "sleep(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "bc041d6b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting experimental run with id: 213. Using 'qcodes.utils.dataset.doNd.do2d'\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0a5b12dc026d4864a9282a98e45441fd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/21 [00:00" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# QDAC channels 2 & 3 connected to the ends of two back-to-back Ge diodes\n", + "left_diodes = qdac.channel(2)\n", + "right_diodes = qdac.channel(3)\n", + "left_diodes.clear_measurements()\n", + "delay_s = 20e-3\n", + "# do2d(param_set1, start1, stop1, num_points1, delay1, param_set2, ..., *param_meas)\n", + "doNd.do2d(\n", + " right_diodes.dc_constant_V, -0.2, 0.5, 21, 0,\n", + " left_diodes.dc_constant_V, -0.3, 0.4, 21, delay_s, \n", + " left_diodes.read_current_A,\n", + " set_before_sweep=False,\n", + " show_progress=True, do_plot=True)\n", + "# Stop current flow\n", + "left_diodes.dc_constant_V(0)\n", + "right_diodes.dc_constant_V(0)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.10" + }, + "nbsphinx": { + "execute": "never" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/qcodes_contrib_drivers/drivers/QDevil/QDAC2.py b/qcodes_contrib_drivers/drivers/QDevil/QDAC2.py index 1014e9416..42761162d 100644 --- a/qcodes_contrib_drivers/drivers/QDevil/QDAC2.py +++ b/qcodes_contrib_drivers/drivers/QDevil/QDAC2.py @@ -1814,6 +1814,7 @@ def __init__(self, name: str, address: str, **kwargs) -> None: address (str): Visa identification string **kwargs: additional argument to the Visa driver """ + self._check_instrument_name(name) super().__init__(name, address, terminator='\n', **kwargs) self._set_up_serial() self._set_up_debug_settings() @@ -2170,3 +2171,10 @@ def _set_up_manual_triggers(self) -> None: def _set_up_simple_functions(self) -> None: self.add_function('reset', call_cmd='*rst') self.add_function('abort', call_cmd='abor') + + def _check_instrument_name(self, name: str) -> None: + if name.isidentifier(): + return + raise ValueError( + f'Instrument name "{name}" is incompatible with QCoDeS parameter ' + 'generation (no spaces, punctuation, prepended numbers, etc)') diff --git a/qcodes_contrib_drivers/tests/QDevil/sim_qdac2_fixtures.py b/qcodes_contrib_drivers/tests/QDevil/sim_qdac2_fixtures.py index 4cd5d9d82..62ad35d09 100644 --- a/qcodes_contrib_drivers/tests/QDevil/sim_qdac2_fixtures.py +++ b/qcodes_contrib_drivers/tests/QDevil/sim_qdac2_fixtures.py @@ -21,7 +21,7 @@ def __init__(self): if DUT._instance: raise ValueError('DUT is a singleton, call instance()') DUT._instance = self - name = 'dac-' + str(uuid.uuid4()) + name = ('dac' + str(uuid.uuid4())).replace('-', '') try: self.dac = QDAC2.QDac2(name, address='GPIB::1::INSTR', visalib=visalib) except Exception as error: diff --git a/qcodes_contrib_drivers/tests/QDevil/test_sim_qdac2_init.py b/qcodes_contrib_drivers/tests/QDevil/test_sim_qdac2_init.py index 2a5470d0e..dd0c8f0fc 100644 --- a/qcodes_contrib_drivers/tests/QDevil/test_sim_qdac2_init.py +++ b/qcodes_contrib_drivers/tests/QDevil/test_sim_qdac2_init.py @@ -31,3 +31,11 @@ def test_refuse_incompatible_firmware(): Instrument._all_instruments.pop('qdac') except KeyError: pass + +def test_refuse_qcodes_incompatible_name(): + # ----------------------------------------------------------------------- + with pytest.raises(ValueError) as error: + QDAC2.QDac2('QDAC-II', address='GPIB::1::INSTR', visalib=visalib) + # ----------------------------------------------------------------------- + assert 'QDAC-II' in repr(error) + assert 'incompatible with QCoDeS parameter' in repr(error)