# This script is a client for controlling a TRX device over TCP/IP. # It allows the user to set various parameters such as RX frequency, TX frequency, # RX rate, TX level, and more. The script uses a socket connection to communicate with the TRX device. import socket import sys import time import struct import numpy as np default_port = 1001 default_host = '192.168.1.100' class TrxClient: def __init__(self, host='localhost', port=1001): self.host = host self.port = port self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.size = 0 self.sock.settimeout(5) self.connect() self.tx_rate = 2 def connect(self): try: self.sock.connect((self.host, self.port)) print(f"Connected to {self.host}:{self.port}") except socket.error as e: print(f"Connection error: {e}") sys.exit(1) def set_rx_freq(self, freq): try: data = struct.pack(' (size - counter): n = size - counter rcv_data = self.sock.recv(4096) counter += n if not rcv_data: print("No data received") break except socket.error as e: print(f"Socket error: {e}") def close(self): try: self.sock.close() print("Connection closed") except socket.error as e: print(f"Socket error: {e}") client = TrxClient(default_host, default_port) end_of_cmd = False while not end_of_cmd: cmd = str(input('Enter command: ')) if cmd == 'set_rx_freq': freq = float(input('Enter RX frequency (MHz): ')) client.set_rx_freq(freq) elif cmd == 'set_tx_freq': freq = float(input('Enter TX frequency (MHz): ')) client.set_tx_freq(freq) elif cmd == 'set_rx_rate': rate = int(input('Enter RX rate (kSPS): ')) client.set_rx_rate(rate) elif cmd == 'set_tx_level': level = int(input('Enter TX level: ')) client.set_tx_level(level) elif cmd == 'set_pin': pin = int(input('Enter pin number: ')) client.set_pin(pin) elif cmd == 'clear_pin': pin = int(input('Enter pin number: ')) client.clear_pin(pin) elif cmd == 'set_dac': dac = int(input('Enter DAC value: ')) client.set_dac(dac) elif cmd == 'clear_pulses': client.clear_pulses() elif cmd == 'add_pulse': level = int(input('Enter pulse level: ')) phase = float(input('Enter pulse phase (degrees): ')) width = int(input('Enter pulse width (ticks): ')) client.add_pulse(level, phase, width) elif cmd == 'add_pulses': level = int(input('Enter pulse level: ')) phase = float(input('Enter pulse phase (degrees): ')) width = int(input('Enter pulse width (ticks): ')) num = int(input('Enter num: ')) client.add_pulses(level, phase, width, num) elif cmd == 'add_delay': gate = int(input('Enter delay gate: ')) width = int(input('Enter delay width (ticks): ')) client.add_delay(gate, width) elif cmd == 'load_file': filename = str(input('Enter filename: ')) client.load_file(filename) elif cmd == 'start_sequence': client.start_sequence() elif cmd == 'exit': client.close() end_of_cmd = True else: print("Invalid command")