diff --git a/TimeBaseAOMDriver/blacs_tabs.py b/TimeBaseAOMDriver/blacs_tabs.py index 1b05b384703791202d6cbcc27cfcc4f977b7230e..6b5098634d45c14ffd94683645a525fb67bf54ca 100644 --- a/TimeBaseAOMDriver/blacs_tabs.py +++ b/TimeBaseAOMDriver/blacs_tabs.py @@ -7,7 +7,6 @@ class TimeBaseTab(DeviceTab): props = connection.properties self.hostname = props["hostname"] self.port = props["port"] - self.num_AOM = props["num_AOM"] # Capabilities self.base_units = {'freq':'Hz', 'amp':'dBm',} self.base_min = {'freq':props["min_freq"], 'amp':props["min_amp"],} @@ -17,7 +16,9 @@ class TimeBaseTab(DeviceTab): # Create DDS Output objects dds_prop = {} - for i in range(1,self.num_AOM+1): + for i in range(1,props["num_AOM"]+1): + if connection.find_child(self.device_name,f"CH-{i}") is None: + continue dds_prop[f"CH-{i}"] = {"gate":{}} for subchnl in ['freq', 'amp']: dds_prop[f"CH-{i}"][subchnl] = {'base_unit':self.base_units[subchnl], @@ -45,7 +46,7 @@ class TimeBaseTab(DeviceTab): self.create_worker( "main_worker", "user_devices.TimeBaseAOMDriver.blacs_workers.TimeBaseWorker", - {"hostname":self.hostname, "port":self.port, "num_AOM":self.num_AOM, "mock":props["mock"]}) + {"hostname":self.hostname, "port":self.port, "channels":tuple(dds_prop.keys()), "mock":props["mock"]}) self.primary_worker = "main_worker" diff --git a/TimeBaseAOMDriver/blacs_workers.py b/TimeBaseAOMDriver/blacs_workers.py index 31679e8222422da67b31b3560b70d32d159c91a2..f66f228417c043ef5f776297d8a6b48f9ad00538 100644 --- a/TimeBaseAOMDriver/blacs_workers.py +++ b/TimeBaseAOMDriver/blacs_workers.py @@ -26,8 +26,8 @@ class TimeBaseWorker(Worker): continue break print(self.client.recv(200).decode()) - self.smart_cache = {f"CH-{i}":{} for i in range(1,self.num_AOM+1)} - self.remote_values = {f"CH-{i}":{} for i in range(1,self.num_AOM+1)} + self.smart_cache = {channel:{} for channel in self.channels} + self.remote_values = {channel:{} for channel in self.channels} def transition_to_buffered(self, device_name, h5file, initial_values, fresh): with h5py.File(h5file,"r") as file: @@ -69,13 +69,13 @@ class TimeBaseWorker(Worker): def check_remote_values(self): start = time.perf_counter() - try: - # Call revc in case the TCP server still has some other message queued to send - self.client.recv(1000) - except socket.timeout: - pass # Nothing received - for i in range(1,self.num_AOM+1): - ch = f"CH-{i}" + # I rmoved this block, becasue I don't think it's necessary and when we run shots for long this often triggers an error that requires restarts + # try: + # # Call revc in case the TCP server still has some other message queued to send + # self.client.recv(1000) + # except socket.timeout: + # pass # Nothing received + for ch in self.channels: self.client.send(ch.encode()+b"|Gpar\r\n") time.sleep(0.2) try: