From d860e20175245fe28f98bd3a7e31fb7006a0c879 Mon Sep 17 00:00:00 2001 From: Evan Jeffrey Date: Wed, 19 Oct 2016 21:04:31 -0700 Subject: [PATCH 1/2] Allow specifying known devices in the registry. Completely untested. --- gpib_server.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gpib_server.py b/gpib_server.py index 856df0e7..b9869eda 100644 --- a/gpib_server.py +++ b/gpib_server.py @@ -64,6 +64,7 @@ KNOWN_DEVICE_TYPES = ('GPIB', 'TCPIP', 'USB') +CONFIG_PATH = ['', 'Servers', 'GPIB Bus'] class GPIBBusServer(LabradServer): @@ -98,6 +99,25 @@ def stopServer(self): self.refresher.stop() yield self.refresherDone + + @inlineCallbacks + def getRegistryDevices(self): + """Get a list of known devices from the registry. + + This is used when a given device won't show up + in the VISA resource manager. + + This returns the contents of the registry key named %NODENAME + in the registry path ['', 'Servers', 'GPIB Bus'] + """ + keyname = os.environ.get('LABRADNODE', 'default') + p = self.client.registery.packet() + p.cd(CONFIG_PATH, True) + p.get(keyname, True, []) + resp = yield p.send() + return resp['get'] + + @inlineCallbacks def refreshDevices(self): """Refresh the list of known devices on this bus. @@ -105,6 +125,7 @@ def refreshDevices(self): """ try: rm = visa.ResourceManager() + registry_devices = yield self.getRegistryDevices() addresses = [str(x) for x in rm.list_resources()] additions = set(addresses) - set(self.devices.keys()) deletions = set(self.devices.keys()) - set(addresses) From 3ff22dc75dc9a303104a7e50b1f0db421645f5e1 Mon Sep 17 00:00:00 2001 From: Evan Jeffrey Date: Wed, 19 Oct 2016 21:08:30 -0700 Subject: [PATCH 2/2] Actually use the list --- gpib_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gpib_server.py b/gpib_server.py index b9869eda..b47507f3 100644 --- a/gpib_server.py +++ b/gpib_server.py @@ -126,7 +126,7 @@ def refreshDevices(self): try: rm = visa.ResourceManager() registry_devices = yield self.getRegistryDevices() - addresses = [str(x) for x in rm.list_resources()] + addresses = [str(x) for x in rm.list_resources()] + registry_devices additions = set(addresses) - set(self.devices.keys()) deletions = set(self.devices.keys()) - set(addresses) for addr in additions: