Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
test-and-measurement:analog-discovery-pro-3x50:logging-data-to-usb [2021/07/19 08:57] – [Script Overview] Álmos Veres-Vitályostest-and-measurement:analog-discovery-pro-3x50:logging-data-to-usb [2022/10/04 11:38] (current) – external edit 127.0.0.1
Line 82: Line 82:
 ===== Script Overview ===== ===== Script Overview =====
 <WRAP group> <WRAP group>
 +<WRAP group><WRAP half column>
 +Import the necessary Python packages, then define the name of the output file and the drive letter and number of the USB drive.
 +</WRAP><WRAP half column>
 +<code python># import modules
 +from ctypes import *
 +from dwfconstants import *
 +from subprocess import call
 +import sys
  
 +# parameters
 +filename = "voltages.txt"
 +drive = "sda1"</code>
 +</WRAP></WRAP>
 +
 +<WRAP group><WRAP half column>
 +Load the WaveForms SDK dynamic library, then open the device.
 +</WRAP><WRAP half column>
 +<code python># load WaveForms SDK
 +if sys.platform.startswith("win"):
 +    dwf = cdll.dwf  # on windows
 +elif sys.platform.startswith("darwin"):
 +    dwf = cdll.LoadLibrary("/Library/Frameworks/dwf.framework/dwf")
 +else:
 +    dwf = cdll.LoadLibrary("libdwf.so")
 +
 +# global variables
 +hdwf = c_int()  # device handle
 +
 +# open device
 +dwf.FDwfDeviceOpen(c_int(-1), byref(hdwf))  # open first device
 +# check for errors
 +if hdwf.value == hdwfNone.value:
 +    print("failed to open device")  # display error
 +    quit()</code>
 +</WRAP></WRAP>
 +
 +<WRAP group><WRAP half column>
 +Initialize the Oscilloscope. If you want to use a different instrument, change this part at your will.
 +
 +Mount the USB storage. If the file system is already mounted, this command will only return a message. Set the path and the name of your file.
 +</WRAP><WRAP half column>
 +<code python>try:
 +    # initialize the oscilloscope
 +    # enable the channel
 +    dwf.FDwfAnalogInChannelEnableSet(hdwf, c_int(0), c_bool(True))
 +    # set 0V offset
 +    dwf.FDwfAnalogInChannelOffsetSet(hdwf, c_int(0), c_double(0))
 +    # set the range from -5V to +5V
 +    dwf.FDwfAnalogInChannelRangeSet(hdwf, c_int(0), c_double(5))
 +    # start the oscilloscope
 +    dwf.FDwfAnalogInConfigure(hdwf, c_bool(False), c_bool(False))
 +
 +    # mount the USB strorage
 +    call(["sudo", "mount", "/dev/" + drive, "/mnt"])
 +
 +    # set file path
 +    filename = "/mnt/" + filename</code>
 +</WRAP></WRAP>
 +
 +<WRAP group><WRAP half column>
 +Load and save the oscilloscope data in a buffer, then write out the content of the buffer to the file. The file remains opened, until the script runs.
 +</WRAP><WRAP half column>
 +<code python>    # create/open the file
 +    with open(filename, "w") as f:
 +        while True:
 +            # measure voltage
 +            # load internal buffer
 +            dwf.FDwfAnalogInStatus(hdwf, False, None)
 +            voltage = c_double()    # buffer for raw values
 +            # save the internal buffer
 +            dwf.FDwfAnalogInStatusSample(hdwf, c_int(0), byref(voltage))
 +            voltage = float(voltage.value)   # get voltage values
 +
 +            # save voltage
 +            f.write("{}\n".format(voltage))</code>
 +</WRAP></WRAP>
 +
 +<WRAP group><WRAP half column>
 +Finally, exit the script on "Ctrl+C", then reset the used instruments and disconnect from the device.
 +</WRAP><WRAP half column>
 +<code python>except KeyboardInterrupt:
 +    # exit on Ctrl+C
 +    pass
 +finally:
 +    # reset and close the device
 +    dwf.FDwfAnalogInReset(hdwf)  # reset the oscilloscope
 +    dwf.FDwfDeviceClose(hdwf)   # disconnect the device</code>
 +</WRAP></WRAP>
 </WRAP> </WRAP>
 ---- ----
Line 88: Line 175:
 ===== Testing ===== ===== Testing =====
 <WRAP group> <WRAP group>
 +Start the script with the following command: 
 +<code>sudo python3 /mnt/logger.py</code> 
 +To terminate the script and to close the file, press "Ctrl+C" on the keyboard. When the script is exited, the file is saved on your USB flash drive.
 </WRAP> </WRAP>
 ---- ----