{"id":25283,"date":"2018-08-13T10:16:44","date_gmt":"2018-08-13T17:16:44","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=25283"},"modified":"2021-06-09T14:07:41","modified_gmt":"2021-06-09T21:07:41","slug":"get-the-most-out-of-waveforms-with-the-software-development-kit","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/get-the-most-out-of-waveforms-with-the-software-development-kit\/","title":{"rendered":"Get the Most Out of WaveForms with the Software Development Kit"},"content":{"rendered":"<p>We talk a lot about the built-in\u00a0functionality of <a href=\"https:\/\/digilent.com\/shop\/waveforms-previously-waveforms-2015\/\">WaveForms<\/a> and all of the instruments it enables. From the Oscilloscope to the Logic Analyzer, to the Spectrum Analyzer and Impedance Analyzer, it has got a lot of <a href=\"https:\/\/digilent.com\/reference\/software\/waveforms\/waveforms-3\/start\">built-in functionality.<\/a><\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-Help-tab-which-highlights-the-functionality.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25295\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-Help-tab-which-highlights-the-functionality-600x425.png\" alt=\"\" width=\"600\" height=\"425\" data-wp-pid=\"25295\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-Help-tab-which-highlights-the-functionality-600x425.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-Help-tab-which-highlights-the-functionality-768x544.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-Help-tab-which-highlights-the-functionality-800x567.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-Help-tab-which-highlights-the-functionality.png 910w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>But were you aware that it&#8217;s also programmable and customizable? Over the next few weeks, we&#8217;re going to be talking a lot about the script editor and the WaveForms Software Development Kit available with <a href=\"https:\/\/digilent.com\/shop\/waveforms-previously-waveforms-2015\/\">WaveForms<\/a>. The script editor is in-application, and the main User Interface(UI) can be accessed just like any of the other instruments, as a tab.<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25288\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-600x422.png\" alt=\"\" width=\"600\" height=\"422\" data-wp-pid=\"25288\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-600x422.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-768x541.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-800x563.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor.png 912w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Here you can write scripts that use alone or in conjunction with the other 12 instruments. You can find example scripts in the example menu, and of course, you can always ask for help on the <a href=\"https:\/\/forum.digilent.com\/\">Digilent forum.<\/a><\/p>\n<p>There is also script functionality built into the other instruments. For example, the custom tabs in the Protocol Analyzer. We&#8217;ll talk about all the places you can find script editing later this month.<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-in-protocol-analyzer.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25287\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-in-protocol-analyzer-600x424.png\" alt=\"\" width=\"600\" height=\"424\" data-wp-pid=\"25287\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-in-protocol-analyzer-600x424.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-in-protocol-analyzer-768x543.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-in-protocol-analyzer-800x566.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/script-editor-in-protocol-analyzer.png 908w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Spoiler Alert: There are A LOT!<\/p>\n<p>Now back to the WaveForms Software Development Kit. As an add-on, when you download <a href=\"https:\/\/digilent.com\/shop\/waveforms-previously-waveforms-2015\/\">WaveForms<\/a> you can also download WaveForms SDK. WaveForms SDK is an API that allows you to build custom applications in WaveForms. Basically, it allows you to write your own program in C++ or Python that calls the various functions of the instruments in WaveForms.<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-SDK.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25297\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-SDK-600x422.png\" alt=\"\" width=\"600\" height=\"422\" data-wp-pid=\"25297\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-SDK-600x422.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-SDK-768x540.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-SDK-800x563.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/Waveforms-SDK.png 913w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>There&#8217;s even a<a href=\"https:\/\/github.com\/knowm\/waveforms4j\"> wrapper for WaveForms SDK that allows you to use Java,<\/a>\u00a0which was written by a community member!<\/p>\n<p><strong>If you are in WaveForms you can click the &#8220;SDK&#8221; link in the screenshot below to open the directory to WaveForms SDK, or you can find it in the location WaveForms was installed.<\/strong> You pick this during the installation process.<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/link.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-25286\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/link.png\" alt=\"\" width=\"367\" height=\"155\" data-wp-pid=\"25286\" \/><\/a><\/p>\n<p>Included in WaveForms SDK are a detailed reference manual and a bunch of examples. The WaveForms SDK <a href=\"https:\/\/digilent.com\/reference\/_media\/waveforms_sdk_reference_manual.pdf\">reference manual<\/a> has everything you need to get started using WaveForms SDK.<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/WaveForms-SDK-ref-man.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25296\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/WaveForms-SDK-ref-man-600x504.png\" alt=\"\" width=\"600\" height=\"504\" data-wp-pid=\"25296\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/WaveForms-SDK-ref-man-600x504.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/WaveForms-SDK-ref-man-768x645.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/WaveForms-SDK-ref-man-800x672.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/WaveForms-SDK-ref-man.png 883w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>This includes a description of the API structure and summary of the API usage steps:<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-1-Description-of-API.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25289\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-1-Description-of-API-600x403.png\" alt=\"\" width=\"600\" height=\"403\" data-wp-pid=\"25289\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-1-Description-of-API-600x403.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-1-Description-of-API-768x516.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-1-Description-of-API-800x537.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-1-Description-of-API.png 834w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>It also includes an overview of the examples that are included:<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-2-examples-in-python-and-C-Oscilloscope.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25290\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-2-examples-in-python-and-C-Oscilloscope-600x341.png\" alt=\"\" width=\"600\" height=\"341\" data-wp-pid=\"25290\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-2-examples-in-python-and-C-Oscilloscope-600x341.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-2-examples-in-python-and-C-Oscilloscope-768x437.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-2-examples-in-python-and-C-Oscilloscope-800x455.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-2-examples-in-python-and-C-Oscilloscope.png 874w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>As well as detailed information on the system, device enumeration, and device control:<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-3-device-enumeration.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25291\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-3-device-enumeration-600x364.png\" alt=\"\" width=\"600\" height=\"364\" data-wp-pid=\"25291\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-3-device-enumeration-600x364.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-3-device-enumeration-768x465.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-3-device-enumeration-800x485.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-3-device-enumeration.png 878w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>It also includes instructions for use of the Analog In( Oscilloscope), Analog Out (Arbitrary Waveform Generator), Analog I\/O (voltmeter, power supplies, etc), Digital I\/O, Digital In (Logic Analyzer), and Digital Out (Pattern Generator):<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-4-OSC-instructions.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25292\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-4-OSC-instructions-600x544.png\" alt=\"\" width=\"600\" height=\"544\" data-wp-pid=\"25292\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-4-OSC-instructions-600x544.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-4-OSC-instructions-768x697.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-4-OSC-instructions-800x726.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-4-OSC-instructions.png 817w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>As well as specific device information:<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-5-analog-discovery.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25293\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-5-analog-discovery-600x314.png\" alt=\"\" width=\"600\" height=\"314\" data-wp-pid=\"25293\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-5-analog-discovery-600x314.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-5-analog-discovery-768x401.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-5-analog-discovery-351x185.png 351w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-5-analog-discovery-800x418.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-5-analog-discovery.png 880w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>And lastly, any functions that might have been replaced and depreciated\u00a0during the update process:<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-6-replaced-functions.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-25294\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-6-replaced-functions-600x413.png\" alt=\"\" width=\"600\" height=\"413\" data-wp-pid=\"25294\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-6-replaced-functions-600x413.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-6-replaced-functions-768x528.png 768w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-6-replaced-functions-800x550.png 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-6-replaced-functions.png 878w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>For questions on WaveForms SDK, post on the <a href=\"http:\/\/Forum.blog.digilentinc.com\">Digilent Forum<\/a>, or if you&#8217;ve used WaveForms SDK and have an example you&#8217;d like to share, let us know by commenting below!<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-25283 jlk' data-task='like' data-post_id='25283' data-nonce='202d78e1e0' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-25283 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-25283 jlk' data-task='unlike' data-post_id='25283' data-nonce='202d78e1e0' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-25283 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-25283 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Get familiar with the WaveForms SDK and start making the most out of the software!<\/p>\n","protected":false},"author":18,"featured_media":25298,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4323],"tags":[1736,452],"ppma_author":[4466],"class_list":["post-25283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-analog-discovery-2","tag-waveforms"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/08\/SDK-python.png","authors":[{"term_id":4466,"user_id":18,"is_guest":0,"slug":"kaitlyn","display_name":"Kaitlyn Franz","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9276021eaa44781ce19f364cfca46ada25e1500769cf4803a095a5bae83c912a?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/25283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=25283"}],"version-history":[{"count":0,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/25283\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/25298"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=25283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=25283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=25283"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=25283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}