Search the Community

Showing results for tags 'waveforms'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • New Users Introduction
    • Announcements
  • Digilent Technical Forums
    • FPGA
    • Digilent Microcontroller Boards
    • Non-Digilent Microcontrollers
    • Add-on Boards
    • Scopes & Instruments
    • LabVIEW
    • Other
  • General Discussion
    • Project Vault
    • Learn
    • Suggestions & Feedback
    • Buy, Sell, Trade
    • Sales Questions
    • Off Topic
    • Educators
    • Technical Based Off-Topic Discussions

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Website URL







Found 90 results

  1. Hi, I recently wrote a program that runs on the AD2 to close the loop on a system I am controlling. My problem now is that I will have a person unfamiliar with coding using this. I was wondering if there were options for creating a simple GUI to control inputs into my script. Like polling from a slidebar the frequency of a sine wave, I use in the script or test windows. I am particularly looking at the StaticIO but it seems to be limited to only the digital I/O pins. If it is not available thru Waveforms Beta will the SDK be able to do something like this? Are there any previous posts (i could not find any) or examples you might have on this? Thanks, Ryne
  2. Hi, I would like to see the logging have the option to log the (Scope Image) every time the logging saves a CSV file, ie (xxxx.csv), (xxxx.jpg). This should be quite simple to add this function to logging as Export Image already exists. This would be great to quickly view images of logged data to add into reports or select a CSV file for processing. The only way to save a scope image at present is to use, File> Export> Image> SAVE. Might this be implemented in the future? Thanks
  3. TurgidWater45

    Buffer Explanation

    Hello, I'm a bit confused as to how the Waveforms manages its buffer. I'm using the Waveforms SDK (via LabVIEW) to both generate a pulse and act as a scope using the Analog Discovery Kit 2. I am generating a 50 ms, 5V pulse with a frequency of 230 kHz. This is connected to a hardware device. I then want to use the scope function to record the output form this device. I can get the scope to read, but I don't really understand why it works the way that it does. As it stands, the only way that I can consistently get a waveform is as follows (AnalogIn): AutoTimeout: 0.5 Sample Frequency: 160 kHz AcquisitionMode: Record RecordLength: 2 seconds I also have a 2.5 second wait on my analog out. If any of these settings change, my waveform will not show up. If perhaps I want a 200ms pulse, I need to change the sample frequency to 40 kHz. Attached is a screenshot of what the waveform looks like. There are two problems with this. The waveform is pushed far to the right. I want the waveform to take up the entire buffer. Second, if I'm sweeping frequencies, the waveform will show up at slightly different spots between frequencies. My ideal situation is that the ADK2 outputs a pulse, and when the pulse starts it immediately begins to record, filling the buffer after 50 ms. This buffer is emptied into an excel document, and then awaits use again. I've searched and read through the SDK reference manual but I can't seem to get a grasp on how to fix this. I feel like it's a lack of understanding of how the buffer is managed, but any help would be appreciated. Thanks EDIT: Follow-up/related question: How would these settings translate into SDK functions?
  4. Hello I am a user of Analog Discovery2 and I believe it is missing one very important (for me at leas) function. I basically want to monitor and register the communication between two devices which use UART to do so. The Protocol panel looks great but I am able to register only one of the devices at the same time. Logic panel is very unfeasible in my case because I want to register many lines of the communication (like 5 min). Is there any way I can achieve that? Maybe there is a custom script which would help in my case?
  5. attila

    Matlab Waveforms Sdk

    The MatLab DAQ toolbox support for Analog Discovery offers limited functionality, but the underlying WaveForms SDK functions can be accessed too. For manual and examples in Python and C++ see the SDK located in the default Windows installation path: - 32bit C:Program FilesDigilentWaveFormsSDK - 64bit C:Program Files (x86)DigilentWaveFormsSDK function DWFtest(); % 32 bit system %hfile = 'C:Program FilesDigilentWaveFormsSDKincdwf.h'; %64 bit system hfile = 'C:Program Files (x86)DigilentWaveFormsSDKincdwf.h'; display(['Set variable hfile: ' hfile]); if ~libisloaded('dwf') loadlibrary('dwf', hfile); end islibloaded = libisloaded('dwf'); fprintf('Check if dwf library is loaded: islibloaded = %dn',islibloaded) % This is necessary to get the character strings pBuffer = libpointer('int8Ptr',zeros(32,1)); calllib('dwf','FDwfGetVersion',pBuffer); display(['Version: ' char(pBuffer.Value')]); %Just opening and making sure the device is in a known state phdwf = libpointer('int32Ptr',0); calllib('dwf','FDwfDeviceOpen',-1,phdwf); display(['FDwfDeviceOpen returned: ' num2str(phdwf.Value)]) % Close device and unload library if phdwf.Value > 0 calllib('dwf','FDwfDeviceCloseAll'); end unloadlibrary('dwf') end
  6. attila

    SPI Sniffing with WF SDK

    Hello, I've got a question on how to sniff SPI data using Analog Discovery with the WaveForms SDK. The following example uses "sync record" which only stores samples on SPI clock or select (rising) edge. This lets you capture SPI data with an average bit rate of around 2MHz. SPI bursts of up to 40MHz are supported but the average rate needs to be lower.
  7. The EULA presented during installation of the WaveForms software indicates that only one copy of WaveForms is permitted to be installed per hardware product. How can additional WaveForms licenses be obtained? Thanks in advance! Chris
  8. Hi! My goal is to use the Analog Digital 2 in order to move a piezoelectric via stick slip motion. I want to program this into a python script so that I can move the stage one step, record data for x amount of time, move the stage one step, record data, etc. In order to do this, I want to output a specific number of sawtooth wave periods (one to two) at a certain frequency. From these posts ( ,, I have figured out how to do this through the GUI. I have also followed the example scripts and can output standing wave forms, just not pulses. So now, I am looking for some guidance in putting these together. Can you give me some suggestions, advice, or code snippets that might allow me to accomplish this? Are there any functions in the dwf module that might work? Any help is welcome and appreciated! Thanks, Harry digilentScreenCap
  9. During device opening internal chips are enabled and configured. This results in consumption increases, specially when the 100 MHz clock (PLL) is started. The needed current increases from 100mA to 500mA. In case the USB can't provide enough current the voltage drops below the minimal required for the device to operate and communication fails. In case you get “Device configuration failed (PLL 1)" or "Communication with the device failed.” error message: The device needs at least 2W/400mA from USB cable. To satisfy this: - Try to use different USB cable and computer plug. - Use the USB plug on the back of the PC, not the one on the front panel. - Use short cable, do not use long cable or cable extender. - Use powered USB-hub, avoid un-powered hub. - Use USB-Y cable to load power from two plugs. Device not detected by WaveForms: Open Windows Device Manager then connect the device and wait up to one minute for a device to appear: - USB Serial Converter, with warning - Connect the device directly to the computer's USB plug without using external hub. - Restart the computer. - Reinstall WaveForms, including the Adept Runtime section. - USB Serial Converter, without warning - Restart the computer. - Reinstall WaveForms, including the Adept Runtime section. - Other application might have erased the USB controller EEPROM (FT_Prog, programming cable drivers...) Use the "My device is not listed" button in WaveForms application Device Manager to reprogram the EEPROM. - Unknown Device Check the Hardware IDs under device Properties, Details tab - USBVID_0403&PID_6014 The USB driver is not installed. - Restart the computer. - Reinstall WaveForms, including the Adept Runtime section. - USBVID_0000&PID_0000 Device not identified or malfunction. See "Nothing shows up". - Nothing shows up: - Connect the device directly to the computer's USB plug without using external hub. - Try to use different USB cable and computer plug. The device or its plug might be damaged.
  10. Hi, I am working on a project and I want to incorporate the Discovery for Data Collection. I was wondering is there a way to automate the collection of data using analog discovery so I don't have to launch Waveforms each time to collect data? My project will only include the Analog Discovery as another puzzle piece, there are other boards and chips that will be connected to the discovery for data collection. Once I collect data I would want to pass it on for processing and interpretation. I am hoping to use Python to control the whole system if possible and make most of the processes automated. Eventually I would want to display results to a user in a graphical form (hence the need for Python)
  11. Hello, I may have a bug to report. It appears that the latest version of Waveforms 3 on Windows 7 and 8 does not support the python hooks and API. I have rolled my version back to the previous version and it appears to work fine. We just wanted to make sure to bring this to light as it hopefully will not continue through future versions of Waveforms. Thanks, Dylan
  12. Hi everyone, I need to write a script to control the UART Protocol so that I can simulate a serial conversation. So far, I've got just this code: var MyString = "@T00."; function Serial_Send(){ print("Automated Serial Writer"); for(;;) { // Loop at 0.1 sec rate wait(0.1); Protocol.UART.Send(MyString,false); } } if(!('Protocol' in this)) { throw("Please open Protocol instrument"); } Serial_Send(); The configuration of my serial is attached Of course, the endless loop didn't allow me to stop the Script or even abort it. But, it was sending data correctly. To stop the script I had to kill waveforms IDE (v3.7.9). How can I improve it so that I can stop the program anytime I want? Will I have to set a trigger for that using a StaticIO button? Thanks, João Paulo
  13. attila

    WaveForms beta download

    3.7.22 digilent.waveforms_v3.7.22_64bit.exe digilent.waveforms_v3.7.22_32bit.exe digilent.waveforms_v3.7.22.dmg digilent.waveforms_3.7.22_amd64.deb digilent.waveforms_3.7.22_i386.deb digilent.waveforms_3.7.22.x86_64.rpm digilent.waveforms_3.7.22.i686.rpm Added - Scope/Logic View/Logging picture format - Script: - Export function for instruments - access to Protocol/UART/RX using Receiver, Receive and ReceiveArray functions, SendArray Fixed - Scope edge trigger position for all devices, when only one or two samples are above the threshold - other minor fixes 3.7.21 digilent.waveforms_v3.7.21_64bit.exe digilent.waveforms_v3.7.21_32bit.exe digilent.waveforms_3.7.21_amd64.deb digilent.waveforms_3.7.21_i386.deb digilent.waveforms_3.7.21.x86_64.rpm digilent.waveforms_3.7.21.i686.rpm Added - Wavegen dynamic configuration, adjustments without restarting the generator - SDK support for CAN bus TX, RX - more detail in Spectrum, Network and Impedance Analyzer export comments - import data orientation option Fixed - Network Analyzer Meter export and copy - Data Logger quick measurements - other fixes and optimizations 3.7.19 digilent.waveforms_v3.7.19-2_64bit.exe digilent.waveforms_v3.7.19-2_32bit.exe digilent.waveforms_v3.7.19.dmg digilent.waveforms_3.7.19-2_amd64.deb digilent.waveforms_3.7.19-2_i386.deb digilent.waveforms_3.7.19-2.x86_64.rpm digilent.waveforms_3.7.19-2.i686.rpm Added: - Logic I2S Show channel option - SDK functions for UART, SPI, I2C master and UART receiver Changed: - OS-X rollback to FTDI driver 1.2.2 Fixed: - Impedance Analyzer: save/load of views positions - other fixes and optimizations 3.7.15 digilent.waveforms_v3.7.15_64bit.exe digilent.waveforms_v3.7.15_32bit.exe Added: - Logic Analyzer: position (Nth word) option for SPI trigger on value - Impedance: Nyquist plot; settle time, minimum periods options - Wavegen, Network/Impedance Analyzer: external Amplification option - Tabbed/Docking window switching from main window Changed: - lower frequency limit for Scope, AWG, Network, Impedance Fixed: - 10ns delay in Logic Analyzer Sync and Protocol interface - Sound Card device CPU usage 3.7.14 digilent.waveforms_v3.7.14_64bit.exe digilent.waveforms_v3.7.14_32bit.exe Added: - Protocol I2C ACK/NAK last read byte option Changed: - Windows XP, Vista compatible FTDI driver in 32bit installer 3.7.13 digilent.waveforms_v3.7.13_64bit.exe digilent.waveforms_v3.7.13_32bit.exe digilent.waveforms_v3.7.13.dmg digilent.waveforms_3.7.13_amd64.deb digilent.waveforms_3.7.13_i386.deb digilent.waveforms_3.7.13.x86_64.rpm digilent.waveforms_3.7.13.i686.rpm Added: - Sound Card device of the computer can be used as Scope and Wavegen - Scope sampling clock for Electronics Explorer - Logic Analyzer data compression for recording, for Electronics Explorer - Scope and Wavegen support for 4th device configuration of Analog Discovery 1 & 2 - Scope Logging Repeat option - Scope Audio view: Stereo, Tempo options - MacOS option for application menu 3.7.12-2 digilent.waveforms_v3.7.12-2_64bit.exe Fixed: - Analog Discovery 2 configuration file descriptions 3.7.12 digilent.waveforms_v3.7.12_64bit.exe digilent.waveforms_v3.7.12_32bit.exe Added: - Scope sampling clock under time options, for Analog Discovery 1 & 2. The trigger IOs can be used as sample clock with delay and edge options. - Logic Analyzer data compression for recording, for Analog Discovery 1 & 2 Changed: - Windows installer: - embedded prerequisites: Windows Installer, Visual C++ Redistributable 9 32/64bit, 12 64bit - split installer for 32bit and 64bit WF applications, but the included WF runtime for custom applications support both architectures Fixed: - Logic Analyzer UART frame error threshold 3.7.10 digilent.waveforms_v3.7.10.exe Added: - Spectrum Analyzer Markers Fixed: - SDK Electronics Explorer enumeration - Scope Math channel unit presets 3.7.9 digilent.waveforms_v3.7.9.exe Fixing: - Logic Analyzer Event view double click for signals 3.7.8 digilent.waveforms_v3.7.8.exe Changed: - Impedance Analyzer: - view names - solid line for magnitude Fixed: - Impedance Analyzer admittance |Y| value 3.7.7 digilent.waveforms_v3.7.7.exe Added: - Scope and Logic trigger detector for trigger source Fixed: - warning message when connecting to EExplorer - Patterns trigger on Digital Discovery
  14. Can someone please point me to a manual for the Protocol section of the Waveforms software? I would like to send an I2C command over a bus but I am getting an I2C bus error. Verify the signal pull-ups error. I do have the appropriate pullup resistor however. Also, it's not clear how the interface works. A manual would be useful. Thanks, Dave
  15. Hello, I have found this topic with script for counting edges of digital signals and I wonder if it's possible to modify it somehow (or use completely different approach) to read quadrature encoder signals with Analog Discovery? Most important thing, I think, is that I have to compare signals state at current event (i.e. I have "1" on signal A and need to know what is the state of B signal in that particular moment) and be able to compare it with previous state (event) to decide if I should increment or decrement my counter. And it should be triggered with both edges but I assume that trigger options on DIO line decides when events are generated. Is it possible to capture and count edges without sample count limit? I mean something like hardware triggering on digital inputs instead of starting on first trigger and sampling defined number of samples with defined frequency (Stream mode). At the moment it looks more like signals recording and post-processing (offline) and I wonder if it is possible online to execute encoder script live on each trigger? It's not a must but would be nice And one more thing - I have downgraded my WaveForms to version from mentioned topic because in newer version there is no Stream mode. Was it renamed or replaced by something better?
  16. attila

    WaveForms 3.6.8 release

    Dear All, The new software version can be downloaded from the following page: The changelog is available here: See this blog for more details: Please let us know if you have any observation. Thank you, Attila
  17. Hello all. New to WaveForms, so excuse me if this is too easy. I'd like to capture an analog channel, and two digital ones - where information is encoded into the width of the pulses. Sure enough, I can do this. But of the digital, one is PWM, which I'd like to manipulate into the corresponding stream of percentages (or 8-bit values, does not matter); the other one encodes the duration of something - therefore I'd like to measure their positive duration, as in a timer/counter... Can this be done in WaveForms with the AD2?
  18. I would like to use waveform to log the digital output of 8 channels over a period of time. I currently manually record the output events for the 8 channels, but I would like to have the PC take a 100 ms measurement every 10 minutes and export this data to a new file every 10 minutes. Essentially, I would like to know if the waveforms software can automated run a measurement and export it to a tdms file every 10 minutes over a few days. Thanks
  19. In due course, it would be nice to have Mozilla Quantum compatibility. Just thought I would throw this out there....🤔 Mike
  20. Hello - trying to install waveforms on Ubuntu. Downloaded the .deb package but it has a myriad of conflicts and dependencies. Any help around? Thanks,
  21. """ DWF Python Example Author: Digilent, Inc. Revision: 2015/02/05 Requires: Python 2.7 Start synchronized the AWG outputs of multiple Analog Discovery devices. Connect the Trigger-1 pin of each device together. """ from ctypes import * import time import sys if sys.platform.startswith("win"): dwf = cdll.dwf elif sys.platform.startswith("darwin"): dwf = cdll.LoadLibrary("libdwf.dylib") else: dwf = cdll.LoadLibrary("") #print DWF version version = create_string_buffer(16) dwf.FDwfGetVersion(version) print "DWF Version: "+version.value cDevice = c_int() dwf.FDwfEnum(c_int(2), byref(cDevice)) # 2 = enumfilterDiscovery print "Found "+str(cDevice.value)+" devices" cChannel = 2 cOutput = cDevice.value*cChannel hdwf = c_int() #open device for iDevice in range (0, cDevice.value): dwf.FDwfDeviceOpen(c_int(iDevice), byref(hdwf)) if hdwf.value == 0: print "failed to open" quit() for iChannel in range (0, cChannel): print "Configure "+str(iDevice+1)+"/"+str(iChannel+1) # enable channel dwf.FDwfAnalogOutNodeEnableSet(hdwf, c_int(iChannel), c_int(0), c_int(True)) # 0 = AnalogOutNodeCarrier # configure dwf.FDwfAnalogOutNodeFunctionSet(hdwf, c_int(iChannel), c_int(0), c_int(1)) # 1 = funcSine dwf.FDwfAnalogOutNodeFrequencySet(hdwf, c_int(iChannel), c_int(0), c_double(1000.0)) dwf.FDwfAnalogOutNodeAmplitudeSet(hdwf, c_int(iChannel), c_int(0), c_double(1.0)) # set trigger source to external trigger 1 dwf.FDwfAnalogOutTriggerSourceSet(hdwf, c_int(iChannel), c_byte(11)); # 11 = trigsrcExternal1 #set different phase iOutput = iDevice*cChannel+iChannel dwf.FDwfAnalogOutNodePhaseSet(hdwf, c_int(iChannel), c_int(0), c_double(360.0*iOutput/cOutput)) # start the channel, this will wait for the trigger dwf.FDwfAnalogOutConfigure(hdwf, c_int(iChannel), c_bool(True)) # configure Trigger-1 pin to output the triggerPC signal for the last device dwf.FDwfDeviceTriggerSet(hdwf, c_int(0), c_byte(1)) # 1 = trigsrcPC # after open, before the first run wait a bit for the offsets to stabilize time.sleep(5) print "Pulse trigger to start generation..." dwf.FDwfDeviceTriggerPC(hdwf); time.sleep(60) print "done." dwf.FDwfDeviceCloseAll()
  22. Hello, I'm starting to work with custom scripts on my discovery 2 (with oscilloscope extension + probes). I'm trying to setup a measurement environment using the sample script. I have a power supply with output voltage at 4V. When I run the scope at WaveForms I get 4V reading, however, when I run the acquisition script I get 2.72V as average voltage. I also tried with the script and also get 2.73V. I wonder why such different results. Pictures bellow:
  23. jpnbino

    Save an acquisition

    Hi all, I'm trying to save data from an acquisition but I'm not getting it. I mean, I want to document my tests and measurements. So, I wish to save the data in a way that I can later open it in WaveForms and navigate the capture. For now, I have only image but this does not help much. Does anyone know if WaveForms supports it? Thank you, João Paulo
  24. My Analog Discovery 2 was very sensitive to movement, with Waveforms reporting the connection lost at the slightest bump. Merely manipulating the flywire leads was enough to cause a disconnect. I determined that the plug on the USB cable that came with the AD2 was not able to seat completely into the AD2's USB jack. While looking through the top of the AD2's enclosure at the USB jack, I observed that the two metal "spring fingers" atop the USB plug were not inserting deeply enough into the jack to permit them to raise and latch into their corresponding holes in the top of the jack. After disassembling the AD2's enclosure, I used some (mechanical) files and an X-Acto knife to enlarge the enclosure's USB port hole so the entire USB plug can pass through (photo attached). With the enclosure assembled, the USB plug now seats completely into the AD2's USB jack. I can see that the two metal "spring fingers" advance into their intended positions and raise up into the jack's holes. Waveforms has yet to report a disconnect during my experiments with wiggling the USB cable.
  25. Hello, For one of my school projects we were asked to find the minimum signal that will give a signal to noise ratio of 10 dB. How would I go about finding this? I know that the Spectrum Analyzer for the Analog Discovery would be used but I am unsure of how to find the signal to noise ratio of a signal. Thank you, cjobi247