
I/Q over Ethernet (QSFP+) protocol
R&S
®
SMM-K507
47
User Manual 1179.5718.02 ─ 02
def wrtApplCmdAndReadAck(clientSock, frm_cnt, applCmdStr):
toSend = len(appl1 # max string length is 4095
addStaffing = toSend % 8
if addStaffing>0:
= 8 - addStaffing
applCmd = txFrm_t(frm_cnt,0,0x03,toSend,0x0100)
applCmd.payload[:len(applCmdStr)] = bytearray(applCmdStr,"ascii")
[:len(applCmdStr)]
applCmd.payload[len(applCmdStr)] = 0
clientSock.sendto(bytearray(applCmd)[:8], (UDP_IP_ADDRESS,
UDP_PORT_NO))
return readAck(clientSock)
file = open(sys.argv[1], 'rb') # *.wv
wv = bytearray(file.read())
file.close()
sHdr = str()
wvPos = wvPosSmpl = wv.find(b'{WAVEFORM-')
if wvPos != -1:
empPos = wv.find(b'{EMPTYTAG-')
if empPos != -1:
wvPos = empPos
wvPos = wv.rfind(b'}', 0, wvPos)
if wvPos != -1:
sHdr = str(wv[:wvPos + 1], 'UTF-8')
print('HDR: ' + sHdr)
samples = 0
wvPos = sHdr.find('{SAMPLES:')
if wvPos != -1:
samples = int(sHdr[wvPos+9:sHdr.find('}',wvPos)])
print(f'number of samples: {samples}')
currSmplPos = wv.find(b':#',wvPosSmpl) + 2
samples_128 = samples
smplMod = samples % 128
if smplMod>0:
smplMod = 128 - smplMod
sampl= smplMod
wv += bytearray(smplMod*4)
clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
clientSock.bind((UDP_IP_CLIENT, UDP_PORT_CLIENT));
# send Open-Session-Cmd:
ctrlFrm = txFrm_t(0,0,0x00,8,0x0100) # open session
ctrlFrm.payload[:8] = bytearray([0, 0, 0, 0, 0, 0, 0, 0]);
Using a python script for waveform data transfer