Programming Example: Using Python to configure a basic waveform with an SDG X series generator via open sockets (LAN)
November 1, 2018
#!/usr/bin/env python 2.7.13 #-*- coding:utf-8 –*- #----------------------------------------------------------------------------- # The short script is a example that open a socket, sends basic commands # to set the waveform type, amplitude, and frequency and closes the socket. # #No warranties expressed or implied # #SIGLENT/JAC 11.2018 # #----------------------------------------------------------------------------- import socket # for sockets import sys # for exit import time # for sleep #----------------------------------------------------------------------------- remote_ip = "192.168.55.110" # should match the instrument’s IP address port = 5024 # the port number of the instrument service #Port 5024 is valid for the following: #SIGLENT SDS1202X-E, SDG2X Series, SDG6X Series #SDM3055, SDM3045X, and SDM3065X # #Port 5025 is valid for the following: #SIGLENT SVA1000X series, SSA3000X Series, and SPD3303X/XE count = 0 def SocketConnect(): try: #create an AF_INET, STREAM socket (TCP) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error: print ('Failed to create socket.') sys.exit(); try: #Connect to remote server s.connect((remote_ip , port)) except socket.error: print ('failed to connect to ip ' + remote_ip) return s def SocketSend(Sock, cmd): try : #Send cmd string Sock.sendall(cmd) Sock.sendall(b'\n') time.sleep(1) except socket.error: #Send failed print ('Send failed') sys.exit() #reply = Sock.recv(4096) #return reply def SocketClose(Sock): #close the socket Sock.close() time.sleep(1) def main(): global remote_ip global port global count # Body: send the SCPI commands and print the return message s = SocketConnect() qStr = SocketSend(s, b'*RST') #Reset to factory defaults time.sleep(1) qStr = SocketSend(s, b'C1:BSWV WVTP,SQUARE') #Set CH1 Wavetype to Square qStr = SocketSend(s, b'C1:BSWV FRQ,1000') #Set CH1 Frequency qStr = SocketSend(s, b'C1:BSWV AMP,1') #Set CH1 amplitude SocketClose(s) #Close socket print('Query complete. Exiting program') sys.exit if __name__ == '__main__': proc = main()