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()