Advertisement
pogen

wavemeter_client

Mar 31st, 2025 (edited)
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.44 KB | Source Code | 0 0
  1. import socket
  2. import time
  3.  
  4. class WavemeterClient:
  5.     def __init__(self, host='127.0.0.1', port=51123, timeout=2.0, post_connect_delay=0.5):
  6.         self.host = host
  7.         self.port = port
  8.         self.timeout = timeout
  9.         self.post_connect_delay = post_connect_delay
  10.         self.sock = None
  11.  
  12.     def connect(self):
  13.         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  14.         self.sock.settimeout(self.timeout)
  15.         self.sock.connect((self.host, self.port))
  16.         print(f"Connected to {self.host}:{self.port}")
  17.         time.sleep(self.post_connect_delay)
  18.  
  19.     def close(self):
  20.         if self.sock:
  21.             self.sock.close()
  22.             self.sock = None
  23.  
  24.     def send_command(self, command, expect_response=True, post_command_delay=0.2):
  25.         if self.sock is None:
  26.             raise RuntimeError("Socket is not connected.")
  27.         full_command = command.strip() + '\r\n'
  28.         print(f"Sending: {repr(full_command)}")
  29.         self.sock.sendall(full_command.encode('ascii'))
  30.         time.sleep(post_command_delay)
  31.  
  32.         if expect_response:
  33.             try:
  34.                 response = self.sock.recv(1024)
  35.                 return response.decode('ascii').strip()
  36.             except socket.timeout:
  37.                 return None
  38.         return None
  39.  
  40.     def __enter__(self):
  41.         self.connect()
  42.         return self
  43.  
  44.     def __exit__(self, exc_type, exc_value, traceback):
  45.         self.close()
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement