Source code for acq400_load_awg

#!/usr/bin/env python

"""
upload file to AWG for a one-shot play
data for upload is a single file
assumes that clocking has been pre-assigned.


positional arguments:
  uuts               uut

optional arguments:
  -h, --help         show this help message and exit
  --files FILES      list of files to load
"""

import sys
import socket

import acq400_hapi
from acq400_hapi import awg_data
from acq400_hapi import netclient as netclient
import argparse


def _load_awg(uut, fn, port):
    eof = False
    bn = 0
    with open(fn, "rb") as fd:
        with netclient.Netclient(uut.uut, port) as nc:
            while not eof:
                chunk = fd.read(0x100000)
                if len(chunk) == 0:
                    eof = True
                else:
                    nc.sock.send(chunk)
                    sys.stderr.write('\r{}'.format(bn))
                    bn += 1
            nc.sock.shutdown(socket.SHUT_WR)
            sys.stderr.write('\nsocket SHUT_WR, wait for DONE\n')
            while True:
                rx = nc.sock.recv(128)
                if not rx or rx.startswith(b"DONE"):
                    break
            nc.sock.close()
            sys.stderr.write("DONE\n")
        
[docs]def load_awg(args): uut = acq400_hapi.Acq400(args.uuts[0]) _load_awg(uut, args.file, 54201)
[docs]def run_main(): parser = argparse.ArgumentParser(description='acq400 load awg simplest') parser.add_argument('--file', default="", help="file to load") parser.add_argument('uuts', nargs=1, help="uut ") load_awg(parser.parse_args())
# execution starts here if __name__ == '__main__': run_main()