<?xml version="1.0"?>
<rss version="2.0"><channel><title>Code In-Development Latest Topics</title><link>https://lavag.org/forum/38-code-in-development/</link><description>Code In-Development Latest Topics</description><language>en</language><item><title>Labview Python Bridge</title><link>https://lavag.org/topic/59205-labview-python-bridge/</link><description><![CDATA[<p>
	Hi everyone,
</p>

<p>
	Just want to share our open source project "Labview Python Bridge".
</p>

<p>
	Connect labview apps with python apps in realtime with multi-processing data queues.
</p>

<p>
	<a href="https://github.com/jmor2000/labview_python_bridge" rel="external nofollow">https://github.com/jmor2000/labview_python_bridge</a>
</p>

<p>
	If anyone has any questions or suggestions for new developments / features, let me know.
</p>

<p>
	Cheers
</p>

<p>
	Jeff
</p>
]]></description><guid isPermaLink="false">59205</guid><pubDate>Tue, 31 Mar 2026 09:43:52 +0000</pubDate></item><item><title>Vector Boolean Creator</title><link>https://lavag.org/topic/20145-vector-boolean-creator/</link><description><![CDATA[<p>
	<span style="color:#000000;font-size:medium;">A little while ago I<span> </span></span><a href="https://lavag.org/topic/20108-vector-scaled-booleans-from-svg/" rel="" style="font-size:medium;">posted some code</a><span style="color:#000000;font-size:medium;"><span> </span>on how to create boolean controls with images that scale well because the images are vector based and can scale up or down better than a static image like a PNG.  After making that I made a utility that allows for selecting an image, and a control template and it creates the control.  I showed this off to<span> </span></span><a href="http://blog.jki.net/author/danielle-jobe" rel="external nofollow" style="font-size:medium;">Danielle</a><span style="color:#000000;font-size:medium;"><span> </span></span><a href="http://blog.jki.net/labview/creating-a-hamburger-menu-in-labview" rel="external nofollow" style="font-size:medium;">Hamburger</a><span style="color:#000000;font-size:medium;"><span> </span>and she encouraged me to clean it up and post it to the community.  I'm still putting this in the In Development section just because there are several external tools needed that working around would be ideal if this were to be finished but for now it works and I use it often.</span>
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="12375" href="https://lavag.org/uploads/monthly_2017_05/5929e284e4eb2_VectorBooleanControlCreator.png.58b2a7cadc629362f0372de961e199f9.png" rel=""><img alt="Vector Boolean Control Creator.png" class="ipsImage ipsImage_thumbnailed" data-fileid="12375" src="https://lavag.org/uploads/monthly_2017_05/5929e284e4eb2_VectorBooleanControlCreator.png.58b2a7cadc629362f0372de961e199f9.png"></a>
</p>

<p style="color:#000000;font-size:medium;">
	So it works like you'd think.  There is a library of vector images you select from, pick the one you want, then pick the Control Type (which is a folder of CTLs), then click create and it creates the control setting the decal button, VI description (adding License text if needed) and sets the icon editor icon.
</p>

<p style="color:#000000;font-size:medium;">
	<strong>Dependencies</strong>
</p>

<p style="color:#000000;font-size:medium;">
	If you just run the Vector Boolean Control Creator you'll need OpenG Time, OpenG File, and the JKI State Machine toolkit installed in LabVIEW 2015 or newer.  The included libraries will work without anything else as long as you are in Windows (more on that later).  If you want to include your own controls there are a few more steps and I left a text file explaining that in the Template Controls folder, but I included several already.  If you want to add your own images I also left instructions in the Libraries folder.  I wrote a VI that can convert from SVGs to the needed PNG and EMF files as long as you download inkscape (again instruction text files included).  But inkscape is only a dependency if you want to use that utility to add your own libraries which are in SVG.
</p>

<p style="color:#000000;font-size:medium;">
	<strong>Demo</strong>
</p>

<p style="color:#000000;font-size:medium;">
	For good measure I made a<span> </span><a href="https://www.screencast.com/t/RYcs1nTBU" rel="external nofollow">Jing video</a> showing how it works.
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="true" frameborder="0" height="344" src="https://www.youtube.com/embed/zBp7xIZCi-Y?feature=oembed" width="459"></iframe>
	</div>
</div>

<p style="color:#000000;font-size:medium;">
	<strong>Windows Only...</strong>
</p>

<p style="color:#000000;font-size:medium;">
	So the Windows only part is an interesting one.  I started with my UI being just a single 2D picture control and as you type your search in the top, it would go and open each image that matched the result, shift them into rows and columns, detect the number of columns shown, then detect and show mouse selection, and all the other stuff that would be needed.  To say the least it was slow.  I tried several ways to improve it, but in the end it was slow and I couldn't come up with a solution I liked.  I could have added a search button but I really like the live search of typing it in and seeing it update as you type just like the icon editor glyphs do.
</p>

<p style="color:#000000;font-size:medium;">
	So for a first release I went with the cheap and hacky solution and that was to leverage some<a href="https://forums.ni.com/t5/Example-Program-Drafts/Windows-Explorer-in-your-front-panel/ta-p/3492301" rel="external nofollow"><span> </span>.Net to embed a Windows Explorer<span> </span></a>window into my front panel, which is just the search results of a folder on disk.  This now means you see the PNG images on the front panel, but it will only use that to show the UI to you, but then use the vector based EMF file when creating the control.
</p>

<p style="color:#000000;font-size:medium;">
	Doing the search was a bit weird too since I couldn't figure out how invoke a search with the Explorer .Net so instead I wrote to a temp location a saved search that is XML, which I tell the UI to navigate to which then shows the search results.
</p>

<p style="color:#000000;font-size:medium;">
	Oh and there is some .Net GDI resize going on so the PNG image is used as icon editor icon for the control but dependency could likely be removed with some G work.
</p>

<p style="color:#000000;font-size:medium;">
	Anyway hope people find this useful.
</p>

<p>
	<a class="ipsAttachLink" data-fileid="12376" href="https://lavag.org/applications/core/interface/file/attachment.php?id=12376" rel="">Vector Boolean Creator.zip</a>
</p>
]]></description><guid isPermaLink="false">20145</guid><pubDate>Sat, 27 May 2017 21:01:02 +0000</pubDate></item><item><title>My ZLIB Deflate and Compression in G</title><link>https://lavag.org/topic/59180-my-zlib-deflate-and-compression-in-g/</link><description><![CDATA[<p>
	So a couple of years ago I was reading about the ZLIB documentation on compression and how it works.  It was an interesting <a href="https://jnior.com/deflate-compression-algorithm/" rel="external nofollow">blog post</a> going into how it works, and what compression algorithms like zip really do.  This is using the LZ77 and Huffman Tables. It was very education and I thought it might be fun to try to write some of it in G.  The deflate function in ZLIB is very well understood from an external code call and so the only real ever so slight place that it made sense in my head was to use it on LabVIEW RT.  The wonderful OpenG Zip package has support for Linux RT in version 4.2.0b1 as <a href="https://lavag.org/topic/21142-openg-zip-42/#findComment-128922" rel="">posted here</a>. For now this is the version I will be sticking with because of the RT support.
</p>

<p>
	Still I went on my little journey trying to make my own in pure LabVIEW to see what I could do.  My first attempt failed immensely and I did not have the knowledge, to understand what was wrong, or how to debug it.  As a test of AI progression I decided to dig up this old code and start asking AI about what I could do to improve my code, and to finally have it working properly.  Well over the holiday break Google Gemini delivered. It was very helpful for the first 90% or so. It was great having a dialog with back and forth asking about edge cases, and how things are handled.  It gave examples and knew what the next steps were.  Admittedly it is a somewhat academic problem, and so maybe that's why the AI did so well.  And I did still reference some of the other content online.  The last 10% were a bit of a pain. The AI hallucinated several times giving wrong information, or analyzed my byte streams incorrectly.  But this did help me understand it even more since I had to debug it.
</p>

<p>
	So attached is my first go at it in 2022 Q3.  It requires some packages from VIPM.IO. <a href="https://www.vipm.io/package/hooovahh_image_manipulation/" rel="external nofollow">Image Manipulation</a>, for making some debug tree drawings which is actually disabled at the moment.  And the new version of my <a href="https://www.vipm.io/package/hooovahh_array_vims/" rel="external nofollow">Array</a> package 3.1.3.23.
</p>

<p>
	So how is performance?  Well I only have the deflate function, and it only is on the dynamic table, which only gets called if there is some amount of data around 1K and larger.  I tested it with random stuff with lots of repetition and my 700k string took about 100ms to process while the OpenG method took about 2ms.  Compression was similar but OpenG was about 5% smaller too.  It was a lot of fun, I learned a lot, and will probably apply things I learned, but realistically I will stick with the OpenG for real work.  If there are improvements to make, the largest time sink is in detecting the patterns. It is a 32k sliding window and I'm unsure of what techniques can be used to make it faster.
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=22670&amp;key=4a13724bd5d04cb1d359150fae0f2ebf" data-fileExt='zip' data-fileid='22670' data-filekey='4a13724bd5d04cb1d359150fae0f2ebf'>ZLIB G Compression.zip</a></p>]]></description><guid isPermaLink="false">59180</guid><pubDate>Thu, 08 Jan 2026 21:37:11 +0000</pubDate></item><item><title>I need to export files to excel with some conditions.</title><link>https://lavag.org/topic/59084-i-need-to-export-files-to-excel-with-some-conditions/</link><description><![CDATA[<pre dir="ltr" style="background-color:#f8f9fa;border:none;color:#1f1f1f;font-size:28px;padding:2px 0.14em 2px 0px;text-align:left;"><span lang="en" xml:lang="en">I have the table exported to Excel, but I've been encountering some difficulties.

01 - When I start a pump, the Excel recording starts, but if I stop and start the pump again in a few minutes, it ends up recording in the file itself, but it doesn't overwrite.

02. I need to start the pump OR press another button to start the report, and when I click stop recording, it doesn't turn off the pump, it just stops recording the report.

I've been encountering these difficulties with my program; I need help.

No mundo perfeito eu queria partir a bomba OU BT_IniciarRelatorio e pararRelatorio.

E ao clicar em IniciarRelatorio OU PartirBomba, ele automaticamente criar um outro arquivo excel e alimentar com as variaveis.





</span><span> </span></pre>

<p><a href="https://lavag.org/uploads/monthly_2025_07/image.png.9407cdf983a89668acb2fc9ec2de23e7.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="22536" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2025_07/image.png.9407cdf983a89668acb2fc9ec2de23e7.png" data-ratio="67.79" width="1124" class="ipsImage ipsImage_thumbnailed" alt="image.png"></a></p>
<p><a href="https://lavag.org/uploads/monthly_2025_07/image.png.6d04772a67dcdd820e8d6404e7d1218f.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="22537" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2025_07/image.png.6d04772a67dcdd820e8d6404e7d1218f.png" data-ratio="67.79" width="1124" class="ipsImage ipsImage_thumbnailed" alt="image.png"></a></p>]]></description><guid isPermaLink="false">59084</guid><pubDate>Sat, 12 Jul 2025 04:20:16 +0000</pubDate></item><item><title>Deep Learning toolkit beta test is now</title><link>https://lavag.org/topic/53599-deep-learning-toolkit-beta-test-is-now/</link><description><![CDATA[<p style="background-color:#ffffff;color:#333333;font-size:16px;padding:0px;text-align:left;">
	<a href="https://youtu.be/kJU0JKA_h0c?si=YhlNTvPmrHBVPFIl" rel="external nofollow"><img class="ipsImage ipsImage_thumbnailed" data-fileid="22297" data-ratio="47.40" width="941" alt="Betatest.png.7b10fe19f8f0f1a3d61191cb741d587d.png" data-src="https://lavag.org/uploads/monthly_2025_01/Betatest.png.7b10fe19f8f0f1a3d61191cb741d587d.png" src="https://lavag.org/applications/core/interface/js/spacer.png" /></a><br />
	<br />
	<span>We are still looking for beta testers to join the ongoing testing phase of SOTA, our unified development environment for deep learning in LabVIEW. Now in its 36th version, SOTA is designed for developers interested in exploring deep learning using graphical programming. If you're passionate about innovation and eager to shape the future of graphical deep learning, we would love to hear from you!</span>
</p>

<p style="background-color:#ffffff;color:#333333;font-size:16px;padding:0px;text-align:left;">
	<span><span><span class="ipsEmoji">🚀</span> </span>𝐉𝐨𝐢𝐧 𝐭𝐡𝐞 𝐋𝐚𝐛𝐕𝐈𝐄𝐖 𝐒𝐎𝐓𝐀 𝐁𝐞𝐭𝐚 𝐓𝐞𝐬𝐭𝐞𝐫 𝐏𝐫𝐨𝐠𝐫𝐚𝐦 𝐚𝐧𝐝 𝐒𝐡𝐚𝐩𝐞 𝐭𝐡𝐞 𝐅𝐮𝐭𝐮𝐫𝐞 𝐨𝐟 𝐀𝐈 𝐃𝐞𝐯𝐞𝐥𝐨𝐩𝐦𝐞𝐧𝐭!<br />
	Are you passionate about artificial intelligence? Do you want to be part of a groundbreaking journey to revolutionize AI workflows? SOTA, the unified AI development platform, is looking for beta testers to explore its latest capabilities and provide valuable feedback.<br />
	<br />
	𝐖𝐡𝐲 𝐉𝐨𝐢𝐧 𝐭𝐡𝐞 𝐒𝐎𝐓𝐀 𝐁𝐞𝐭𝐚 𝐏𝐫𝐨𝐠𝐫𝐚𝐦?<br />
	Be the First to Explore: Get early access to the 64th version of SOTA, featuring powerful tools like the Deep Learning Toolkit and Computer Vision Toolkit.<br />
	Collaborate and Innovate: Share your insights and ideas to help us refine and improve the platform.<br />
	Experience Unmatched Simplicity: Discover how SOTA’s graphical programming language, ONNX interoperability, and optimized runtime simplify complex AI workflows.<br />
	<br />
	<span><span class="ipsEmoji">⭐</span> </span>𝐖𝐡𝐚𝐭’𝐬 𝐢𝐧 𝐢𝐭 𝐟𝐨𝐫 𝐘𝐨𝐮?<br />
	𝐄𝐱𝐜𝐥𝐮𝐬𝐢𝐯𝐞 𝐀𝐜𝐜𝐞𝐬𝐬: Be part of an exclusive group shaping the next generation of AI tools.<br />
	𝐄𝐚𝐫𝐥𝐲 𝐈𝐧𝐧𝐨𝐯𝐚𝐭𝐢𝐨𝐧𝐬: Test cutting-edge features before they’re released to the public.<br />
	𝐃𝐢𝐫𝐞𝐜𝐭 𝐈𝐦𝐩𝐚𝐜𝐭: See your feedback implemented as part of SOTA’s evolution.<br />
	<br />
	<span class="ipsEmoji">💡</span>𝐖𝐡𝐨 𝐂𝐚𝐧 𝐀𝐩𝐩𝐥𝐲?<br />
	Whether you're an engineer, researcher, or AI enthusiast, your voice matters. If you're curious, innovative, and ready to explore, we want you on board!<br />
	<br />
	<span class="ipsEmoji">👉</span>Contact us if you want to join the open beta!<br />
	<a href="https://lnkd.in/dWrckRJV" rel="external nofollow" style="background-color:transparent;color:#044123;">https://lnkd.in/dWrckRJV</a><span> </span>or<span> </span><a href="mailto:hello@graiphic.io" rel="" style="background-color:transparent;color:#044123;">hello@graiphic.io</a><span> </span>or PM<br />
	<br />
	Stay informed and follow us on our youtube channel !</span>
</p>

<p>
	<span><span><span class="ipsEmoji">👉</span></span> <a href="https://lnkd.in/dmP49rCa" rel="external nofollow" style="background-color:transparent;color:#044123;">https://lnkd.in/dmP49rCa</a><br />
	<br />
	Stay informed on our website !<br />
	<span><span class="ipsEmoji">👉</span></span></span><span> <a href="https://www.graiphic.io/" rel="external nofollow" style="background-color:transparent;color:#044123;">https://www.graiphic.io</a></span>
</p>

<p>
	<br />
	 
</p>
]]></description><guid isPermaLink="false">53599</guid><pubDate>Sat, 18 Jan 2025 13:44:31 +0000</pubDate></item><item><title>LabVIEW Shell Launcher</title><link>https://lavag.org/topic/12241-labview-shell-launcher/</link><description><![CDATA[<p>Hi,</p>
<p>This is a small tool that adds a shell menu 'Open with LabVIEW Compatible Version'</p>
<p>Very usefull when working with multiple LabVIEW versions.</p>
<p>It launch the appropriate LabVIEW Version if installed', otherwise, it prompts the user to select a more recent installed version.</p>
<p><img src="http://i749.photobucket.com/albums/xx138/huguesfayard/demo1.jpg" alt="demo1.jpg"></p>
<p><img src="http://i749.photobucket.com/albums/xx138/huguesfayard/demo2.jpg" alt="demo2.jpg"><img src="http://i749.photobucket.com/albums/xx138/huguesfayard/demo3.jpg" alt="demo3.jpg"></p>
<p>Requirements :</p>
<p>LabVIEW 8.6.1 RunTime Engine</p>
<p>Use : </p>
<p>Right Click on a LabVIEW File </p>
<p>Select 'Open with LabVIEW Compatible Version'</p>
<p>Supported file formats :</p>
<p>.vi         .vit</p>
<p>.ctl        .ctt</p>
<p>.llb        .lvlib</p>
<p>.lvproj     .lvclass</p>
<p>.xnode      .xctl</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=2106" data-fileid="2106" rel="">LabVIEW Shell Launcher 1.0.4.zip</a></p>
]]></description><guid isPermaLink="false">12241</guid><pubDate>Wed, 14 Apr 2010 14:19:03 +0000</pubDate></item><item><title>Kalman filter in LabVIEW</title><link>https://lavag.org/topic/20105-kalman-filter-in-labview/</link><description><![CDATA[<p>
	Hi All,
</p>

<p>
	I have implemented Kalman filter using LabVIEW 2016.
</p>

<p>
	You can find the codes here: <a href="http://kataauralius.com/index_files/Kalman_filter_in_Labview.html" rel="external nofollow">http://kataauralius.com/index_files/Kalman_filter_in_Labview.html</a>.
</p>

<p>
	Hopefully this is useful for those who struggle with the implementation of Kalman filter in realtime system.
</p>

<p>
	Best,
</p>

<p>
	Auralius
</p>

<p>
	<a href="http://kataauralius.com" rel="external nofollow">http://kataauralius.com</a>
</p>

<p><a href="https://lavag.org/uploads/monthly_2017_04/pasted_image.png.56bb5635012260b4f06a1c5146543646.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="12269" src="https://lavag.org/uploads/monthly_2017_04/pasted_image.thumb.png.72b9ebfb1e31cc1a03eca999488148ab.png" class="ipsImage ipsImage_thumbnailed" alt="pasted_image.png"></a></p>]]></description><guid isPermaLink="false">20105</guid><pubDate>Wed, 19 Apr 2017 18:17:09 +0000</pubDate></item><item><title>Python Hangman Game Program Error</title><link>https://lavag.org/topic/23373-python-hangman-game-program-error/</link><description><![CDATA[<p>
	Hello this is Gulshan Negi
</p>

<p>
	Well, I am writing a program for making hangman game in python but it shows some error at the time of its execution.
</p>

<p>
	Here is my source code: 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">import random
def select_word():
    words_in_computer_memory = ['magazine','stars','computer','python','organisation']
    word = random.choice(words_in_computer_memory)
    return word
def is_gussed(word, guessed_letter_list):
    count=0
    for letters in word:
        if letters in guessed_letter_list:
            count+=1
    if count==len(word):
        return True
    else:
        return False
def guessed_word(word, guessed_letter_list): 
    string=""
    for key in word:
        if key in guessed_letter_list:
            string+=key
        else:
            string+="_ "
    return string
def available_letters(guessed_letter_list):
  
    string=""
    count=0
    s='abcdefghijklmnopqrstuvwxyz'
    for letter in s:
        if letter in guessed_letter_list:
            count+=1
        else:
            string+=letter
    return string
def hangman_game(word):  
    length=len(word)
    print('''------------------WELCOME TO HANGMAN GAME---------------------------
                                    O   
                                   /|\  
                                   / \  
        ''')
    print("The word you have to guess is of ",length, "letters long.")
    chances=2*len(word)
    i=0:
    guessed_letter_list=[]
    while (chances!=0):     

        if word!=guessed_word(word, guessed_letter_list):
            print("You Got", chances, "Chances.")
            print("Letters you can enter should be from these ",available_letters(guessed_letter_list))
            guess=input("ENTER A LETTER ")
            print('\n'*50)

            guessInLowerCase = guess[0].lower()      
            if guessInLowerCase  in guessed_letter_list:
                print("SORRY! YOU HAVE GUSSED THIS LETTER ALREADY! ",guessed_word(word, guessed_letter_list))
            elif guessInLowerCase not in word: 
                print(" SORRY! THE LETTER IS NOT IN WORD",guessed_word(word, guessed_letter_list))
                chances-=1
            else:
                guessed_letter_list.append(guessInLowerCase)
                print("NICE YOU GUSESSED THE RIGHT LETTER! ",guessed_word(word, guessed_letter_list))
           
        elif word==guessed_word(word, guessed_letter_list):
            print("YOU WON!")
            break

    else:
        print('''
        ********************************************
   YOU LOSS!!
                                 O 
                                /|\  
                                / \  
     ******************************************''')
        print('The word was',word,)

word = select_word()
hangman_game(word)</span></pre>

<p>
	Can anyone give their suggestions on this?
</p>

<p>
	Thanks             
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">23373</guid><pubDate>Wed, 19 Jul 2023 12:42:16 +0000</pubDate></item><item><title>GenINI - generate read/write code for INI files</title><link>https://lavag.org/topic/11920-genini-generate-readwrite-code-for-ini-files/</link><description><![CDATA[<p>Over time, I've found writing INI files (section followed by key/value pairs) to be easier than writing the <abbr title="LabVIEW">LV</abbr> code to read and write the INI files.</p>
<p>So, here is a small tool to automate the generation of code for reading and writing existing INI files.</p>
<p></p>
<ul><li>Download zip, open project, open and run GenINI_Main.vi.</li>
<li>Point the top file control to an existing standard INI file (like the one included in the Test folder, for instance)</li>
<li>Click the "Read File" button, and select the Key Type for each entry from the INI file.</li>
<li>Click the "Generate Code" button to spit out the read and write VI's (saved in the same folder as the INI file).</li>
</ul><p> </p>
<p>There are a fair number of limitations and possible enhancements, but I would love to hear any feedback people might have before I complicate this too much.</p>
<p>Thank you kindly,</p>
<p>Joe Z.</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=1883" data-fileid="1883" rel="">GenINI.zip</a></p>
]]></description><guid isPermaLink="false">11920</guid><pubDate>Sun, 14 Feb 2010 05:46:18 +0000</pubDate></item><item><title>malleable VIs to read-write CSV</title><link>https://lavag.org/topic/23233-malleable-vis-to-read-write-csv/</link><description><![CDATA[<p>
	I've create two VIs to read / write cluster formatted lines from / to a csv file.
</p>

<p>
	It's basic and has limited options, I use them to load 'expected results' for my unit tests (I use caraya).
</p>

<p>
	Feel free to use / comment / suggest improvements, if there is enough interest I'll create an open source repo on GitHub and post it on VIPM.io
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=17777&amp;key=9c295e93c033068b547b5e7e9e9cbfeb" data-fileExt='vim' data-fileid='17777' data-filekey='9c295e93c033068b547b5e7e9e9cbfeb'>write to file.vim</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=17775&amp;key=ea7e9f54f8148c0bfa806e685cb909d3" data-fileExt='vi' data-fileid='17775' data-filekey='ea7e9f54f8148c0bfa806e685cb909d3'>example.vi</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=17774&amp;key=fad0b9e7701fcae6d59db4356e6ba20a" data-fileExt='lvlib' data-fileid='17774' data-filekey='fad0b9e7701fcae6d59db4356e6ba20a'>csv.lvlib</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=17776&amp;key=ceef5031d323c400a0d8bda98ad93c03" data-fileExt='vim' data-fileid='17776' data-filekey='ceef5031d323c400a0d8bda98ad93c03'>load from file.vim</a></p>]]></description><guid isPermaLink="false">23233</guid><pubDate>Mon, 05 Jun 2023 12:49:42 +0000</pubDate></item><item><title>Publishing a library on VIPM ?</title><link>https://lavag.org/topic/22694-publishing-a-library-on-vipm/</link><description><![CDATA[<p>
	Hi everybody,
</p>

<p>
	 
</p>

<p>
	Is someone know what possibility exist to distribute a library on LabVIEW. I mean, is there only VIPM tool ?
</p>

<p>
	<span lang="en-gb" xml:lang="en-gb">I would also like to know where I can find a complete guide on licensing and licensing policy. If i want to put licence on my product what are my option ? How it works (licensing tools) ? What are the different types of licenses possible ?</span>
</p>

<p>
	<span lang="en-gb" xml:lang="en-gb">I would like to make several versions of my HAIBAL project with several licensing policies (student, lab and pro) and didn't find a document explaining all of this part.</span>
</p>

<p>
	<span lang="en-gb" xml:lang="en-gb">As this is our first software sale on the NI store (or other platform) and I don't have a lawyer on my team, I have a lot of questions: is it complicated to sell my product online ? </span>
</p>

<p>
	<span lang="en-gb" xml:lang="en-gb">What are the obligations attached to each type of license? Does JKI offer a solution for all this? If so, how much does it cost? Is it only an acquisition cost, or do you then take a royalty on sales?<br />
	<br />
	Is someone can help me on this subject ?</span>
</p>

<p>
	 
</p>

<p>
	<span lang="en-gb" xml:lang="en-gb">Thanks !</span>
</p>

<p>
	 
</p>

<p>
	<span lang="en-gb" xml:lang="en-gb">Youssef</span>
</p>
]]></description><guid isPermaLink="false">22694</guid><pubDate>Tue, 06 Sep 2022 07:13:36 +0000</pubDate></item><item><title>DVR Read and Write Malleable VIs - Simplify Your Block Diagram</title><link>https://lavag.org/topic/20572-dvr-read-and-write-malleable-vis-simplify-your-block-diagram/</link><description><![CDATA[<p>
	The introduction of <a href="http://zone.ni.com/reference/en-XX/help/371361P-01/glang/inplace_datareference/" rel="external nofollow">parallel, read-only access for DVRs</a> in <a href="http://zone.ni.com/reference/en-XX/help/371361P-01/lvupgrade/labview_features/" rel="external nofollow">LabVIEW 2017</a> adds a great deal of flexibility to using DVRs to monitor values in parallel executions of code. Fo\The downside of this, of course, is the necessity of using the In Place Element (IPE) throughout your code simply to read the value. Having IPEs throughout your code just to read a value both takes up block diagram real estate and also takes more clicks than desirable to insert.
</p>

<p>
	Similarly, though less frequently, there are times when you only need to update the value within a DVR without actually performing any logic inside of the IPE.  This situation is less frequent, at least for me, as I am usually using arrays or classes with DVRs such that I actually need to modify the existing data rather than simply replacing it.
</p>

<p>
	A more preferable solution to the above situations would be to have Read/Get and Write/Set VIs for the DVRs to simplify the process of working with them. This way, and IPE on the block diagram would only be needed when you were actually modifying the existing data within the DVR, rather than simply overwriting or returning the current value.
</p>

<p>
	Thanks to the power of malleable VIs and the type specialization structure that is now <a href="http://zone.ni.com/reference/en-XX/help/371361R-01/lvupgrade/labview_features/" rel="external nofollow">officially released in LabVIEW 2018</a>, a better solution is now available. I’ve created two malleable VIs, <i>Read  DVR Value (Parallel) </i>and <i>Write DVR Value</i> that allow you to perform a write and a parallel read <b>on any DVR data type</b>.
</p>

<p>
	 Now, you can use a single VI that you can insert via Quick Drop to read or to write DVR values.  
</p>

<p>
	Download the attached ZIP file to access the two malleable VIs and example code, and please let me know your thoughts in the comments!
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="13338" href="https://lavag.org/uploads/monthly_2018_07/5b48aaddd0ea7_VIDescriptions.png.164aeede2dc77fe0f59991f2f5d423fb.png" rel=""><img alt="VI Descriptions.png" class="ipsImage ipsImage_thumbnailed" data-fileid="13338" src="https://lavag.org/uploads/monthly_2018_07/5b48aade8335d_VIDescriptions.thumb.png.c172047f3de1712f18f52013a347fdad.png"></a>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="13342" href="https://lavag.org/uploads/monthly_2018_07/5b48ae4f674d4_BeforeandAfter.png.aa155226a584371de92e29f13cef2fdb.png" rel=""><img alt="Before and After.png" class="ipsImage ipsImage_thumbnailed" data-fileid="13342" src="https://lavag.org/uploads/monthly_2018_07/5b48ae509ca03_BeforeandAfter.thumb.png.d0c878cdf3658aad4c0d3a04203e33b7.png"></a>
</p>

<p>
	<a class="ipsAttachLink" data-fileid="13341" href="//lavag.org/applications/core/interface/file/attachment.php?id=13341" rel="">DVR Read and Write VIs 1.0.0.zip</a>
</p>
]]></description><guid isPermaLink="false">20572</guid><pubDate>Fri, 13 Jul 2018 13:52:31 +0000</pubDate></item><item><title>A nearly native tiff reader and writer</title><link>https://lavag.org/topic/23105-a-nearly-native-tiff-reader-and-writer/</link><description><![CDATA[<p>
	I want to share my tiff reader and writer, maybe someone finds it useful. It supports only a subset of the tiff format (like most). It is native, but uses openg's zip and g-image for jpeg compression.
</p>

<p>
	I tested in in my use cases, but there will still be bugs and unsupported features. Please post issues at github.
</p>

<p>
	If your are interested, visit <a href="https://github.com/kleinsimon/LV-Tiff" rel="external nofollow">https://github.com/kleinsimon/<abbr title="LabVIEW"><abbr title="LabVIEW">LV</abbr></abbr>-Tiff</a>
</p>
]]></description><guid isPermaLink="false">23105</guid><pubDate>Thu, 13 Apr 2023 11:33:30 +0000</pubDate></item><item><title>Right click the control to add refnum to class private data</title><link>https://lavag.org/topic/23102-right-click-the-control-to-add-refnum-to-class-private-data/</link><description><![CDATA[<p style="background-color:#ffffff;color:#333333;font-size:16px;padding:0px;text-align:left;">
	hi , i want to add a menu in the right click menu of a control  to add control refnum of the control to the class private data, 
</p>

<p style="background-color:#ffffff;color:#333333;font-size:16px;padding:0px;text-align:left;">
	for now its just adding up the generic control refnum not the actual type .<img alt="large?v=v2&amp;px=999" class="ipsImage" data-ratio="66.67" height="666" width="999" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://forums.ni.com/t5/image/serverpage/image-id/316150i58AE5B5A53B17919/image-size/large?v=v2&amp;px=999"><img alt="large?v=v2&amp;px=999" class="ipsImage" data-ratio="99.77" height="870" width="872" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://forums.ni.com/t5/image/serverpage/image-id/316149iCAE018BA85C63C06/image-size/large?v=v2&amp;px=999">
</p>
]]></description><guid isPermaLink="false">23102</guid><pubDate>Tue, 11 Apr 2023 10:52:33 +0000</pubDate></item><item><title>Modbus PLC Client</title><link>https://lavag.org/topic/23042-modbus-plc-client/</link><description><![CDATA[<p>
	I've put together a wrapper to the Plasmionique Modbus Master library that makes communication with PLCs a bit easier. It could be used for just about any Modbus device, but I had PLCs in mind when I was developing it.
</p>

<p>
	What is easier?<br>
	- <a href="https://www.fernhillsoftware.com/help/drivers/modbus/data-address-format.html" rel="external nofollow">Modicon-style</a> addressing instead of data address and function code.<br>
	- Data-type conversion built-in(eg. 32-bit float mapped to two U16 registers). Word swapping option.<br>
	- Poll list and cached data block. Allows you to poll a range of registers then lookup and convert the values elsewhere.
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="17544" data-ratio="49.83" width="1160" alt="image.png.17360f6ac081ba5262ebabcbac174cdd.png" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2023_03/image.png.17360f6ac081ba5262ebabcbac174cdd.png">
</p>

<p>
	The code is up on GitHub: <a href="https://github.com/rfporter/Modbus-PLC-Client" rel="external nofollow">https://github.com/rfporter/Modbus-PLC-Client</a>
</p>

<p>
	Its a rough draft at the moment. Comments are welcome and appreciated.
</p>
]]></description><guid isPermaLink="false">23042</guid><pubDate>Mon, 06 Mar 2023 15:28:09 +0000</pubDate></item><item><title>Generating DLL with LabVIEW and call it with LabVIEW</title><link>https://lavag.org/topic/22911-generating-dll-with-labview-and-call-it-with-labview/</link><description><![CDATA[<p>
	Hi everybody,
</p>

<p>
	 
</p>

<p>
	I'm generating a DLL with this simple function 
</p>

<p>
	 
</p>

<p>
	<img alt="image.png.2eca4b96333af2f4f5929ff469376889.png" class="ipsImage ipsImage_thumbnailed" data-fileid="17482" data-ratio="38.91" width="311" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2023_02/image.png.2eca4b96333af2f4f5929ff469376889.png">
</p>

<p>
	 
</p>

<p>
	I want to recover the clustrer through a DLL function, so i did it in project.
</p>

<p>
	 
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="17487" data-ratio="48.14" width="1200" alt="image.png.95d89520526091b98694677479162554.png" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2023_02/image.png.95d89520526091b98694677479162554.png">
</p>

<p>
	 
</p>

<p>
	<img alt="image.png.f5c91e3dcf8d810cf7fc3f9ee0b38b76.png" class="ipsImage ipsImage_thumbnailed" data-fileid="17483" data-ratio="95.38" width="520" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2023_02/image.png.f5c91e3dcf8d810cf7fc3f9ee0b38b76.png">
</p>

<p>
	 
</p>

<p>
	I build the DLL and when i call it, --&gt; TALA CRASH 
</p>

<p>
	<img alt="image.png.2516154e1ed6923864b1a4c0ef06eabd.png" class="ipsImage ipsImage_thumbnailed" data-fileid="17484" data-ratio="17.49" width="223" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2023_02/image.png.2516154e1ed6923864b1a4c0ef06eabd.png">
</p>

<p>
	 
</p>

<p>
	<img alt="image.png.60cbc134c6f0f999fb15fde43d2da415.png" class="ipsImage ipsImage_thumbnailed" data-fileid="17485" data-ratio="68.10" width="674" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2023_02/image.png.60cbc134c6f0f999fb15fde43d2da415.png">
</p>

<p>
	 
</p>

<p>
	To recover my cluster i supposed Type is "Adapt to type" and Data format "Handles by Values"
</p>

<p>
	Of course it's not !
</p>

<p>
	 
</p>

<p>
	Someone know what are Type and Data format of my output should be ?
</p>

<p>
	 
</p>

<p>
	Thank you,
</p>

<p>
	(i put the VI and project in attached file 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="17486" href="https://lavag.org/applications/core/interface/file/attachment.php?id=17486&amp;key=f67248615e37078b0161a05096e72c51" rel="">test DLL.zip</a>
</p>
]]></description><guid isPermaLink="false">22911</guid><pubDate>Tue, 07 Feb 2023 14:04:06 +0000</pubDate></item><item><title>Launching a batch with LabVIEW</title><link>https://lavag.org/topic/22900-launching-a-batch-with-labview/</link><description><![CDATA[<p>
	I'm trying to launch a batch with LabVIEW but i have some access restriction.
</p>

<p>
	Output of my bat is written in a txt file. 
</p>

<p>
	When i launch it directly in windows it works. When i try with LabVIEW cmd i have some restriction.
</p>

<p>
	Is it possible to make it works with the good cmd ?
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="17475" data-ratio="23.19" width="496" alt="test.png.a4b7f20f9df2558f0a4844bd8ec3e646.png" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2023_02/test.png.a4b7f20f9df2558f0a4844bd8ec3e646.png">
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=17473&amp;key=28b19e4d9d30af4d5acf66dc783ebeb6" data-fileext="bat" data-fileid="17473" data-filekey="28b19e4d9d30af4d5acf66dc783ebeb6">test.bat</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=17474&amp;key=0c5cde5d49ab4522e74aaa11949b0dbe" data-fileext="txt" data-fileid="17474" data-filekey="0c5cde5d49ab4522e74aaa11949b0dbe">my_test.txt</a></p>]]></description><guid isPermaLink="false">22900</guid><pubDate>Fri, 03 Feb 2023 18:21:17 +0000</pubDate></item><item><title>VIpreVIEW - Interactive VI preview</title><link>https://lavag.org/topic/7132-vipreview-interactive-vi-preview/</link><description><![CDATA[<p>So after some cleaning up (which in this case means few hours of work beside repairing broken code <img src="https://lavag.org/uploads/emoticons/default_smile.png" alt=":)"> ) I can put on the table what I have.<br>The main file is VIpreVIEW.vi. You have to open it, fill all paths, sizes, etc. and run (not very professional, isn't it?). After some work (depending on VI complexity) it will create a lot of files at target path. Most of them are temporary files, but I do not delete them yet for debug purposes. Open {name}.html file in a browser and watch the result. I included SWFtools binary in this package (it's GPL) but I don't know how it is with all that legal stuff.<br><br>Know issues:</p>
<ul><li>it is sloooow</li>
<li>sometimes it is even slooooower</li>
<li>additional 1px black line appears at each case (it is not an issue in alternative flash players as Gnash)</li>
<li>tips appear even for objects in hidden cases (still don't know how to solve this)</li>
<li>tips appear for each object (even not necessary, like comments) and often display sth stupid - this is for debug</li>
<li>did I mention it is slow?</li>
<li>many others</li>
</ul><p>Any comments are welcome, particularly if someone has an idea how to speed it up a little. I already tried to convert it to non-recursive version. Although I had some problems, it seems that recursion is not the reason. I think now that a bottleneck is speed of switching cases externally. If it is true, the stack version of algorithm should work even slower.<br>And of course GUI in final version will not look like this.</p>
<p> </p>
<p>[moderator note]</p>
<p>Attachments to this post are missing due to server error. We apologize for the trouble.</p>
]]></description><guid isPermaLink="false">7132</guid><pubDate>Tue, 26 Feb 2008 14:21:24 +0000</pubDate></item><item><title>VIPM proxy error</title><link>https://lavag.org/topic/22864-vipm-proxy-error/</link><description><![CDATA[<p>
	Hi community,
</p>

<p>
	I try my luck here maybe someone will answer me
</p>

<p>
	With VIPM when i try to package this example with a purchase url we have a proxy error. 
</p>

<p style="background-color:#ffffff;color:#333333;font-size:14px;">
	<span style="background-color:#ffffff;color:#333333;font-size:14px;">I tested with no proxy --&gt; error, use system proxy settings --&gt; error</span>
</p>

<p style="background-color:#ffffff;color:#333333;font-size:14px;">
	 
</p>

<p style="background-color:#ffffff;color:#333333;font-size:14px;">
	<img alt="image.png.ff040edd8d61fc4f0470d3b74150ad79.png" data-ratio="76.18" width="827" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://content.invisioncic.com/u280712/monthly_2023_01/image.png.ff040edd8d61fc4f0470d3b74150ad79.png">
</p>

<p style="background-color:#ffffff;color:#333333;font-size:14px;">
	<span style="background-color:#ffffff;color:#333333;font-size:14px;">Someone know about proxy parameters or what i have to fill to avoid this error ?</span>
</p>

<p style="background-color:#ffffff;color:#333333;font-size:14px;">
	<img alt="image.png.4452bf3dc86014a94bbd3f079cb5109c.png" data-ratio="76.42" width="827" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://content.invisioncic.com/u280712/monthly_2023_01/image.png.4452bf3dc86014a94bbd3f079cb5109c.png">
</p>

<p style="background-color:#ffffff;color:#333333;font-size:14px;">
	 
</p>

<p style="background-color:#ffffff;color:#333333;font-size:14px;">
	 
</p>
]]></description><guid isPermaLink="false">22864</guid><pubDate>Sun, 08 Jan 2023 09:15:10 +0000</pubDate></item><item><title>CRC-8-SAE J1850</title><link>https://lavag.org/topic/21565-crc-8-sae-j1850/</link><description><![CDATA[<p>
	As I did not find any implementation for CRC 8 SAE J1850, so here is mine. Suitable also for FPGA.
</p>

<p>
	BR<br>
	TS
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14873" data-fileext="vi" data-fileid="14873">CRC.vi</a></p>]]></description><guid isPermaLink="false">21565</guid><pubDate>Sat, 09 May 2020 15:26:18 +0000</pubDate></item><item><title>VIPM local repo</title><link>https://lavag.org/topic/22828-vipm-local-repo/</link><description><![CDATA[<p>
	Is someone know where are stored all these file localy ? 
</p>

<p>
	I was not able to find them
</p>

<p>
	<br>
	<img alt="image.png.c57c78ca87f71701d003cd3169c90c5b.png" class="ipsImage ipsImage_thumbnailed" data-fileid="17366" data-ratio="92.43" width="304" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2022_12/image.png.c57c78ca87f71701d003cd3169c90c5b.png">
</p>
]]></description><guid isPermaLink="false">22828</guid><pubDate>Thu, 08 Dec 2022 16:21:29 +0000</pubDate></item><item><title>Let&#x2019;s make Deep Learning easy with HAIBAL Library on LabVIEW !!</title><link>https://lavag.org/topic/22489-let%E2%80%99s-make-deep-learning-easy-with-haibal-library-on-labview/</link><description><![CDATA[<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"><span> </span>Dear Community,</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"> TDF is proud to announced the coming soon release of HAIBAL library to do Deep Learning on LabVIEW.</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">The HAIBAL project is structured in the same way as Keras.</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">The project consists of more than 3000 VIs including, all is coded in LabVIEW native:<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"><span class="ipsEmoji">😱</span></span></span><span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"><span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"><span class="ipsEmoji">😱</span></span><span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"><span class="ipsEmoji">😱</span></span></span>
</p>

<ul style="background-color:#ffffff;color:#201f1e;font-size:15px;" type="disc">
	<li style="font-size:12pt;">
		<span lang="en-gb" style="border:0px;color:inherit;font-size:11pt;padding:0px;vertical-align:baseline;" xml:lang="en-gb">16 activations (ELU, Exponential, GELU, HardSigmoid, LeakyReLU, Linear, PReLU, ReLU, SELU, Sigmoid, SoftMax, SoftPlus, SoftSign, Swish, TanH, ThresholdedReLU), nonlinear mathematical function generally placed after each layer having weights.</span>
	</li>
	<li style="font-size:12pt;">
		<span lang="fr" style="border:0px;color:inherit;font-size:11pt;padding:0px;vertical-align:baseline;" xml:lang="fr">84 functional layers/layers (Dense, Conv, MaxPool, RNN, Dropout, etc…).</span>
	</li>
	<li style="font-size:12pt;">
		<span lang="en-gb" style="border:0px;color:inherit;font-size:11pt;padding:0px;vertical-align:baseline;" xml:lang="en-gb">14 loss functions (BinaryCrossentropy, BinaryCrossentropyWithLogits, Crossentropy, CrossentropyWithLogits, Hinge, Huber, KLDivergence, LogCosH, MeanAbsoluteError, MeanAbsolutePercentage, MeanSquare, MeanSquareLog, Poisson, SquaredHinge), function evaluating the prediction in relation to the target.</span>
	</li>
	<li style="font-size:12pt;">
		<span lang="en-gb" style="border:0px;color:inherit;font-size:11pt;padding:0px;vertical-align:baseline;" xml:lang="en-gb">15 initialization functions (Constant, GlorotNormal, GlorotUniform, HeNormal, HeUniform, Identity, LeCunNormal, LeCunUniform, Ones, Orthogonal, RandomNormal, Random,Uniform, TruncatedNormal, VarianceScaling, Zeros), function initializing the weights.</span>
	</li>
	<li style="font-size:12pt;">
		<span lang="en-gb" style="border:0px;color:inherit;font-size:11pt;padding:0px;vertical-align:baseline;" xml:lang="en-gb">7 Optimizers (Adagrad, Adam, Inertia, Nadam, Nesterov, RMSProp, SGD), function to update the weights.</span>
	</li>
</ul>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"> </span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"> Currently, we are working on the full integration of Keras in compatibility HDF5 file and will start soon same job for PyTorch. (we are able to load model from and will able to save model to in the future – this part is important for us).</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">Well obviously, Cuda is already working if you use Nvidia board and NI FPGA board will also be – not done yet.</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">We also working on the full integration on all Xilinx Alveo system for acceleration.</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">User will be able to do all the models he wants to do; the only limitation will be his hardware. (we will offer the same liberty as Keras or Pytorch) and in the future our company could propose Harware (Linux server with Xilinx Alveo card for exemple --&gt; <a href="https://www.xilinx.com/products/boards-and-kits/alveo.html" rel="external nofollow">https://www.xilinx.com/products/boards-and-kits/alveo.html</a> All full compatible Haibal !!!)</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb"> </span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">About the project communication: </span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">The website will be completely redone, a Youtube channel will be set up with many tutorials and a set of known examples will be offered within the library (Yolo, Mnist, etc.).</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">For now, we didn’t define release date, but we thought in the next July (it’s not official – we do our best to finish our product but as we are a small passionate team (we are 3 working on it) we do our best to release it soon).</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	 
</p>

<p>
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">This work is titanic and believe me it makes us happy that you encourage us in it. (it boosts us). In short, we are doing our best to release this library as soon as possible.</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">Still a little patience …</span>
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	 
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	<span lang="en-gb" style="border:0px;color:inherit;padding:0px;vertical-align:baseline;" xml:lang="en-gb">Youtube Video : </span>
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" width="200" data-embed-src="https://www.youtube.com/embed/NhKLZJiqNr8?feature=oembed"></iframe>
	</div>
</div>

<p style="background-color:#ffffff;color:#353c41;font-size:14px;">
	This exemple is a template state machine using HAIBAL library.
</p>

<p style="background-color:#ffffff;color:#353c41;font-size:14px;">
	It show a signal (here it's Cos) and the neural network during his training has to learn to predict this signal  (here we choose 40 neurones by layers, 5 layers, layer choose is dense).
</p>

<p style="background-color:#ffffff;color:#353c41;font-size:14px;">
	This template will be proposed as basic example to understood how we initialize, train and use neural network model.  This kind of "visualisation exemple" is inspired from <a href="https://playground.tensorflow.org/" rel="external nofollow" style="background-color:transparent;">https://playground.tensorflow.org/</a> help who want to start to learn deep learning.
</p>

<p style="background-color:#ffffff;color:#201f1e;font-size:11pt;">
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<a data-fileext="png" data-fileid="16540" href="https://lavag.org/uploads/monthly_2022_03/4.png.6246c458e4771617abb53c350a84c79b.png" rel=""><img alt="4.png" data-fileid="16540" data-ratio="56.62" width="1200" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2022_03/4.png.6246c458e4771617abb53c350a84c79b.png"></a>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<a data-fileext="png" data-fileid="16537" href="https://lavag.org/uploads/monthly_2022_03/1.png.70109e97294c31169f6e657eb7858d8c.png" rel=""><img alt="1.png" data-fileid="16537" data-ratio="42.06" width="1200" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2022_03/1.png.70109e97294c31169f6e657eb7858d8c.png"></a>
</p>
]]></description><guid isPermaLink="false">22489</guid><pubDate>Wed, 30 Mar 2022 09:15:12 +0000</pubDate></item><item><title>Malleable Buffer (seeing what VIMs can do)</title><link>https://lavag.org/topic/21268-malleable-buffer-seeing-what-vims-can-do/</link><description><![CDATA[<p>
	As an experiment in seeing what VIMs can do, here is an all-VIM implementation of a "circular buffer", based on code from a 2D DBL array circular buffer I had previously used.  In LabVIEW 2018.
</p>

<p>
	Features:
</p>

<ul>
	<li>
		Works on any scalar type, giving a 1D array buffer, or any 1D array, giving a 2D array buffer (could be extended to a 3D buffer of 2D arrays)
	</li>
	<li>
		Has VIMs that accept either a by-Value Buffer, or a DVR of a Buffer
	</li>
</ul>

<p>
	Package contains simple examples.  Comments welcome.  
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14436" data-fileext="vip" data-fileid="14436">jdp_science_lib_malleable_buffer-0.1.0.5.vip</a></p>]]></description><guid isPermaLink="false">21268</guid><pubDate>Tue, 12 Nov 2019 22:44:36 +0000</pubDate></item><item><title>Advanced Encryption Standard (AES) LabVIEW library is open-sourced now</title><link>https://lavag.org/topic/20072-advanced-encryption-standard-aes-labview-library-is-open-sourced-now/</link><description><![CDATA[<p>
	Hello everybody!
</p>

<p>
	During a few last years I received multiple appeals to release AES library that I developed in 2011 into open-source. So, I've just done exactly this: <a href="https://github.com/IgorTitov/LabVIEW-Advanced-Encryption-Standard" rel="external nofollow">https://github.com/IgorTitov/LabVIEW-Advanced-Encryption-Standard</a>
</p>

<p>
	I released it under MIT license (which means that there are no restrictions whatsoever). No VI passwords, no uglification.
</p>

<p>
	LabVIEWishly Yours,
</p>

<p>
	Igor Titov.
</p>
]]></description><guid isPermaLink="false">20072</guid><pubDate>Thu, 23 Mar 2017 17:43:59 +0000</pubDate></item><item><title>The first digital clock done in LabVIEW</title><link>https://lavag.org/topic/22493-the-first-digital-clock-done-in-labview/</link><description><![CDATA[<p>
	I do believe this is the first digital clock done in LabVIEW
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16556&amp;key=ba6db6eec75c238d062f9a69d136c959" data-fileExt='vi' data-fileid='16556' data-filekey='ba6db6eec75c238d062f9a69d136c959'>digclk.vi</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16554&amp;key=34c00a40070b3ac02ca5483ac91cfce4" data-fileExt='lvlps' data-fileid='16554' data-filekey='34c00a40070b3ac02ca5483ac91cfce4'>digclk Project.lvlps</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16555&amp;key=fd749880df6f6156ced091ee8f7090be" data-fileExt='lvproj' data-fileid='16555' data-filekey='fd749880df6f6156ced091ee8f7090be'>digclk Project.lvproj</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16553&amp;key=cf45de6bea15b96e0e12aa4384622e45" data-fileExt='aliases' data-fileid='16553' data-filekey='cf45de6bea15b96e0e12aa4384622e45'>digclk Project.aliases</a> 
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16557&amp;key=554c00d42c1b4b8114996f0f10e16393" data-fileExt='ctl' data-fileid='16557' data-filekey='554c00d42c1b4b8114996f0f10e16393'>dig.ctl</a></p>]]></description><guid isPermaLink="false">22493</guid><pubDate>Tue, 05 Apr 2022 18:47:02 +0000</pubDate></item><item><title>Ellipse from 5 Points</title><link>https://lavag.org/topic/22461-ellipse-from-5-points/</link><description><![CDATA[<p>
	Hi All!
</p>

<p>
	Little background: I was searching for an implementation (or at least a full explanation) of constructing an ellipse from 5 points. 5 points exactly define an ellipse, so it's not a data fitting problem. To my surprise, I couldn't find any solutions that can be used as it is or any full explanations. All I could find was pointers into the proper direction (matrix math) but my math is so rusty that I could not implement anything from those information ("just calculate the determinant with some symbolic math library or do it on paper haha and goodness comes"). I was a bit upset because I wasn't doing homework, I actually needed that function.
</p>

<p>
	 
</p>

<p>
	Anyhow, after finding a small hint in one of the threads, I could go through the thing and implementet the algorithm. Maybe it will be useful for anyone who is looking for exactly that thing.
</p>

<p>
	It's not that nice, not optimised, I guess many of the math could be optimized/simplified, but it's working at least.
</p>

<p>
	Precision: I'm not sure. For my needs, it's precise enough, I'm not an expert in condition of the matrix or other calculations.
</p>

<p>
	I think the names are self explaining, but If you have questions, don't hesitate to ask. The formulas and the thread I found most usable are included on the block diagram.<br />
	Input: array of coordinates (x,y in a cluster).<br />
	Output:
</p>

<ul>
	<li>
		ellipse parameters: center, two radii and angle of the first axis
	</li>
	<li>
		the coordinates of the axis endpoints
	</li>
	<li>
		the five t parameter values of the input points (t parameter for the parametric equation of the ellipse), so for example you can draw ellipse arc between two of the points
	</li>
	<li>
		If the ellipse cannot be constructed, it results in some NaNs here and there... No extra checks added
	</li>
</ul>

<p>
	2 subvis are also implemented, but maybe they are already in the <abbr title="LabVIEW"><abbr title="LabVIEW">LV</abbr></abbr> base package and just missed them:
</p>

<ul>
	<li>
		parametric equation for arbitrary ellipses (or polar equation, my math is that rusty I can't even express properly what I mean)
	</li>
	<li>
		CCW angle between two vectors (result in 0....2 PI range), it's used to calculate the t parameters for the points. This is where I feel there's some redundancy or redundant trigonometric calculations.
	</li>
</ul>

<p>
	 
</p>

<p>
	Thank's for any feedback!
</p>

<p>
	EDIT: I added a small demo program. You can move the 5 points on a graph.
</p>

<p>
	<a class="ipsAttachLink" data-fileext="vi" data-fileid="16491" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16491&amp;key=92f7300af5a412bbc50aad0c65ce107d" rel="">2D_ellipse_parametric_equation.vi</a> <a class="ipsAttachLink" data-fileext="vi" data-fileid="16492" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16492&amp;key=9d503bd2877775dbbfc5d581f9408cef" rel="">2D_ellipse_from_5pts.vi</a> <a class="ipsAttachLink" data-fileext="vi" data-fileid="16493" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16493&amp;key=d35928812d7b7ff4215697b824a75805" rel="">2D_ccw_angle.vi</a>
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16494&amp;key=33c4c33f7b621dd106448f3f6379347d" data-fileExt='vi' data-fileid='16494' data-filekey='33c4c33f7b621dd106448f3f6379347d'>Ellipse_Demo.vi</a></p>]]></description><guid isPermaLink="false">22461</guid><pubDate>Thu, 03 Mar 2022 15:25:58 +0000</pubDate></item><item><title>Googly Eyes Control</title><link>https://lavag.org/topic/22403-googly-eyes-control/</link><description><![CDATA[<p>
	I don't know what National Instruments was thinking when they decided not to include this control in the official LabVIEW distribution.
</p>

<p>
	<img alt="tmp.JF7P4eo7qz.png.ce11ef1b7d95fd7c1ddb7eaacad17121.png" class="ipsImage ipsImage_thumbnailed" data-fileid="16401" data-ratio="53.77" width="292" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2022_01/tmp.JF7P4eo7qz.png.ce11ef1b7d95fd7c1ddb7eaacad17121.png">
</p>

<p>
	Both eyes are included and automatically synchronized, so you don't need to worry about contracting lazy eye.
</p>

<p>
	<a class="ipsAttachLink" data-fileext="ctl" data-fileid="16402" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16402&amp;key=d17839147cb3fb68f2de9ea0e0cc2564" rel="">Googly Eyes.ctl</a>
</p>
]]></description><guid isPermaLink="false">22403</guid><pubDate>Tue, 25 Jan 2022 15:37:58 +0000</pubDate></item><item><title>Network Streams Simplification Demos / 64 Bit Calling DLL Example</title><link>https://lavag.org/topic/22197-network-streams-simplification-demos-64-bit-calling-dll-example/</link><description><![CDATA[<p>
	Hey all.  So I'm planning on giving a Network Streams presentation to our local user group and was working on some examples and code, and figured I could make it into a full blown package at some point to help simplify the Client Host connection having automated retries, connection status, and using VIMs have the ability to specify the Request and Response data as a type def.
</p>

<p>
	The code still needs some work, but is in a decent place as far as the examples go, but is missing documentation and icons.  It requires LabVIEW 2020 or newer, and the last example requires both 64 and 32 bit versions of LabVIEW.  The basic examples all seem to work with the one I'm most interested in feedback on being the 64 Bit DLL calling code, but first the others.
</p>

<p>
	<strong>Example 1 Client Host Together</strong>
</p>

<p>
	This is the simplest demo showing the Client and Host in a single VI.  All that is needed is to specify what the Client and Host identification is.  Here it is hard coded as "Client Loop" and "Host Loop".  With it a Host can send a request for some work, and get a response.  The Client will sit in a loop and get a user event for the work, then send the response.
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="16118" data-ratio="42.94" width="1200" alt="1298923464_Demo1.png.f32a834032e8ba2cc1062434ef551cf5.png" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2021_09/1298923464_Demo1.png.f32a834032e8ba2cc1062434ef551cf5.png">
</p>

<p>
	<strong>Example 2 Client Host Together</strong>
</p>

<p>
	The next progression is a Client and Host that are separated in different instances or contexts.  The code is practically the same but each loop now has its own project and can be built into separate EXEs.  Here the IP address is localhost so both Client and Host need to be on the same computer.
</p>

<p>
	<strong>Example 3 Remote Client</strong>
</p>

<p>
	Here is where it starts getting fun.  The Host is ran on Windows (EXE or development) and then the Client can also be either ran from a separate EXE or development.  This Client can be another Windows PC on the same network or an RT target that has Network Streams installed through MAX.  The example project has an RT target.  And the Host has an IP address for finding the Client.
</p>

<p>
	<strong>Example 4 64 Bit DLL Calling</strong>
</p>

<p>
	And this brings me to the real fun.  So a 64 Bit executable can't call a 32-bit DLL directly.  It either needs some kind of wrapper, or another translation layer.  Since Network Streams supports talking between different versions of LabVIEW it also supports sending data to and from different bitness of LabVIEW too.  So what you can do is open the "Remote Client Test - Host Main.vi" under Example 4 in LabVIEW 64-bit.  Then run the EXE named "Remote Client.exe" which is a 32 bit EXE.  Instead of running this EXE you can also open and run "Remote Client Test - Client Main" in the 32-bit version of LabVIEW.
</p>

<p>
	If both the Client and Host are running, and both show a Connected status on the front.  Then what you should be able to do is put a file in the Path control, then click "Get MD5 Method 1".  This will send the path of the file from that control (just the path not the actual data of the file) over a Network Stream to the Client, and tell it to run a series of Call Library Nodes to get the MD5 of the file.  You can also try clicking Method 2 which will instead of doing it in one call, it will read the file in chunk on the 64-bit side, then send that data over Network Streams to the 32-bit side, where the DLL calls are made.
</p>

<p>
	I don't like that to make this work you basically need to duplicate your work.  On the 32-bit side you need to code talking to the DLL, and get the request data from the Host converting it to what you want, then getting the result and sending it back to the Host as the response.  Then on the Host side you need to write a subVI that takes inputs, flattens them down into sending the request, getting the response and unflattening.  At the moment I used Variant attributes because I wasn't being creative.
</p>

<p>
	I'd love a more streamlined method that could work by specifying DLL inputs and data types.  Or just make it easier for developers, possibly with scripting?  XNodes replacing Call Library Nodes?  Or using them as a template?  Thoughts?
</p>

<p>
	Also another issue is needing to run a separate EXE.  I'd love to be able to embed in the 64-bit VIs the needed 32-bit EXEs, and then have a daemon for starting up and stopping that EXE.  This will mean the first call to it will take several extra seconds, while the 32-bit EXE is started up in the runtime engine and gets ready to get a Network Stream request.  In a real application this could be done on start easily.
</p>

<p>
	<strong>MD5 Details</strong>
</p>

<p>
	No you shouldn't use this method to actually get the MD5 of a file from a 64-bit version of LabVIEW.  There are better alternatives.  But what I wanted was an example of getting a 32-bit binary to do some work, that a 64-bit version of LabVIEW could have it do.  By the way this code is lifted from a <a href="https://lavag.org/topic/10262-slow-md5/page/2/" rel="">discussion here</a>.
</p>

<p>
	<span><b>Actual Usage?</b></span>
</p>

<p>
	<span>So as for the actual usage of a thing like this.  I have a few pieces of hardware that talk over a 32-bit DLL and don't have a way to talk to them once I go to LabVIEW 64-bit.  They aren't critical hardware, and are old so maybe I should just let it go.  But part of me wants to update these APIs so that all versions and types of LabVIEW can talk to them.  I also have a couple of customer DLLs that are 32-bit and are just black boxes that I need to use for security reasons.</span>
</p>

<p>
	<strong><span>Performance?</span></strong>
</p>

<p>
	Untested, but probably not great depending on the amount of data that gets sent back and forth.
</p>

<p>
	<strong><span>Alternatives?</span></strong>
</p>

<p>
	<span>If anyone knows of good examples of having a 64-bit version of LabVIEW call a 32-bit DLL I'd be interested.  Regardless the Network Streams portion of this code will likely be published at some point after the user group presentation.  Thanks.</span>
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16119&amp;key=cf68f4786c340eb7be3e38d0732d4116" data-fileext="zip" data-fileid="16119" data-filekey="cf68f4786c340eb7be3e38d0732d4116">1069999985_NetworkStreamsTrialand64DLLCalling.zip</a></p>]]></description><guid isPermaLink="false">22197</guid><pubDate>Fri, 10 Sep 2021 21:16:13 +0000</pubDate></item><item><title>PCAN Driver Question</title><link>https://lavag.org/topic/22339-pcan-driver-question/</link><description><![CDATA[<p>
	Hello, 
</p>

<p>
	Im using for PCAN Driver for communication with a CAN Device
</p>
<iframe allowfullscreen="" data-embedauthorid="24312" data-embedcontent="" data-embedid="embed5425866205" scrolling="no" src="https://lavag.org/applications/core/interface/index.html" data-embed-src="https://lavag.org/topic/15784-cr-pcan-driver_lv2009/?tab=comments&amp;do=embed&amp;comment=95558&amp;embedComment=95558&amp;embedDo=findComment#comment-95558"></iframe>

<p>
	 
</p>

<p>
	I want to send via rs485 msg-s then to read them with the Peaksystems CAN 
</p>

<p>
	I have an issue with reading the values from CAN.
</p>

<p>
	My program reads only the first value. 
</p>

<p>
	When I send msg and expect change there is no change in values I expect
</p>

<p>
	<img alt="image.png.adaa2d41ac39d6139957b9fa9279efbb.png" class="ipsImage ipsImage_thumbnailed" data-fileid="16317" data-ratio="343.36" width="113" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2021_11/image.png.adaa2d41ac39d6139957b9fa9279efbb.png">
</p>

<p>
	Only E2 changes everytime I want to read, but not the next 2 values where I Expect change. 
</p>

<p>
	I guess Im missing something, but I dont know what.
</p>

<p>
	Here is my program.
</p>

<p>
	<br>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="16318" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16318&amp;key=b1de8ce0b734f8c381bfa5d5ade02b4e" rel="">RS.zip</a>
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">22339</guid><pubDate>Mon, 29 Nov 2021 10:35:37 +0000</pubDate></item><item><title>Nested collection with interfaces</title><link>https://lavag.org/topic/21583-nested-collection-with-interfaces/</link><description><![CDATA[<p>
	I had some time to learn about new interfaces and finally I could implement my collection class as I had envisioned. I didn’t want to use <em>iterable</em> and <em>iterator </em>names, because I thought that would have been too bold a claim.
</p>

<p>
	The original version of the collection class was (and is) used as a collection of sequence steps. Each element can be either a sequence command (send message, wait timer, wait complete etc.) or another collection of commands (sub-sequence). That’s the reasons for the labels and search method. Otherwise it is just a fancy (Rube Goldberg) array.
</p>

<p>
	<em><strong>Next</strong></em> method is recursive and it steps through all elements in the collection. <em><strong>Execute </strong></em>is only method, which requires override.
</p>

<p>
	For now, it’s at least an exercise in new interfaces. I don’t know if it’s useful enough to be in the code repository, but I can polish it up if needed.
</p>

<p>
	 
</p>

<p>
	--<br>
	Marko H<br>
	Certified LabVIEW Architect<br>
	www.optofidelity.com
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14889" data-fileext="zip" data-fileid="14889">Iterable Collection LV2020.zip</a></p>]]></description><guid isPermaLink="false">21583</guid><pubDate>Mon, 18 May 2020 13:25:59 +0000</pubDate></item><item><title>Run-time translations.... anyone want this?</title><link>https://lavag.org/topic/22097-run-time-translations-anyone-want-this/</link><description><![CDATA[<p>
	I have created some code that allows me to translate the GUI language on the fly at runtime. Is anyone else interested in this? At the moment it is a bit coupled into my actual application but I think I can extract the relevant bits.
</p>

<p>
	It supports pretty much any latin codepage language and once upon a time did also support Chinese (but I have not tested that in quite some time).
</p>

<p>
	Obvious disclaimer here: I just want to share what I made, but use at your own risk, and I am definitely not a UTF8/16 whatever expert so there might be some stuff that is just plain wrong.
</p>
]]></description><guid isPermaLink="false">22097</guid><pubDate>Wed, 07 Jul 2021 06:26:29 +0000</pubDate></item><item><title>2D picture GUI Library</title><link>https://lavag.org/topic/22093-2d-picture-gui-library/</link><description><![CDATA[<p>
	Two questions about this: 
</p>

<p>
	1. Does something like this already exist?
</p>

<p>
	2. Is this something that could be useful?<br>
	<br>
	Every once in a while I need dynamic UI components that can be generated at runtime. One nice thing to use for this is a picture control; however it doesn't lend itself as well to keeping other pieces of function such as mouse click events and such. I put together a mini library of UI functions for this that has the ability to be extended. The UI can be generated dynamically at runtime and be any picture thing that you can draw.
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="15937" data-ratio="105.72" width="367" alt="image.png.185106caad170f8ca66cfc6891df1be1.png" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2021_07/image.png.185106caad170f8ca66cfc6891df1be1.png">
</p>

<p>
	Using Standard layout techniques that you might find in other GUI libraries. The hierarchy generation can always be simplified by using some type of templating string.
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="15936" data-ratio="84.78" width="1104" alt="image.png.cda376a59cd456e34ae613b30af62a60.png" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2021_07/image.png.cda376a59cd456e34ae613b30af62a60.png"> 
</p>

<p>
	 
</p>

<p>
	</p><video class="ipsEmbeddedVideo" controls="" data-video-embed="">
		<source type="video/mp4" src="https://lavag.org/applications/core/interface/js/spacer.png" data-video-src="https://lavag.org/uploads/monthly_2021_07/1033292335_Example1.viFrontPanelonPgui2.lvproj_MyComputer_2021-07-0214-03-54.mp4.dc89555bad7a16417f5810683242c294.mp4"><a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=15935" data-fileid="15935" data-fileext="mp4" rel="">Example1.vi Front Panel on Pgui2.lvproj_My Computer _ 2021-07-02 14-03-54.mp4</a>
	</source></video>

]]></description><guid isPermaLink="false">22093</guid><pubDate>Fri, 02 Jul 2021 19:51:51 +0000</pubDate></item><item><title>LabVIEW google drive and sheets server</title><link>https://lavag.org/topic/20522-labview-google-drive-and-sheets-server/</link><description><![CDATA[<p>
	I was working on this app over the past year. Happy to make it available under a "Non-Profit Open Software License" 
</p>

<p>
	Allows any labview application on you computer to utilise your google drive and google sheets. This is achieved through a labVIEW executable (GDLVserver), that gets access to Google drive/sheets with a client secret json file, with <a href="https://developers.google.com/identity/protocols/OAuth2" rel="external nofollow">OAuth 2.0</a> authentication. Other labVIEW applications can communicate with the executable, and request google drive and sheets function requests. A LabVIEW client library is included to add to your project files. The GDLVserver will work in the background and can be hidden.
</p>

<p>
	I used an executable to handle all the Google Drive API commands, to lessen the file dependency in projects, and also to aim to stabilise the drive connection which has a tendency to freeze on connection. This is still a problem, but is rare, and is unavoidable as it is on the google API side. Once connected the connection is maintained flawlessly. I've run apps for days with data writing data every second with no issues. There is a quota on function calls per user per API, 100 calls per 100 seconds. 
</p>

<p>
	All code is written in LabVIEW 2015 SP1
</p>

<p>
	API: Google.Apis.Drive.v3.dll, Google.Apis.Sheets.v4.dll
</p>

<p>
	Background: Origin of code <a href="https://github.com/ni/labview-gdrive" rel="external nofollow">maggie-otoole</a>
</p>

<p>
	<u>Modification Actions</u>:
</p>

<ul><li>
		All VI's re-written
	</li>
	<li>
		.NET testAuth.dll replaced with JNET.dll
	</li>
	<li>
		New VI created for more API features
	</li>
	<li>
		All library references updated to .net45
	</li>
	<li>
		Google API widget, LabVIEW executable created 
	</li>
</ul><p>
	<u>Google Drive Functions:</u>
</p>

<ul><li>
		Get folder names / ID's, in root folder
	</li>
	<li>
		Get folder names / ID's, in specific folder 
	</li>
	<li>
		Get file names / ID's, in specific folder 
	</li>
	<li>
		Create new sheet
	</li>
</ul><p>
	<u>Google Sheet Functions:</u>
</p>

<ul><li>
		Append 2D array data
	</li>
	<li>
		Insert 2D array data
	</li>
	<li>
		Read 1D array data
	</li>
</ul><p>
	<u>Folders content:</u>
</p>

<ul><li>
		GDLVserver:  includes .exe, data folder with .lib references (you will need to place your JSON file here), and an icon folder
	</li>
	<li>
		GDLVclient: includes a LabVIEw project, GDLVclient library, and example VI's
	</li>
</ul><p>
	<u>Requirements:</u>
</p>

<ul><li>
		a LabVIEW 2015 SP1 32bit runtime engine is required to run the executable (<a href="http://www.ni.com/download/labview-run-time-engine-2015-sp1/5841/en/" rel="external nofollow">here</a>)
	</li>
	<li>
		a google email account
	</li>
	<li>
		Follow instructions in the "how do" pdf, (enable API's, create JSON, download &amp; rename, run server (admin), try examples)
	</li>
</ul><p>
	 
</p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=13133">GDLVserver.zip</a></p>
<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=13138">GDLVclient.zip</a></p>
<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=13136">GDLV License.pdf</a></p>
<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=13137">GDLV how do.pdf</a></p>]]></description><guid isPermaLink="false">20522</guid><pubDate>Tue, 15 May 2018 20:09:19 +0000</pubDate></item><item><title>OOP QMH</title><link>https://lavag.org/topic/21982-oop-qmh/</link><description><![CDATA[<p>
	Hi,
</p>

<p>
	I tried to create a template based on OOP for QMH. During development I have been confronted with infinite crashes of LabVIEW so I decided to slow down with this project and open it to the community. I finished my working example and stopped for now.
</p>

<p>
	So if anyone is interested to play around with the code, see attached ZIP file (<abbr title="LabVIEW">LV</abbr> 2020).
</p>

<p>
	Cu,<br />
	Peter
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=15716" data-fileExt='zip' data-fileid='15716'>MHT.zip</a></p>]]></description><guid isPermaLink="false">21982</guid><pubDate>Fri, 19 Mar 2021 16:19:38 +0000</pubDate></item><item><title>Minesweeper</title><link>https://lavag.org/topic/21977-minesweeper/</link><description><![CDATA[<p>
	Hi all!
</p>

<p>
	This is a small miesweeper clone, a game that I implemented in every major languages I programmed in.<br />
	The code is not pretty I only had a day to make it, the game itself is a bit slow and I didn't optimize it (not sure if it's the logic, or that a huge table control is being formatted cell-by-cell), but I thought I share it anyway.
</p>

<p>
	The window setup may be a bit strange but this is actually just a dialog in a bigger project, an easter egg.
</p>

<p>
	All controls of the original Windows Minesweeper are implemented, flags and auto-explore (simulaneous left+right click on a discovered cell with matching number of flags around it) too.<br />
	 
</p>

<p>
	Enjoy, if you are patient enough and try not to vomit if you look at the block diagram...
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="15711" href="https://lavag.org/applications/core/interface/file/attachment.php?id=15711" rel="">minesweeper.zip</a>
</p>
]]></description><guid isPermaLink="false">21977</guid><pubDate>Thu, 18 Mar 2021 13:14:56 +0000</pubDate></item><item><title>LabVIEW Resource Template Viewer</title><link>https://lavag.org/topic/21763-labview-resource-template-viewer/</link><description><![CDATA[<p>
	Buried inside LabVIEW's resource files are several resources with the type "TMPL". They contain information that looks like it could be incredibly helpful in figuring out the structure of many of LabVIEW's internal resources. They're in a binary format, but it's quite trivial to parse, so I quickly put together a tool for loading and viewing them.
</p>

<p>
	<a class="ipsAttachLink" contenteditable="false" data-fileid="15252" href="https://lavag.org/applications/core/interface/file/attachment.php?id=15252" data-fileext="zip" rel="">Template Viewer.zip</a>
</p>

<p>
	For more information, see this page, which appears to describe the same format: <a href="http://www.mathemaesthetics.com/ResTemplates.html" rel="external nofollow">https://www.mathemaesthetics.com/ResTemplates.html</a> (Change the URL from https to http; the forum won't let me add http links for some reason.)
</p>
]]></description><guid isPermaLink="false">21763</guid><pubDate>Mon, 21 Sep 2020 02:02:08 +0000</pubDate></item><item><title>Control &#x201C;Augments"</title><link>https://lavag.org/topic/19759-control-%E2%80%9Caugments/</link><description><![CDATA[<p>
	The attached VIPM contains an extension of Messenger Library that is intended to add extended functionality to controls/indicators, via a background process that is launched and which registers for the events of the control (the background process is a Messenger-Library “actor”).  This is meant to be an alternative to XControls.   Included are two “Augments”, both with examples.  See &lt;examples&gt;/drjdpowell/UI Augments/Examples/EXAMPLE Twin Cursor Graph Augment.  This takes any graph with two cursors and draws a line between the two and displays summary info of the data between the two cursors:
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="11533" src="https://lavag.org/uploads/monthly_2016_08/57b466e9a049d_ExampleAugmentTwinCursor.png.a56473e9cfb6744049f258ee03745b27.png" alt="Example Augment, Twin Cursor.png"></p>

<p>
	There is also a cross-section plotting for a 2D intensity chart:
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="11534" src="https://lavag.org/uploads/monthly_2016_08/57b46755ca1b9_AugmentCrossectionplot.png.715df676dd2d2393c6a684489793e3a7.png" alt="Augment, Crossection plot.png"></p>

<p>
	 
</p>

<p>
	This package is in LabVIEW 2015, and requires Messenger Library (latest, in the LAVA-CR) and JSON LabVIEW and Shortcut menu from Cluster (both in the LAVA-CR).
</p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=11535">drjdpowell_messenger_ui_augments-1.0.0.8.vip</a></p>]]></description><guid isPermaLink="false">19759</guid><pubDate>Wed, 17 Aug 2016 13:37:57 +0000</pubDate></item><item><title>Infix Expression Evaluator</title><link>https://lavag.org/topic/21515-infix-expression-evaluator/</link><description><![CDATA[<p>
	So there are so many ways to do evaluators. I was trying to minimize mess on the implementation (no recursion or any such nonsense)
</p>

<p>
	Single File capible(if function VI is removed) 
</p>

<p>
	Contains tools for changing rules.(In the form of a spreadsheet)
</p>

<p>
	It uses variant attributes for the variable name space.
</p>

<p>
	Here it is:
</p>

<p>
	<img alt="image.png.bdbcc250895acfc306d7eaed9230f3f6.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14725" data-ratio="20.30" width="1200" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2020_04/image.png.bdbcc250895acfc306d7eaed9230f3f6.png">
</p>

<p>
	Made a nice and simple evaluator should be compatible with older versions of LabVIEW as well. And even gave it some test cases:
</p>

<p>
	<img alt="image.png.00f79dfd7057c3a21a4d84b25ed93fa8.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14726" data-ratio="211.15" width="314" src="https://lavag.org/applications/core/interface/js/spacer.png" data-src="https://lavag.org/uploads/monthly_2020_04/image.png.00f79dfd7057c3a21a4d84b25ed93fa8.png">
</p>

<p>
	Also check out the github page: <a href="https://github.com/taylorh140/LabVIEW_Eval" rel="external nofollow">https://github.com/taylorh140/LabVIEW_Eval</a>
</p>

<p>
	I've attached the Eval and Functions.vi should be <abbr title="LabVIEW">LV</abbr> 8.0 compatible.
</p>

<p>
	<a class="ipsAttachLink" data-fileext="vi" data-fileid="14727" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14727" rel="">Functions.vi</a> <a class="ipsAttachLink" data-fileext="vi" data-fileid="14728" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14728" rel="">Eval.vi</a>
</p>
]]></description><guid isPermaLink="false">21515</guid><pubDate>Fri, 17 Apr 2020 22:32:38 +0000</pubDate></item><item><title>Circular Graph - Graphs with circular buffer demo</title><link>https://lavag.org/topic/21507-circular-graph-graphs-with-circular-buffer-demo/</link><description><![CDATA[<p>
	Okay so I wrote some code back in the 2011 era for doing some graph stuff and never used it.  As a result there are a few places that the code could take advantage of modern functions (limited events, array tunnels, conditional, and concatenating, VIMs, even Set and Maps) but in any case I have it here for others to take a look at and use as they want.  I don't intend on updating this further.
</p>

<p>
	It all started when I found the built in graph controls to be limiting in terms of signal selection and control.  I wanted a way for a user to select the signals they want and then show those on a graph with a shared time scale.  The problem was at the time the checkbox selector on a graph could have a scroll that couldn't be controlled.  So I started with a single column listbox showing all signals and allowing multiple to be selected.  I wanted to see the current value so I added that.  Scope creep kept going until I'm left with this thing that isn't done, but isn't terrible. 
</p>

<p>
	In this demo there is a subpanel mode, independent windows, pause and resume, the normal graph palette controls, independent Y axis scaling, coloring, buffer size control, visible signals selection and values, and a few other things.  It was intended to be used in places where speed and exact values weren't used.  It was more or less a place where all signals of a system could be seen slowly.  It uses a few things I've posted on LAVA before.  My <a href="https://lavag.org/files/file/248-variant-repository/" rel="">Variant Repository</a>, <a href="https://lavag.org/files/file/296-hooovahh-array-vims/" rel="">Array VIMs</a>, and <a href="https://lavag.org/files/file/250-circular-buffer/" rel="">Circular Buffer</a>.  Here is a video.
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="344" width="459" data-embed-src="https://www.youtube.com/embed/BSjb8VoBhqo?feature=oembed"></iframe>
	</div>
</div>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14716" data-fileext="vipc" data-fileid="14716">Circular Graph.vipc</a></p>]]></description><guid isPermaLink="false">21507</guid><pubDate>Wed, 15 Apr 2020 21:11:52 +0000</pubDate></item><item><title>Demo Sliding Phone Settings UI</title><link>https://lavag.org/topic/21334-demo-sliding-phone-settings-ui/</link><description><![CDATA[<p>
	Over on reddit someone asked for suggestions on how to make a sliding UI like you might find on your phone.  I thought it was a fun challenge so here is my very rough draft that could probably be turned into a QControl.  And a video.  At the moment you can only change the settings of booleans and of a selection like the days of the week I show.  I planned on putting code for handling string and numeric value changes but probably spent too much time on this already.
</p>

<p>
	 
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="344" width="459" data-embed-src="https://www.youtube.com/embed/c8Fj05BYS5E?feature=oembed"></iframe>
	</div>
</div>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14509" data-fileext="zip" data-fileid="14509">Android Sliding UI Demo.zip</a></p>]]></description><guid isPermaLink="false">21334</guid><pubDate>Mon, 06 Jan 2020 23:03:23 +0000</pubDate></item><item><title><![CDATA[Low level VI data editor (warning: not for production use&#33;)]]></title><link>https://lavag.org/topic/19178-low-level-vi-data-editor-warning-not-for-production-use/</link><description><![CDATA[<p>One thing I've always wanted (and have asked about here before) was a way to edit the data inside VI files at a low level. Well I finally figured that out. I have here a tool that will let you open a VI, look at the individual blocks of data stored within, and make changes. Plus, with the power of private methods and internal settings, it can also convert VI's to a format where the front panel and block diagram are XML-based, so you can easily edit the raw representations of objects.<br> <br><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_08_2015/post-15106-0-07127900-1440095696.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_08_2015/post-15106-0-07127900-1440095696.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=10609" class="ipsImage ipsImage_thumbnailed" alt="post-15106-0-07127900-1440095696.png"></a><br> <br>Here you go. Run "Resource Editor.vi", select a VI (make sure you make a backup first if you care about it), and click Load to load its resources. Click "Load as XML" if you want to edit the front panel and diagram as XML. If you've edited the block diagram at all, make sure to click Fix VI Checksums. Then just click Save once you've made the changes you want.</p>
<p> </p>
<p><strong>EDIT:</strong> Second version is posted; this one should work in LabVIEW 2014, and fixes some bugs. I also added copy/paste buttons for the front panel and block diagram resources, since LabVIEW's built-in copy/paste function didn't seem to work for some reason. Note that if you edit the front panel or block diagram in the VI without using copy/paste (and the size is different), you need to update the size (first 4 bytes) as well. You can do this by clicking Copy and then Paste.<br> <br>Now this may not be too useful for you, considering <strong>it's not something you should use in production code or anything you don't want to break.</strong> (I say that a lot in my posts, don't I?) But if you're curious about how VI's work internally, it's perfect.<br> <br>This requires OpenG. Also, special thanks goes out to Thomas Zeugner for making <a href="http://www.hmilch.net/h/source.html" rel="external nofollow">VI Explorer</a>. You know, that tool for cracking VI passwords. Turns out he figured out how the VI checksum (in the BDPW block) is calculated, which helped me <em>greatly</em>.<br> <br>Oh, one more thing, I do plan on improving it. I was just excited to share what I had. So keep in mind there may be bugs.</p>
<p> </p>
<p><span style="font-size:18px;"><strong>Latest version:</strong></span></p>
<p> </p>
<p><strong>The latest version is posted on the tool's home page, here:</strong> <a href="http://flarn2006.dyndns.org/llvim/" rel="external nofollow">http://flarn2006.dyndns.org/llvim/</a><br><br><span style="font-size:18px;"><strong>Older versions:</strong></span></p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10608" data-fileid="10608" rel="">Low-Level VI Manipulation rev2.zip</a><br><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10592" data-fileid="10592" rel="">Low-Level VI Manipulation.zip</a></p>
]]></description><guid isPermaLink="false">19178</guid><pubDate>Wed, 19 Aug 2015 05:55:18 +0000</pubDate></item><item><title>CNC Gcode Interpreter</title><link>https://lavag.org/topic/21260-cnc-gcode-interpreter/</link><description><![CDATA[<p>
	Hi! I am controlling a virtual cnc (cad in solidworks) with labview. Actually I can control in the x-y axis.
</p>

<p>
	But my problem is with the Gcode Interpreter, the Gcode I generate with GRBL laser but labview can not understand the Gcode. 
</p>

<p>
	Someone can help me? Please I really need for a Project in my university!!
</p>

<p>
	Regards!
</p>
]]></description><guid isPermaLink="false">21260</guid><pubDate>Sat, 02 Nov 2019 20:41:15 +0000</pubDate></item><item><title>G Code Manager</title><link>https://lavag.org/topic/19548-g-code-manager/</link><description><![CDATA[<p>
	<span style="font-size:20px;"><span style="color:#0000ff;">Note: G Code Manager is now available at GitHub:  </span><a href="https://github.com/veritechpl/gcm" rel="external nofollow" style="color:rgb(60,105,148);text-decoration:underline;background-color:rgb(255,255,255);font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;font-style:normal;font-weight:normal;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;"><span style="color:#0000ff;">https://github.com/veritechpl/gcm</span></a></span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:24px;">G Code Manager</span>
</p>

<p>
	GCM is a tool that makes the properties of Project Items in Project Explorer window more accessible, removing unnecessary waiting times and modal windows. In runs in window next to the Project Explorer window and shows the items properties immediately after selecting new item in the explorer.
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11115" href="https://lavag.org/uploads/monthly_04_2016/post-50361-0-46849300-1459927198.png" rel=""><img alt="GCM.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11115" src="https://lavag.org/uploads/monthly_04_2016/post-50361-0-46849300-1459927198.png"></a>
</p>

<p>
	 
</p>

<p>
	GCM also allows you to create your own plugins to access those Project Items! 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;">Requirements</span>
</p>

<p>
	 
</p>

<p>
	The package was built in <strong>LabVIEW 2014</strong>, it should also run in LabVIEW 2015.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;">How to start</span>
</p>

<p>
	 
</p>

<div>
	In the Project Explorer window click on the Tools menu, then select G Code Manager -&gt; Run GCMâ€¦
</div>

<div>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11117" href="https://lavag.org/uploads/monthly_04_2016/post-50361-0-90110000-1459927833.png" rel=""><img alt="runninggcm.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11117" src="https://lavag.org/uploads/monthly_04_2016/post-50361-0-90110000-1459927833.png"></a>
</div>

<p>
	 
</p>

<p>
	<span style="font-size:18px;">Download</span>
</p>

<p>
	<span style="color:#ff0000;"><span style="font-size:18px;">IMPORTANT NOTICE</span></span>
</p>

<p>
	This tool was made using some internal <abbr title="LabVIEW">LV</abbr> APIs which are not fully tested and documented
</p>

<div>
	It is in very early stage when it comes to stability
</div>

<div>
	<span style="color:#ff0000;"><strong>It may cause <abbr title="LabVIEW">LV</abbr> to crash!</strong></span>
</div>

<div>
	<span style="color:#ff0000;">I strongly advise using source control - if you're not using one, do not even install this tool!</span>
</div>

<div>
	(Above statements are really for your own good - I'm using this tool in my everyday work and I don't have any major issues. However, you might accidentaly clear your VI description or icon, or something like that, so be prepared for it by using source control like SVN or Git to revert the changes).
</div>

<div>
	 
</div>

<div>
	<span style="font-size:22px;"><strong>Current Version</strong></span>
</div>

<div>
	<strong>Version 1.14.0.71</strong>
</div>

<div>
	<span style="font-size:22px;">Download: <a class="ipsAttachLink" data-fileid="12210" href="//lavag.org/applications/core/interface/file/attachment.php?id=12210" rel="">veritech_labview_code_manager-1.14.0.71.vip</a></span>
</div>

<div>
	- Added GCM settings screen<br>
	- Added option to automatically open GCM with the project
</div>

<div>
	 
</div>

<div>
	<strong>Older Versions</strong>
</div>

<div>
	Verstion 1.13.0.67
</div>

<div>
	<div>
		<span style="font-size:14px;">Download: <a class="ipsAttachLink" data-fileid="12130" href="//lavag.org/applications/core/interface/file/attachment.php?id=12130" rel="">veritech_labview_code_manager-1.13.0.68.vip</a></span>
	</div>

	<div>
		- Interf<span style="font-size:14px;">ace cosmetics. Smaller window size</span><br>
		- GCM remembers last selected plugin for the project item type<br>
		- Dock button added, which makes GCM window always on front<br>
		- Added support for build specifications: EXE, Installer, RT Exe, FPGA<br>
		- Added VI Window Properties plugin (beta)<br>
		- Added VI Execution Properties plugin (beta)
	</div>
</div>

<div>
	 
</div>

<div>
	 
</div>

<div>
	<div>
		Version 1.11.0.61
	</div>

	<div>
		<a class="ipsAttachLink" data-fileid="11263" href="//lavag.org/applications/core/interface/file/attachment.php?id=11263" rel="">veritech_labview_code_manager-1.11.0.61.vip</a>
	</div>

	<div>
		- Icon Editor: Added "Default Font Settings" which sets the font to 8 pt, centered, capitalized.<br>
		- Fixed the synchronization issue between plugins (icon edited in Icon Editor was not updated in Basic Documentation). <br>
		- Added new incoming events for plugins to better handle items selection/deselection and plugin activation/deactivation (see the attached documentation)
	</div>

	<div>
		Note: <strong>The plugins API was changed in this version. If you've made your plugin in previous versions, please refer to the updated documentation. If you have any problems, just contact me <img alt=";)" data-emoticon="" src="https://lavag.org/uploads/emoticons/default_wink.png" title=";)"></strong>
	</div>

	<div>
		Documentation:
	</div>

	<div>
		<a class="ipsAttachLink" data-fileid="11264" href="//lavag.org/applications/core/interface/file/attachment.php?id=11264" rel="">GCM.pdf</a>
	</div>

	<div>
		 
	</div>
</div>

<div>
	<div>
		Version 1.10.0.58
	</div>

	<div>
		<a data-fileid="11152" href="https://lavag.org/applications/core/interface/file/attachment.php?id=11152" rel="">veritech_labview_code_manager-1.10.0.58.vip</a>
	</div>

	<div>
		- Added Icon Editor for VIs, which currently allows editing the icon text or clearing the icon completely
	</div>

	<div>
		Documentation:
	</div>

	<div>
		<a data-fileid="11153" href="https://lavag.org/applications/core/interface/file/attachment.php?id=11153" rel="">GCM.pdf</a>
	</div>
</div>

<p>
	Version 1.9.0.54
</p>

<p>
	<a data-fileid="11116" href="https://lavag.org/applications/core/interface/file/attachment.php?id=11116" rel="">veritech_labview_code_manager-1.9.0.54.vip</a>
</p>

<p>
	See this document for more information:
</p>

<p>
	<a data-fileid="11119" href="https://lavag.org/applications/core/interface/file/attachment.php?id=11119" rel="">GCM.pdf</a>
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">19548</guid><pubDate>Wed, 06 Apr 2016 07:40:29 +0000</pubDate></item><item><title>Chris Cilino's "C Suite"</title><link>https://lavag.org/topic/21119-chris-cilinos-c-suite/</link><description><![CDATA[<p>
	Rather than have a  bunch of links floating around, I'm creating this "one stop shop" for my contributions to the LabVIEW community. This is my Cilino Suite aka "C Suite".
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">Presentations</span>
</p>

<ul>
	<li>
		<span style="font-size:16px;"><a href="http://bit.ly/ChrisCilino_Presentations" rel="external nofollow">My YouTube Channel of Presentations</a> (bit.ly/ChrisCilino_Presentations) including:</span>

		<ul>
			<li>
				My LabVIEW Champion Interview
			</li>
			<li>
				NIWeek 2018 Keynote Presentation
			</li>
			<li>
				Soliton Customer Testimonial
			</li>
			<li>
				LabVIEW Architect's Forum Q3 2018 - LabVIEW Auto Documentation Software
			</li>
			<li>
				LabVIEW Architect's Forum Q4 2016 - Automated Build Process
			</li>
			<li>
				2018 Certified LabVIEW Architect Summit - Everything a Software Engineer Needs to Know That Has Nothing to Do with Software Engineering
			</li>
			<li>
				My First Keynote Presentation at VIP Days in Germany
			</li>
		</ul>
	</li>
</ul>

<p>
	<span style="font-size:20px;">Code - Reuse Libraries</span>
</p>

<ul>
	<li>
		<span style="font-size:18px;">Automated Build System - Software Module Builder</span>

		<ul>
			<li>
				Summary: A system that turns source into exports. The exports can be of any type. Also determines build order of hierarchical modules, updates dependencies, and allows you to move the exports to the location you need for your end users to find and install the export and its dependencies.
			</li>
			<li>
				<a href="http://bit.ly/ChrisCilino_Builder" rel="external nofollow">Download</a>
			</li>
			<li>
				<a href="https://bitbucket.org/ChrisCilino/software-module-builder/src/master/" rel="external nofollow">BitBucket Repository</a>: <strong><span style="background-color:#fafbfc;color:#172b4d;font-size:14px;">git clone <span><a href="https://bitbucket.org/ChrisCilino/software-module-builder.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/software-module-builder.git</a></span></span></strong>
			</li>
			<li>
				<span style="font-size:18px;">Dependencies</span>
				<ul>
					<li>
						<span style="font-size:14px;">LabVIEW Container</span> (see link below)
					</li>
					<li>
						LabVIEW SCC API
						<ul>
							<li>
								<span style="font-size:14px;">Summary: An API designed to abstract server based source code control providers.</span>
							</li>
							<li>
								<a href="https://bitbucket.org/ChrisCilino/labview-scc-api/src/master/" rel="external nofollow">BitBucket Repository</a><span>: </span><strong><span style="background-color:#ffffff;color:#172b4d;font-size:14px;">git clone <span><a href="https://bitbucket.org/ChrisCilino/labview-scc-api.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/labview-scc-api.git</a></span></span></strong>
							</li>
							<li>
								Distributed as a part of the Automated Build system
							</li>
						</ul>
					</li>
					<li>
						NI Package Manager Build Spec API
						<ul>
							<li>
								<span style="font-size:14px;">Summary: An API to programmatically interact with and edit the LabVIEW NI Package Build Specification.</span>
							</li>
							<li>
								<a href="https://bitbucket.org/ChrisCilino/ni-package-manager-api/src/master/" rel="external nofollow">BitBucket Repository</a>: <strong><span style="background-color:#fafbfc;color:#172b4d;font-size:14px;">git clone <span><a href="https://bitbucket.org/ChrisCilino/ni-package-manager-api.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/ni-package-manager-api.git</a></span></span></strong>
							</li>
							<li>
								Distributed as a part of the Automated Build system
							</li>
						</ul>
					</li>
					<li>
						Custom Install Step Launcher
						<ul>
							<li>
								Summary: Enables NI Package Manager to execute VIs as a Post-Install/Post-Install All/Pre-Uninstall action.
							</li>
							<li>
								<a href="http://bit.ly/ChrisCilino_Builder" rel="external nofollow">Download</a><span>: </span>Distributed as a part of the Automated Build system
							</li>
							<li>
								<a href="https://bitbucket.org/ChrisCilino/custom-install-step-launcher/src/master/" rel="external nofollow">BitBucket Repository</a>: <strong><span style="background-color:#fafbfc;color:#172b4d;font-size:14px;">git clone <span><a href="https://bitbucket.org/ChrisCilino/custom-install-step-launcher.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/custom-install-step-launcher.git</a></span></span></strong>
							</li>
						</ul>
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<span style="font-size:20px;">Software Module Template - NIPKG and VIP</span>
		<ul>
			<li>
				Summary: A template LabVIEW Project designed to be built into an NI Package and VI Package by the Software Module Builder (see above). With this template, a user need only put their code in the "source" directory and edit some build specification information and the build process will do the rest.
			</li>
			<li>
				Distributed with the Software Module Builder
			</li>
			<li>
				<a href="https://bitbucket.org/ChrisCilino/software-module-template-nipkg-vip/src/master/" rel="external nofollow">BitBucket Repository</a>: <strong><span style="background-color:#fafbfc;color:#172b4d;font-size:14px;">git clone <a href="https://bitbucket.org/ChrisCilino/software-module-template-nipkg-vip.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/software-module-template-nipkg-vip.git</a></span></strong>
			</li>
		</ul>
	</li>
	<li>
		<span style="font-size:18px;">Watchdog Framework</span>
		<ul>
			<li>
				Summary: A software observer of "situations" that can notify when something of "interest" happens. The observer is the "WatchDog", the thing being observed is a "Perpetrator", and the notification is a "bark".
			</li>
			<li>
				<a href="http://bit.ly/ChrisCilino_Watchdog" rel="external nofollow">Download</a>
			</li>
			<li>
				<a href="https://bitbucket.org/ChrisCilino/labview-watchdog-framework/src/master/" rel="external nofollow">BitBucket Repository</a>: <strong><span style="background-color:#fafbfc;color:#172b4d;font-size:14px;">git clone <a href="https://bitbucket.org/ChrisCilino/labview-watchdog-framework.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/labview-watchdog-framework.git</a></span></strong>
			</li>
		</ul>
	</li>
	<li>
		<span style="font-size:18px;">Sequencer</span>
		<ul>
			<li>
				Summary: A simple design pattern that organizes code on a single block diagram without the inappropriate/excessive use of subVIs.
			</li>
			<li>
				<a href="http://bit.ly/ChrisCilino_Sequencer" rel="external nofollow">Download</a>
			</li>
			<li>
				<a href="https://bitbucket.org/ChrisCilino/sequencer-pattern/src/master/" rel="external nofollow">BitBucket Repository:</a> <strong><span style="background-color:#fafbfc;color:#172b4d;font-size:14px;">git clone <a href="https://bitbucket.org/ChrisCilino/sequencer-pattern.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/sequencer-pattern.git</a></span></strong>
			</li>
		</ul>
	</li>
	<li>
		<span style="font-size:18px;">Auto Documentation</span>
		<ul>
			<li>
				Summary: Think of this as Doxogen for LabVIEW. Given a Project, Lvlib or .class, this software generates report. The report is "printed" to a confluence page. The software is Object Oriented and designed to be extended through inheritance.
			</li>
			<li>
				<a href="http://bit.ly/ChrisCilino_AutoDoc" rel="external nofollow">Download</a>
			</li>
			<li>
				<a href="https://bitbucket.org/ChrisCilino/labview-auto-documentation/src/master/" rel="external nofollow">BitBucket Repository</a>:  <strong><span style="background-color:#ffffff;color:#172b4d;font-size:14px;">git clone <span><a href="https://bitbucket.org/ChrisCilino/labview-auto-documentation.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/labview-auto-documentation.git</a></span></span></strong>
			</li>
			<li>
				<span style="font-size:18px;">Dependencies</span>
				<ul>
					<li>
						<span style="font-size:14px;">LabVIEW Atlassian / Confluence / Jira APIs</span>
						<ul>
							<li>
								<span style="font-size:14px;">Summary: An API that allows you to control Atlassian assets such as Confluence and JIRA from LabVIEW</span>
							</li>
							<li>
								<a href="https://bitbucket.org/ChrisCilino/labview-atlassian-api/src/master/" rel="external nofollow">BitBucket Repository</a>: <strong><span style="background-color:#fafbfc;color:#172b4d;font-size:14px;">git clone <span><a href="https://bitbucket.org/ChrisCilino/labview-atlassian-api.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/labview-atlassian-api.git</a></span></span></strong>
							</li>
						</ul>
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<span style="font-size:18px;">LabVIEW Container</span>
		<ul>
			<li>
				Summary: A dynamic data structure that combines the strengths of a cluster and an array.
			</li>
			<li>
				<a href="http://bit.ly/lv_container" rel="external nofollow">Download</a>
			</li>
			<li>
				<a href="https://bitbucket.org/ChrisCilino/labview-container/src/master/" rel="external nofollow">BitBucket Repository</a>:<strong> git clone <span><a href="https://bitbucket.org/ChrisCilino/labview-container.git" rel="external nofollow">https://ChrisCilino@bitbucket.org/ChrisCilino/labview-container.git</a></span></strong>
			</li>
		</ul>
	</li>
</ul>

<p>
	<span style="font-size:20px;">History/Credentials/Social Media</span>
</p>

<ul>
	<li>
		<a href="http://bit.ly/ChrisCilino_ChampionProfile" rel="external nofollow">LabVIEW Champion Page</a>
	</li>
	<li>
		<a href="http://bit.ly/ChrisCilino_LinedIn" rel="external nofollow">LinkedIn</a>
	</li>
	<li>
		<a href="http://bit.ly/ChrisCilino_ChampionBadge" rel="external nofollow">LabVIEW Champion Badge</a>
	</li>
	<li>
		<a href="http://bit.ly/ChrisCilino_CLABadge" rel="external nofollow">Certified LabVIEW Architect Badge</a>
	</li>
	<li>
		<a href="https://twitter.com/ChrisCilino" rel="external nofollow">Twitter</a>
	</li>
	<li>
		<a href="https://forums.ni.com/t5/user/viewprofilepage/user-id/41344" rel="external nofollow">NI.com Profile</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">21119</guid><pubDate>Sat, 10 Aug 2019 15:27:44 +0000</pubDate></item><item><title>Wire Studio - more options for customizing class wire appearance</title><link>https://lavag.org/topic/20757-wire-studio-more-options-for-customizing-class-wire-appearance/</link><description><![CDATA[<p>
	<img alt="ss_f3aa8s.png.54519333207bb13a9af949df2150d764.png" class="ipsImage ipsImage_thumbnailed ipsAttachLink_image ipsAttachLink_right" data-fileid="13750" src="https://lavag.org/uploads/monthly_2019_01/ss_f3aa8s.png.54519333207bb13a9af949df2150d764.png" style="width:504px;height:auto;float:right;">You know how you can change the wire appearance for a class in the class properties? As it turns out, LabVIEW internally allows for more flexibility than that dialog gives you. So I made an advanced wire editing tool...and unlike a lot of stuff I post, you can actually use this for serious projects, because it does <strong>not</strong> use any private/unsupported LabVIEW functionality!
</p>

<p>
	With this tool, you can set wire size without limits (with results similar to <a href="https://lavag.org/topic/18493-i-cant-be-the-first-one-to-have-tried-this-xd/" rel="">this</a>), customize both wire layers with any 8x8 monochrome pattern, and also mess with different draw options. Strangely, a few of these settings seem to have no effect, and many of the options for one of them actually crash LabVIEW. (These ones are disabled in my tool, but you can re-enable them by editing a typedef.) Given that this is actually a documented, supported property that's officially supposed to work, I've reported this as a bug to NI; if any NI engineers see this and feel like investigating, you can refer to service request #7762024.
</p>

<p>
	<strong>Latest version:</strong>
</p>

<p>
	<a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13828" data-fileid="13828" rel="">Wire Studio 2.zip</a>
</p>

<p>
	<strong>Old versions:</strong>
</p>

<p>
	<a href="https://lavag.org/applications/core/interface/file/attachment.php?id=13749" data-fileid="13749" rel="">Revision 1</a>
</p>
]]></description><guid isPermaLink="false">20757</guid><pubDate>Mon, 21 Jan 2019 03:42:35 +0000</pubDate></item><item><title>Ad-Hoc VI Scripting shortcut menu plugin: easily manipulate selected items with scripting</title><link>https://lavag.org/topic/20839-ad-hoc-vi-scripting-shortcut-menu-plugin-easily-manipulate-selected-items-with-scripting/</link><description><![CDATA[<p>
	Here's a shortcut menu plugin I wrote that does something I've found myself needing every now and then. You select some objects, right-click, select "Ad-Hoc Scripting", and then it'll open a new VI with pre-populated refnums in a cluster. All selected objects will be included in the cluster, as will a refnum to the VI, its panel, and its diagram.
</p>

<p>
	<img alt="ss_mPnUcE.png.f8bf65de3dedabb76f7f27114f0fd1df.png" class="ipsImage ipsImage_thumbnailed" data-fileid="13936" data-ratio="52.94" width="442" src="https://lavag.org/uploads/monthly_2019_03/ss_mPnUcE.png.f8bf65de3dedabb76f7f27114f0fd1df.png" /><img alt="ss_sSzNmE.png.67183af2d0a990e4102a4111c919d715.png" class="ipsImage ipsImage_thumbnailed" data-fileid="13937" data-ratio="78.11" width="498" src="https://lavag.org/uploads/monthly_2019_03/ss_sSzNmE.png.67183af2d0a990e4102a4111c919d715.png" />
</p>

<p>
	<a class="ipsAttachLink" data-fileid="16444" href="https://lavag.org/applications/core/interface/file/attachment.php?id=16444&amp;key=a712478070b8dba157750f3e7623cb3a" data-fileext="llb" rel="">Ad-Hoc VI Scripting.llb</a>
</p>
]]></description><guid isPermaLink="false">20839</guid><pubDate>Sat, 30 Mar 2019 22:25:03 +0000</pubDate></item><item><title>LabVIEW Watchdog Framework</title><link>https://lavag.org/topic/20850-labview-watchdog-framework/</link><description><![CDATA[<div style="background-color:#ffffff;color:#333333;font-size:16px;">
	<h2 style="color:inherit;font-size:32px;">
		Description
	</h2>
</div>

<div style="background-color:#ffffff;color:#333333;font-size:16px;">
	<p style="font-size:16px;">
		The Watchdog is composed of 3 main sections of code:
	</p>

	<ol>
		<li style="font-size:16px;">
			<strong>Perpetrators</strong>: A perpetrator is something the watchdog knows to monitor or look out for. The most common perpetrator would be "elapsed time". We want the watchdog to notify us if a certain amount of time has elapsed. But...what if you wanted the watchdog to monitor many types of perpetrators? Disk usage? CPU usage? Temperature?  Hence the perpetrator class was born and is a circumstance that the watchdog watches out for.
		</li>
		<li style="font-size:16px;">
			<strong>Barks</strong>: a bark is what happens when the watchdog spots a perpetrator. You might want the watchdog to send you an email, or a text message or write to file or... Hence the "bark" class was born. When the watchdog sees a perpetrator it barks.
		</li>
		<li style="font-size:16px;">
			<strong>Watchdog</strong>: this is the asynchronous engine that monitors perpetrators and barks when it spots a condition.
		</li>
	</ol>

	<p style="font-size:16px;">
		Perpetrators and barks can be extended through inheritance so you can create your own circumstances to monitor and actions to take. The watchdog can monitor N perpetrators and preform M barks. 
	</p>

	<p style="font-size:16px;">
		<span style="font-size:22px;">API Example</span>
	</p>

	<p style="font-size:16px;">
		Below we see an example usage of the watchdog written using the <a href="http://bit.ly/ChrisCilino_Sequencer" rel="external nofollow">Sequencer Pattern</a>
	</p>

	<p style="font-size:16px;">
		First, we create a perpetrator. In this case we want the watchdog to watch for time. If the watchdog is not petted within one second it will bark. Note you can build an array of Perpetrators.
	</p>

	<p style="font-size:16px;">
		<img alt="2019-05-18_16h17_57.png.dea5164d08757d7bded4f14e3ff534fc.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14111" data-ratio="49.64" width="967" src="https://lavag.org/uploads/monthly_2019_05/2019-05-18_16h17_57.png.dea5164d08757d7bded4f14e3ff534fc.png">
	</p>

	<p style="font-size:16px;">
		 
	</p>

	<p style="font-size:16px;">
		WatchDog Bark Configuration. Here we see three barks being configured. The first bark is a dialog box that will appear with the text "My Popup". The second is to send an email. The third is to send a text message.
	</p>

	<p style="font-size:16px;">
		<img alt="2019-05-18_16h13_08.png.8b439feb37e98b8553d886091222aaa0.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14110" data-ratio="52.73" width="969" src="https://lavag.org/uploads/monthly_2019_05/2019-05-18_16h13_08.png.8b439feb37e98b8553d886091222aaa0.png">
	</p>

	<p style="font-size:16px;">
		Last we "set the watcdog loose" to start monitoring our perpetrator. Here you can see we start the watchdog and tell it to monitor perpetrators and preform bark actions. In a for loop we pet the watchdog. Petting the watchdog reset equal to true resets the condition the watchdog was monitoring. So that if it noticed a perpetrator, it will start monitoring again. Because the watchdog is set to monitor a timeout not to exceed one second, it will bark twice. Unless the watchdog is petted again, it will always report that the timeout has occurred each time pet is executed.
	</p>

	<p style="font-size:16px;">
		<img alt="2019-05-18_16h19_57.png.6f42432d0aad857b8060a5ce0a854ba3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14112" data-ratio="51.22" width="943" src="https://lavag.org/uploads/monthly_2019_05/2019-05-18_16h19_57.png.6f42432d0aad857b8060a5ce0a854ba3.png">
	</p>

	<p style="font-size:16px;">
		 
	</p>

	<p style="font-size:16px;">
		<font size="5">UML</font>
	</p>

	<p style="font-size:16px;">
		All UML and API documentation are included in the Word document per released zip file<span>﻿</span>
	</p>

	<p style="font-size:16px;">
		 
	</p>

	<p style="font-size:16px;">
		<img alt="2019-05-18_16h54_27.png.75a0c1f6fd9b8d7cbb34c37e04a6fd7e.png" class="ipsImage ipsImage_thumbnailed" data-fileid="14113" data-ratio="58.71" width="712" src="https://lavag.org/uploads/monthly_2019_05/2019-05-18_16h54_27.png.75a0c1f6fd9b8d7cbb34c37e04a6fd7e.png">
	</p>
</div>

<div style="background-color:#ffffff;color:#333333;font-size:16px;">
	<h2 style="color:inherit;font-size:32px;">
		Software Requirements
	</h2>

	<p style="font-size:16px;">
		LabVIEW 2017
	</p>

	<p style="font-size:16px;">
		<strong><span style="font-size:26px;">Release Notes</span></strong>
	</p>

	<p style="font-size:16px;">
		<strong><span style="font-size:26px;">1.0.0-11</span></strong>(<a class="ipsAttachLink" data-fileext="zip" data-fileid="14000" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14000" rel="">Watchdog 1.0.0-11.zip</a>)
	</p>

	<ol>
		<li style="font-size:16px;">
			Fixed spelling errors and regenerated documentation.
		</li>
	</ol>

	<p style="font-size:16px;">
		<strong><span style="font-size:26px;">1.0.0-9</span></strong> (<a class="ipsAttachLink" data-fileext="zip" data-fileid="13992" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13992" rel="">Watchdog 1.0.0-9.zip</a>)
	</p>

	<ol>
		<li style="font-size:16px;">
			Refactored locations of files on disk to be more structured
		</li>
		<li style="font-size:16px;">
			Completed documentation
		</li>
		<li style="font-size:16px;">
			Using timestamp for timeout perpetrator.
		</li>
		<li style="font-size:16px;">
			Updated example with instructions
		</li>
	</ol>

	<p style="font-size:16px;">
		<strong><span style="font-size:26px;">1.0.0-3 </span></strong>(<a class="ipsAttachLink" data-fileext="zip" data-fileid="13952" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13952" rel="">Watchdog 1.0.0-3.zip</a>)
	</p>

	<ol>
		<li style="font-size:16px;">
			<span style="font-size:14px;">This is the initial release. Very very alpha</span>
		</li>
	</ol>

	<p style="font-size:16px;">
		 
	</p>
</div>
]]></description><guid isPermaLink="false">20850</guid><pubDate>Wed, 03 Apr 2019 19:03:03 +0000</pubDate></item><item><title>The missing "Merge 3D Objects" node</title><link>https://lavag.org/topic/20795-the-missing-merge-3d-objects-node/</link><description><![CDATA[<p>
	You know the 3D Picture control? I was messing with it and I noticed there wasn't any way to merge objects together except by chaining "Add Object" subVI's, which can be annoying if you have a whole lot of objects. I was thinking it could be a good idea to have a growable node to do it, so I decided to make one.
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="13844" src="https://lavag.org/uploads/monthly_2019_02/ss_OCgwGR.png.5a04ed62a304de2e1ef49c1684d2286b.png" alt="ss_OCgwGR.png.5a04ed62a304de2e1ef49c1684d2286b.png">
</p>

<p>
	Yes, a simple For loop (perhaps in a subVI) combined with a Build Array node would work just as well—and would really have simplified the code generation if I had thought to do it before—but I like making XNodes, and thought this would be a fun one. And yes, the usual disclaimer about XNodes applies—use it at your own risk; XNodes aren't supported by NI.
</p>

<p>
	<span style="font-size:24px;"><a class="ipsAttachLink" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13845" data-fileid="13845" rel="">Merge 3D Objects.zip</a></span>
</p>
]]></description><guid isPermaLink="false">20795</guid><pubDate>Sun, 24 Feb 2019 01:11:01 +0000</pubDate></item><item><title>"Place By Style" Quick Drop plugin - like Quick Drop but with every LabVIEW object</title><link>https://lavag.org/topic/20779-place-by-style-quick-drop-plugin-like-quick-drop-but-with-every-labview-object/</link><description><![CDATA[<p>
	There are a bunch of objects in LabVIEW that aren't exposed in the default palettes, and are normally inaccessible except through scripting. I made a Quick Drop plugin that exposes all of these. Many of these are no longer supported, and others never were supported in the first place. Hidden ones are displayed with an "X" next to them to warn you: as I often say, be careful with these, and don't use them in any code you care about, as they can cause crashes, data corruption, and who knows what else!
</p>

<p>
	Download the LLB below and place it in your &lt;LabVIEW install dir&gt;\resource\dialog\QuickDrop\plugins folder. Then press Ctrl+Space, Ctrl+S to open this dialog.
</p>

<p>
	<img alt="ss_v13NwX.png.f1ca4591c5d7e47d397478011b7d0be4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="13820" src="https://lavag.org/uploads/monthly_2019_02/ss_v13NwX.png.f1ca4591c5d7e47d397478011b7d0be4.png">
</p>

<p>
	Select an item from the list and click OK, and there you go. There's some interesting/strange stuff in here!
</p>

<p>
	<strong>EDIT:</strong> Couple things I forgot to mention. The first time you open this (and whenever you rebuild the list) it uses two private properties on the app reference, to get the list of controls and indicators in the palette. Since this is just a property read, I'm sure the worst that could happen is a crash when you try to open the dialog, but I can't make any guarantees. Also there's some false positives for hidden items, mainly with front panel controls/indicators that come in different styles.
</p>

<p>
	<strong><span style="font-size:24px;"><a class="ipsAttachLink" data-fileid="13821" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13821" rel="">Place by Style.llb</a></span></strong>
</p>
]]></description><guid isPermaLink="false">20779</guid><pubDate>Fri, 08 Feb 2019 00:11:41 +0000</pubDate></item><item><title>Writing txt in a excel sheet</title><link>https://lavag.org/topic/20740-writing-txt-in-a-excel-sheet/</link><description><![CDATA[<div style="color:#000000;font-size:12.8px;">
	My project involves designing a front end for a synchronous generator using LabVIEW.
</div>

<div style="color:#000000;font-size:12.8px;">
	 
</div>

<div style="color:#000000;font-size:12.8px;">
	It is actually data acquisition and display of signals in a file.
</div>

<div style="color:#000000;font-size:12.8px;">
	 
</div>

<div style="color:#000000;font-size:12.8px;">
	The problem I face when building a program is that:
</div>

<div style="color:#000000;font-size:12.8px;">
	 
</div>

<div style="color:#000000;font-size:12.8px;">
	1)the sampling rate is set to 100 samples with 1 kHz sampling frequency.These signals are generated by daq assistant and i have used merge signals to merge these signals from daq assistant as well  as signals from other radio buttons and Boolean as well.
</div>

<div style="color:#000000;font-size:12.8px;">
	The problem is that when written on a file I am able to see only one instance of Boolean status for every 100 samples daq assistant creates.
</div>

<div style="color:#000000;font-size:12.8px;">
	 
</div>

<div style="color:#000000;font-size:12.8px;">
	2) now iam able to write only 0/1 as status of Boolean in the file.How will I write on /off into file?
</div>

<p><a href="https://lavag.org/uploads/monthly_2019_01/850874941_blockdiagram3_2.PNG.8839f6b51cfcbc103878caa44573b93f.PNG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="13687" src="https://lavag.org/uploads/monthly_2019_01/1268026472_blockdiagram3_2.thumb.PNG.c3336a9d9f77d678226bddb85f1b59a5.PNG" class="ipsImage ipsImage_thumbnailed" alt="block diagram 3_2.PNG"></a></p>
<p><a href="https://lavag.org/uploads/monthly_2019_01/block3_1.PNG.c05c16ff3851ebc7b5f58062faec5147.PNG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="13686" src="https://lavag.org/uploads/monthly_2019_01/block3_1.thumb.PNG.4c4a85e86efbfdbf79399a9cd3e6fddc.PNG" class="ipsImage ipsImage_thumbnailed" alt="block3_1.PNG"></a></p>]]></description><guid isPermaLink="false">20740</guid><pubDate>Thu, 03 Jan 2019 02:33:27 +0000</pubDate></item><item><title>Continuous Measurement and Logging, redone with &#x201C;Messenging&#x201D; Actors</title><link>https://lavag.org/topic/17783-continuous-measurement-and-logging-redone-with-%E2%80%9Cmessenging%E2%80%9D-actors/</link><description><![CDATA[<p>I’m hoping to add some sample projects to my <a href="http://lavag.org/files/file/220-messenging/" rel="">“Messenging” package</a>, and I thought it would be easy and instructive to rework one of NI’s templates, “Continuous Measurement and Logging”, as it is already somewhat actor-like with three communicating modules.  Attached is a (back-saved for 2011) copy of the NI project, with my version included (run “Main.vi” for the original, “Main.lvclass:Actor.vi” for my version). </p>
<p> </p>
<p> I kept the basic functionality the same, but couldn’t resist changing some of the UI (in the old code, “Main” controls the UI; in the new code, published state messages from the Acquisition and Logging Actors set the UI).</p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8760" data-fileid="8760" rel="">Continuous Measurment and Logging with Messenging.zip</a></p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_11_2013/post-18176-0-55113600-1385471922.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_11_2013/post-18176-0-55113600-1385471922.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=8761" class="ipsImage ipsImage_thumbnailed" alt="post-18176-0-55113600-1385471922.png"></a></p>
<p> </p>
<p> Any comments appreciated.   Is this example less clear than the NI original?  Why?  How could I improve it?</p>
<p> </p>
<p>In particular, is code like this (the most complicated interaction, I think) understandable without heavy documentation?  It’s a “Start Logger, <em>then</em> Start Acquisition, <em>then</em> Unset the Busy Cursor” three-actor chain message:</p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_11_2013/post-18176-0-41257900-1385472396.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_11_2013/post-18176-0-41257900-1385472396_thumb.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=8762" class="ipsImage ipsImage_thumbnailed" alt="post-18176-0-41257900-1385472396_thumb.p"></a></p>
<p>I’m thinking of making a “Send Chain Message” subVI (that accepts arrays of addresses and message labels) to replace the above code.</p>
<p> </p>
<p>— James</p>
]]></description><guid isPermaLink="false">17783</guid><pubDate>Tue, 26 Nov 2013 13:34:29 +0000</pubDate></item><item><title>Multiple text styles</title><link>https://lavag.org/topic/20637-multiple-text-styles/</link><description><![CDATA[<p>
	I was looking for a way to specify text styles programmatically. After some unsuccessful attempts I found an approach that works surprisingly well, using selection and font properties. I wanted to use some HTML-like tags so I wrote a small library to do the work. Also included: A general-purpose 'about' dialog. Enjoy :-)
</p>

<p>
	<a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=o_1cor2akkcuqnkjb1lnv1qat1i83a" rel="">StyledText-LV2010.zip</a>
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="13473" src="https://lavag.org/uploads/monthly_2018_10/StyledText.png.9da3d557cb66986c033257d9c7f3eee8.png" alt="StyledText.png"></p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=13472">StyledText-LV2010.zip</a></p>]]></description><guid isPermaLink="false">20637</guid><pubDate>Tue, 02 Oct 2018 19:27:14 +0000</pubDate></item><item><title>Put your LabVIEW in the Tray -- Once and for all</title><link>https://lavag.org/topic/14060-put-your-labview-in-the-tray-once-and-for-all/</link><description><![CDATA[<p>Hi everyone</p>
<p>A couple of weeks ago i had the need to put a small suite of applications i made in the tray area, but the VIs i could find to do this wasn't really very intuitive or was lacking the functions i needed.</p>
<p>The solution?</p>
<p>Another one of these put-your-LabVIEW-app-in-the-tray toolsets .. but this time, a little better wrapped than the example code you can find on NI's site.. ;-)  (no offense)</p>
<p>So here it is for you to evaluate .. it's not anything near final, and one can always find a number of small features lacking, but hey..it's event based, and its pretty easy to add more events if ever needed :-)</p>
<p><strong>Notes</strong>:</p>
<p>Code is currently for LV8.6 and requires at least .NET Runtime 2.0, but i know for a fact that it runs on Win7 and LV2010..</p>
<p><strong>Installation</strong>:</p>
<p>Unpack / Extract contained "Notify Icon" folder into your user.lib and refresh palettes or restart LabVIEW..</p>
<p><strong>Examples</strong>:</p>
<p>Browse into your user.lib -&gt; Notify Icon palette and drag the "NotifyIcon Class Example" VI to your block diagram (or open it by browsing into the "user.lib\Notify Icon\Example" folder)</p>
<p><strong>License</strong>:</p>
<p>Since i made this code in my sparetime, but planned to be using it at work, i've made arrangements with the grand-old-boss and put a BSD License on it..</p>
<p>Feel free to send me any comments / questions AND bugfixes / error-reports</p>
<p>Thanks</p>
<p>Stinus</p>
<p>Well..since FF4 doesn't want to play nice.. here is the code uploaded using good old IE :-/</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=4248" data-fileid="4248" rel="">Notify Icon.zip</a></p>
]]></description><guid isPermaLink="false">14060</guid><pubDate>Wed, 30 Mar 2011 10:47:34 +0000</pubDate></item><item><title>C code Generator for LabVIEW</title><link>https://lavag.org/topic/20624-c-code-generator-for-labview/</link><description><![CDATA[<p>
	Started some work on a simple C code generator for LabVIEW. 
</p>

<p>
	<a href="https://github.com/taylorh140/LabVIEWCGen" rel="external nofollow">https://github.com/taylorh140/LabVIEWCGen</a>
</p>

<p>
	I was working on some ideas to handle some more complex Items. Had some thought about using 
</p>

<p>
	<a href="https://github.com/rxi/vec" rel="external nofollow">https://github.com/rxi/vec</a> 
</p>

<p>
	To handle strings and other arrays/vectors, I would like to pass these more complex data types by pointer. However I am looking for some ideas as to when to make a copy. I know LabVIEW has some internal item that manages this but I haven't found a way of accessing it quite yet. Let me know if you think this is worth some effort. Or if you have any ideas about the architecture that you think would be helpful.
</p>

<p>
	Also i imagine that this will still only ever support a small subset of LabVIEW, the languages are quite a bit different, and i prefer that the code be as clean as possible.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">20624</guid><pubDate>Sat, 08 Sep 2018 04:17:25 +0000</pubDate></item><item><title>LabVIEW APIs For Confluence \ JIRA and an Auto Documentation API For LabVIEW Classes</title><link>https://lavag.org/topic/20590-labview-apis-for-confluence-jira-and-an-auto-documentation-api-for-labview-classes/</link><description><![CDATA[<p>
	<span style="margin:0px;padding:0px;border:0px;font-size:14px;vertical-align:baseline;font-family:'-apple-system', 'system-ui', BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif;white-space:pre-wrap;background-position:0px 0px;"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-position:0px 0px;">Have you ever needed to programmatically generate a report documenting your LabVIEW Classes? I've released an alpha version of my auto-documentation utility I designed and implemented at Cirrus Logic (</span></span><a href="http://bit.ly/ChrisCilino_AutoDoc" rel="external nofollow">http://bit.ly/ChrisCilino_AutoDoc</a><a href="https://lnkd.in/eAXHGv7)" style="padding:0px;text-decoration:none;margin:0px;font-size:14px;vertical-align:baseline;font-weight:700;border:0px;color:rgb(102,94,208);font-family:'-apple-system', 'system-ui', BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif;white-space:pre-wrap;background-position:0px 0px;" rel="external nofollow">)</a><span style="margin:0px;padding:0px;border:0px;font-size:14px;vertical-align:baseline;font-family:'-apple-system', 'system-ui', BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif;white-space:pre-wrap;background-position:0px 0px;"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-position:0px 0px;">. </span></span>
</p>

<p>
	<span style="margin:0px;padding:0px;border:0px;font-size:14px;vertical-align:baseline;font-family:'-apple-system', 'system-ui', BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif;white-space:pre-wrap;background-position:0px 0px;"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-position:0px 0px;">I designed and created the software in 4 parts. 1) An Atlassian Confluence API, 2) An Atlassian JIRA API, 3) A Class Report generation API, and 4) Two very small "applications" the demonstrate the API's usage. Not only can the APIs \ examples document your code, you can also generate JIRA tickets for the parts of your documentation you're missing. </span></span>
</p>

<p>
	<span style="margin:0px;padding:0px;border:0px;font-size:14px;vertical-align:baseline;font-family:'-apple-system', 'system-ui', BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Fira Sans', Ubuntu, Oxygen, 'Oxygen Sans', Cantarell, 'Droid Sans', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Lucida Grande', Helvetica, Arial, sans-serif;white-space:pre-wrap;background-position:0px 0px;"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-position:0px 0px;">I hope you'll find this software as useful as we at Cirrus Logic have. I would consider it "mid alpha" quality, but intend on investing in it over time. You can find the software at </span></span><a href="http://bit.ly/ChrisCilino_AutoDoc" rel="external nofollow">http://bit.ly/ChrisCilino_AutoDoc</a>
</p>

<p>
	Here's an example of a generated report for the members of a class<img class="ipsImage ipsImage_thumbnailed" data-fileid="13374" src="https://lavag.org/uploads/monthly_2018_07/718x203.png.10ffb0a6ac64b928434900cf18e0f64f.png" alt="718x203.png"></p>

<p>
	The private data also has its own table that looks like<img class="ipsImage ipsImage_thumbnailed" data-fileid="13375" src="https://lavag.org/uploads/monthly_2018_07/751x257.png.54f5d3ffa9321038c923fabf6d3d31ff.png" alt="751x257.png"></p>

<p>
	 
</p>

<p>
	There are many more features to the report, not to mention the APIs used to generate the reports. Also I've created an application to generate JIRA tickets that list the missing parts of a report.
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="13376" src="https://lavag.org/uploads/monthly_2018_07/large.png.fd1c933dcf93abfb92667e93153c7a9d.png" alt="large.png"></p>

<p>
	Enjoy!
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">20590</guid><pubDate>Tue, 31 Jul 2018 01:55:41 +0000</pubDate></item><item><title>SDL2 Wrapper</title><link>https://lavag.org/topic/20579-sdl2-wrapper/</link><description><![CDATA[<p>
	A simple LabVIEW wrapper around the SDL2 DLL and some utility DLLs
</p>

<p>
	There are several test VIs which are my attempt to port the Lazy Foo tutorials.
</p>

<p>
	All images in the Test directory are taken from the Lazy Foo tutorials.
</p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=13363">LabSDL2.zip</a></p>]]></description><guid isPermaLink="false">20579</guid><pubDate>Sun, 22 Jul 2018 20:38:02 +0000</pubDate></item><item><title>Component Builder: an extensible system to build software organized as hierarchical reuse libraries</title><link>https://lavag.org/topic/20517-component-builder-an-extensible-system-to-build-software-organized-as-hierarchical-reuse-libraries/</link><description><![CDATA[<div style="color:rgb(51,51,51);text-transform:none;line-height:1.7142;text-indent:0px;letter-spacing:normal;font-family:Helvetica, Arial, sans-serif;font-size:16px;font-style:normal;font-weight:400;word-spacing:0px;white-space:normal;">
	<h2 style="color:inherit;line-height:1.2;font-family:'Roboto Condensed Light';font-size:32px;font-weight:normal;margin-top:0px;margin-bottom:0px;">
		Overview
	</h2>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		In order to quickly and efficiently prepare source for distribution, a build system was necessary to abstract away the conversion of source into the different types of deliverables (VIPackages, Executables,<span> </span>dlls,<span> </span>ect) as well as abstract away the build order of our software hierarchy.
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Many have undertaken to solve this problem. I don't claim to have created a silver bullet. But I do hope that the system I've put together (and am releasing as open source) will act as a starting point for you to extend and customize to meet your needs. I've endeavored to employ good software development principles including separation of concerns, and the SMoRES principles.
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		 
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		I'll be the first to volunteer that it isn't perfect and as always, our best software is constantly a work in progress. However, I believe the build system is at a stage to be at least moderately helpful to a handful of people in our community. 
	</p>

	<p style="margin:0px;line-height:1.7142;font-family:inherit;font-size:16px;font-weight:normal;">
		 
	</p>
</div>

<div style="color:rgb(51,51,51);text-transform:none;line-height:1.7142;text-indent:0px;letter-spacing:normal;font-family:Helvetica, Arial, sans-serif;font-size:16px;font-style:normal;font-weight:400;word-spacing:0px;white-space:normal;">
	<h2 style="color:inherit;line-height:1.2;font-family:'Roboto Condensed Light';font-size:32px;font-weight:normal;margin-top:0px;margin-bottom:0px;">
		Description
	</h2>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		 
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		<font size="5">The Application's UI</font>
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		The UI is designed to guide someone through the build process, allowing them to select what components or exports they would like to build, if and how they would like to be notified about the build, auto submission options, and source code control. I've attached a small video titled "Build UI Demo.mp4" below.
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		<font size="5">UML and APIs</font>
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		All UML and API documentation are included in the Word document per released zip file
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		 
	</p>

	<p style="margin:0px;line-height:1.7142;font-family:inherit;font-size:16px;font-weight:normal;">
		 
	</p>
</div>

<div style="color:rgb(51,51,51);text-transform:none;line-height:1.7142;text-indent:0px;letter-spacing:normal;font-family:Helvetica, Arial, sans-serif;font-size:16px;font-style:normal;font-weight:400;word-spacing:0px;white-space:normal;">
	<h2 style="color:inherit;line-height:1.2;font-family:'Roboto Condensed Light';font-size:32px;font-weight:normal;margin-top:0px;margin-bottom:0px;">
		Software Requirements
	</h2>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		LabVIEW 2017
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		NI Application Builder
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		VI Package Manager Pro
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Other dependencies are listed in the Instructions per zip file.
	</p>

	<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		 
	</p>
</div>

<div style="color:rgb(51,51,51);text-transform:none;line-height:1.7142;text-indent:0px;letter-spacing:normal;font-family:Helvetica, Arial, sans-serif;font-size:16px;font-style:normal;font-weight:400;word-spacing:0px;white-space:normal;">
	<h2 style="color:inherit;line-height:1.2;font-family:'Roboto Condensed Light';font-size:32px;font-weight:normal;margin-top:0px;margin-bottom:0px;">
		UML Overview
	</h2>

	<p>
		As of 1.4.0-58 the UML looks like:
	</p>

	<h2 style="color:inherit;line-height:1.2;font-family:'Roboto Condensed Light';font-size:32px;font-weight:normal;margin-top:0px;margin-bottom:0px;">
		<img alt="2019-02-28_11h15_24.png.25326f7b20786fc87b5e15bfc34d09cf.png" class="ipsImage ipsImage_thumbnailed" data-fileid="13889" src="https://lavag.org/uploads/monthly_2019_02/2019-02-28_11h15_24.png.25326f7b20786fc87b5e15bfc34d09cf.png">
	</h2>

	<p>
		 
	</p>
</div>

<div>
	<h2>
		<a class="ipsAttachLink" data-fileext="mp4" data-fileid="13284" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13284" rel="">Build UI Demo.mp4</a>
	</h2>
</div>

<h2 style="color:inherit;line-height:1.2;font-family:'Roboto Condensed Light';font-size:32px;font-weight:normal;margin-top:0px;margin-bottom:0px;">
	 
</h2>

<h2 style="color:inherit;line-height:1.2;font-family:'Roboto Condensed Light';font-size:32px;font-weight:normal;margin-top:0px;margin-bottom:0px;">
	Release Notes
</h2>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-123 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="14152" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14152" rel="">Component Builder 1.4.0-123.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added new NI Package Manager API
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added new NI Package Manager BuildSpec Utils 
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added procedure and documentation for the component template and its anatomy
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-113 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="14137" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14137" rel="">Component Builder 1.4.0-113.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added documentation for the SCC API
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-111 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="14109" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14109" rel="">Component Builder 1.4.0-111.zip</a>)
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-99 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="14076" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14076" rel="">Component Builder 1.4.0-99.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added a few new P4 API functions allowing the creation of a session if a user is already logged it. 
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added Log in and log out tests to the test suite. 
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Adding new function to tag all p4 paths in a label with the label.
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Resolving the input path to a p4 depot path
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Adding quotes around p4 paths.<br>
		 
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-91 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="14065" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14065" rel="">Component Builder 1.4.0-91.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		The refactor of the LabVIEW SCC API is complete and the build process is linked to the new install location. The LabVIEW SCC API can now be used independently of the Component Build process. 
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		I've included a test suite for the P4 implementation of the SCC API. It assumes that you have checked in the two files in the "Build Instructions\LabVIEW SCC API\Test Suite\Tests\Test Dir" into perforce.
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-85 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="14047" href="https://lavag.org/applications/core/interface/file/attachment.php?id=14047" rel="">Component Builder 1.4.0-85.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		This is a major refactor in the SCC API. I've modeled the p4 label with a new api. This release is primarily as an intermediary release. I intend on breaking SCC out of the component builder into its own separate component in the next release.
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-81 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="13979" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13979" rel="">Component Builder 1.4.0-81.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Created a "proxy" api for VI Package manager interactions. Sometimes the VI Package manager api would hang. So I now call by reference and will kill and restart VIPM if it doesn't respond in time. 
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-75 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="13926" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13926" rel="">Component Builder 1.4.0-75.zip</a> )
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Fixed reference counting for executable builds. 
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-73 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="13918" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13918" rel="">Component Builder 1.4.0-73.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		In the case where a user has specifically unchecked "auto increment", the build process will auto increment the build. Builds must be auto incremented. 
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		I've released a new build of the container that has a minor bug fix.
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added file utility tools to aid with using "net use" to move and copy files across the network.
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-59 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="13896" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13896" rel="">Component Builder 1.4.0-59.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Minor spelling error in component template: "componet".
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added documentation for the Custom Install Step Launcher.
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added build instructions for Custom Install Step Launcher.
	</li>
</ol>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	 
</p>

<p style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
	1.4.0-58 (<a class="ipsAttachLink" data-fileext="zip" data-fileid="13888" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13888" rel="">Component_Builder_1.4.0-58.zip</a>)
</p>

<ol>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Added the ability to export NI-Source Distributions, NI-Executables, NI-Insatllers, and NSIS Installers
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Released a template component that exports an NI Package and VI Package including step by step instructions
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Released "Custom Install Step Launcher" to execute VIs as pre install, post install and post install all actions for NI Packages.
	</li>
	<li style="margin:0px;line-height:1.7142;padding-left:30px;font-family:inherit;font-size:16px;font-weight:normal;">
		Released comprehensive documentation included in the zip file.
	</li>
</ol>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="13176" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13176" rel="">Component_Builder_5_31_2018.zip</a>
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="13489" href="https://lavag.org/applications/core/interface/file/attachment.php?id=13489" rel="">Component_Builder_10_11_2018.zip</a>
</p>
]]></description><guid isPermaLink="false">20517</guid><pubDate>Fri, 11 May 2018 14:48:30 +0000</pubDate></item><item><title>LabVIEW Tray Launcher</title><link>https://lavag.org/topic/11333-labview-tray-launcher/</link><description><![CDATA[<p>So here's a personal project I've been working on for a little while. Basically it's a LabVIEW version launcher, with a few other useful features. I developed this for my own benefit, and it has helped with my productivity, if you don't like it or think it's unnecessary that's fine you're welcome to give your opinion, but I find it useful and for that reason I'm putting it out there for others to try.</p>
<p>What this program does is adds a icon in your system tray (by the clock) that you can right click, and launch any version of LabVIEW installed. If you try to launch a version of LabVIEW that is already running it will bring it into focus based on it's processor ID. </p>
<p>You can also right click the icon and launch any version of TestStand installed. This has not been tested very much and it may not work properly.</p>
<p>You can also right click the icon and kill any version of LabVIEW that may have hung or is unresponsive. This performs a taskkill on any one version, or all versions of LabVIEW running.</p>
<p>You can also right click the icon and abort any running LabVIEW VI in any version of LabVIEW (after you configure the program to use the right ports for you versions of LabVIEW). There is a limitation with this at the moment where it can't abort a VI that was opened from a project file. Not sure how to get around this any help is appreciated.</p>
<p>And lastly what this program does is whenever a VI is ran in windows (double click a VI) this program will take over, and determine what versions of LabVIEW installed it can be opened with. If more than one version is suitable then it will ask you what version to open it with. Here it will also show what versions are running and which one is the default version. By pressing (or holding) CTRL when the window comes up it will open the VI with the default version of LabVIEW. This can be changed by double clicking the icon in the system tray to open with the default version, and only ask which version to open it with by holding CTRL.</p>
<p><img src="http://i253.photobucket.com/albums/hh75/hooovahh/LVTrayLauncher2.jpg" alt="LVTrayLauncher2.jpg"></p>
<p>Now that you're interested here's how to use it. First you'll need to download and install an ActiveX component, that allows you to make icons in your system tray (posted by KileenC <a href="http://forums.ni.com/ni/board/message?board.id=170&amp;message.id=95141#M95141" rel="external nofollow">here</a>).</p>
<p><a href="http://forums.ni.com/ni/attachments/ni/170/95141/1/LabVIEWTrayIcon.zip" rel="external nofollow">http://forums.ni.com...IEWTrayIcon.zip</a></p>
<p>Then download <abbr title="LabVIEW">LV</abbr> Tray Launcher EXEs Only <a href="https://lavag.org/applications/core/interface/file/attachment.php?id=1197" data-fileid="1197" rel=""><abbr title="LabVIEW">LV</abbr> Tray Launcher EXEs Only 1.0.zip</a> If you have LabVIEW 7.1 runtime installed, run LVTrayLauncher.exe. You should now have an icon in your system tray that looks like a space ship. If not check your task manager and see that both axsTrayIcon.exe and LVTrayLauncher.exe are running. If they aren't kill them both and start axsTrayIcon.exe, then start LVTrayLauncher.exe.</p>
<p><img src="http://i253.photobucket.com/albums/hh75/hooovahh/LVTrayLauncher.jpg" alt="LVTrayLauncher.jpg"></p>
<p>If you don't have LabVIEW 7.1 runtime installed I do have a runtime less EXE but I'm not sure if it's legal to post it since it contains files that are NIs and I would be copying them to my own server. Any opinions out there about the legality?</p>
<p>If you want to see the source, it's attached and saved in 7.1. There is also a readme in each of the attachments with a little more insite into the application. Alot of the source is just pieces of code from LAVA and NI's forums, I tried crediting everyone in the about window, but if you see some code that you think may be yours please let me know so I can give proper credit those that helped.</p>
<p>Any questions or comments are welcome, but I don't know how much spare time I'm going to have to support this. So sorry if this is the only version ever released.</p>
<p>EDIT: Forgot to mention, here the packages I used:</p>
<p>nirsc_html_help_common 2.0-1</p>
<p>oglib_array 2.7-1</p>
<p>oglib_error 2.3-2</p>
<p>oglib_lvdata 2.9-1</p>
<p>oglib_string 2.6-1</p>
<p>oglib_time 2.3-2</p>
<p>oglib_variantconfig 2.7-2</p>
<p>ogrsc_dynamicpalette 0.18-1</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=1198" data-fileid="1198" rel="">Tray Program Source 1.0.zip</a></p>
]]></description><guid isPermaLink="false">11333</guid><pubDate>Fri, 30 Oct 2009 18:07:20 +0000</pubDate></item><item><title>SQLite error "Unable to open the database file"</title><link>https://lavag.org/topic/20411-sqlite-error-unable-to-open-the-database-file/</link><description><![CDATA[<p>
	Hi,
</p>

<p>
	<font face="sans-serif" size="2">I am getting error from SQLite while reading the database file. Error is </font><br><font face="sans-serif" size="2">"Unable to open database file". I am using SQLite from last 1 month and didnt </font><br><font face="sans-serif" size="2">encouter this error before. Suddenly, from yesterday SQLite is started giving </font><br><font face="sans-serif" size="2">this error and is random.</font><br><br><font face="sans-serif" size="2">What could be the resolution? Please find attached herewith my example code and </font><br><font face="sans-serif" size="2">the SQLite error</font>
</p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12879">SQLite error.zip</a></p>]]></description><guid isPermaLink="false">20411</guid><pubDate>Thu, 25 Jan 2018 11:32:17 +0000</pubDate></item><item><title>Variant Array to Cluster Xnode</title><link>https://lavag.org/topic/20284-variant-array-to-cluster-xnode/</link><description><![CDATA[<p>
	After working on the set cluster element by name xnode, it made me realize i could use the same concept to convert a variant array to a cluster. The technique is actually pretty simple, the xnode generates a case structure for each element in a cluster in cluster order, wherein a bundle by name is used to set the value and an unbundle by name is used to get the type, a variant to data is used to convert the data. This has some benefits over some methods, you are not limited to 255 elements, although that is not usually the case some of us are paranoid that clusterosaurus giganticous will be larger than expected. It also has a draw back <img alt=":o" data-emoticon="" src="https://lavag.org/uploads/emoticons/default_ohmy.png" title=":o"> that is that when converting from a variant array all the elements must have unique, non-blank names, and this is usually the case. <br><br>
	I think this technique (though very brute-force) might be useful for some other things let me know what you guys think.
</p>
<p><a href="https://lavag.org/uploads/monthly_2017_09/Capture.PNG.a825240c33562eae55f74ee50db340f1.PNG" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="12644" src="https://lavag.org/uploads/monthly_2017_09/Capture.thumb.PNG.0eff9202bf942091baa85120eae0f538.PNG" class="ipsImage ipsImage_thumbnailed" alt="Capture.PNG"></a></p>
<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12645">VariantArrayToCluster.zip</a></p>]]></description><guid isPermaLink="false">20284</guid><pubDate>Thu, 07 Sep 2017 03:50:05 +0000</pubDate></item><item><title>Set Cluster Element Xnode (experimental)</title><link>https://lavag.org/topic/20246-set-cluster-element-xnode-experimental/</link><description><![CDATA[<p>
	This Xnode allows setting a cluster element by label string without using references. I pulled a great deal of inspiration from Hooovahhs Variant Array to cluster xnode, which i suppose this could be used for, another benefit is its not limited to 255 elements. Its mostly experimental because I haven't used it much. 
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink" data-fileid="12583" href="//lavag.org/applications/core/interface/file/attachment.php?id=12583" rel="">SetClusterElement.zip</a>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_2017_08/2017-08-15_12-51-47.png.0920bdba5187951477a8b9912856b2d2.png" data-fileid="12584" rel=""><img alt="2017-08-15_12-51-47.png" class="ipsImage ipsImage_thumbnailed" data-fileid="12584" src="https://lavag.org/uploads/monthly_2017_08/2017-08-15_12-51-47.png.0920bdba5187951477a8b9912856b2d2.png"></a>
</p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12592">SetClusterElementLV2013.zip</a></p>]]></description><guid isPermaLink="false">20246</guid><pubDate>Tue, 15 Aug 2017 17:48:33 +0000</pubDate></item><item><title>Async XNodes</title><link>https://lavag.org/topic/20065-async-xnodes/</link><description><![CDATA[<p>
	I've developed a few experimental XNodes to assist with running VIs asynchronously.
</p>

<p>
	<img alt="async.png" class="ipsImage ipsImage_thumbnailed" data-fileid="12167" src="https://lavag.org/uploads/monthly_2017_03/async.png.9b1ed3ec4e5081a94a4b26208eee2a73.png"></p>

<p>
	The ones pictured here are <abbr title="LabVIEW">LV</abbr>-Async.xnode and <abbr title="LabVIEW">LV</abbr>-Await.xnode. You can drag a VI onto <abbr title="LabVIEW">LV</abbr>-Async. It will open or check out (more on this later) a VI reference with code x100. <abbr title="LabVIEW">LV</abbr>-Await.xnode will Wait on Asynchronous Call, but instead of closing the reference it will check it in to a lookup table to be later used by <abbr title="LabVIEW">LV</abbr>-Async.xnode. The benefit of this is that when used with a reentrant VI, the asynchronous hierarchy will not go idle, so reference types created in the hierarchy will not go bad. There is an example in the VI package that demonstrates this behavior. The downside is that the memory the hierarchy uses does not get freed (subsequent async/await calls do not leak memory though since the hierarchy is being reused).
</p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Async-And-Forget.xnode opens the VI reference with code x80 and closes it after running the VI asynchronously.
</p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Async-Or-Show.xnode is meant for non-reentrant UI VIs. If the VI's front panel is not open, it will run the VI with option x80. If the front panel is open, it will bring the front panel to the front.
</p>

<p>
	Attached is a VI package that will add these nodes to your palettes, along with a couple package dependencies.
</p>

<p>
	Source code for <abbr title="LabVIEW">LV</abbr>-Async is here: <a href="https://github.com/erdosmiller/lv-async" rel="external nofollow">https://github.com/erdosmiller/<abbr title="LabVIEW">lv</abbr>-async</a>
</p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Async requires LabVIEW 2015 or later. Let me know what you think!
</p>

<p>
	<a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12168" data-fileid="12168" rel="">lv_async-1.0.0.12.vip</a>
</p>

<p>
	<a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12169" data-fileid="12169" rel="">lv_scripting-0.7.0.6.vip</a>
</p>

<p>
	<a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12170" data-fileid="12170" rel="">lv_vi-0.0.0.5.vip</a>
</p>
]]></description><guid isPermaLink="false">20065</guid><pubDate>Thu, 16 Mar 2017 12:31:06 +0000</pubDate></item><item><title><![CDATA[DereferenceByName Xnode ( -> operator in C)]]></title><link>https://lavag.org/topic/20207-dereferencebyname-xnode-operator-in-c/</link><description><![CDATA[<p>
	I've been working a lot lately with by-reference architectures that still cooperate completely with LabVIEW's implementation of OOP and polymorphism. I've also recently taken an interest in trying to speed up development with secondary providers (similar to GOOP) to enable automatic creation of accessor VIs hidden behind the DVR, automatic creation of the private data type and constructor/destructor, etc. within the project window. I'm generally not a fan of the extra stuff that goop adds in to classes, I'd prefer to keep the source code looking as close to a normal class as possible.
</p>

<p>
	That said, I've started on my first ever XNode and it's a cross between an unbundle by name node and the -&gt; operator in C. It functions just like a normal UBN, however it was also pull items out of DVRs. Having to plop down a UBN to pull out the reference from the class, an in place node to dereference, and then another UBN to pull the data out gets tiresome after about the 100th property VI gets written.
</p>

<p>
	So far I've gotten the node drawing completed (except for data type coloring of the labels), the type inferencing from the input wire, and the popup menu for selecting an item. Next up will be the menu selection code so that the names will finally show up in the terminals! Then I get the daunting task of scripting up the GenerateCode ability &gt;_&gt;
</p>

<p>
	Anyone interested in something like this? Following this will be a match to the Bundle by Name node that serves the same purpose except to write the items.
</p>

<p><a href="https://lavag.org/uploads/monthly_2017_07/596a4ee8d7abf_DerefNode.png.e3849118f1f0d8c0159663d0c2bf52ed.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="12494" src="https://lavag.org/uploads/monthly_2017_07/596a4ee8d7abf_DerefNode.png.e3849118f1f0d8c0159663d0c2bf52ed.png" class="ipsImage ipsImage_thumbnailed" alt="Deref Node.png"></a></p>
<p><a href="https://lavag.org/uploads/monthly_2017_07/TypeReflectionProgress.png.bae854d9c811a085c6a33eb5b0f0bcf1.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="12495" src="https://lavag.org/uploads/monthly_2017_07/TypeReflectionProgress.png.bae854d9c811a085c6a33eb5b0f0bcf1.png" class="ipsImage ipsImage_thumbnailed" alt="TypeReflectionProgress.png"></a></p>
<p><a href="https://lavag.org/uploads/monthly_2017_07/TypeReflectionCluster.png.7a2a316e44806af54e96c0acbfef2d6c.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="12496" src="https://lavag.org/uploads/monthly_2017_07/TypeReflectionCluster.png.7a2a316e44806af54e96c0acbfef2d6c.png" class="ipsImage ipsImage_thumbnailed" alt="TypeReflectionCluster.png"></a></p>]]></description><guid isPermaLink="false">20207</guid><pubDate>Sat, 15 Jul 2017 17:25:47 +0000</pubDate></item><item><title>***Experimental*** Control References XNode</title><link>https://lavag.org/topic/20060-experimental-control-references-xnode/</link><description><![CDATA[<p>
	<img alt="controlrefs.png" class="ipsImage ipsImage_thumbnailed" data-fileid="12157" src="https://lavag.org/uploads/monthly_2017_03/controlrefs.png.4808ae5c50eab5363a58d3c3d07477e0.png"></p>

<p>
	Attached is a VI Package that will add <abbr title="LabVIEW">LV</abbr>-Control-Refs.xnode to your palette. This node, when dropped on the block diagram or double clicked, will update its output to a cluster of references to all controls in the VI. Controls in tabs show up as &lt;Tab Control Name&gt;:&lt;Page Name&gt;.Control Label. Nested tab controls with arbitrary depth are supported. You can bind the output of the node to an existing typedef by right-clicking on it.
</p>

<p>
	I've used this node for awhile, but the tab support was added very recently and was a significant change. I've also attached a scripting library I maintain that this XNode depends on.
</p>

<p>
	And source for the scripting library is here: <a href="https://github.com/erdosmiller/lv-scripting" rel="external nofollow">https://github.com/erdosmiller/<abbr title="LabVIEW">lv</abbr>-scripting</a>
</p>

<p>
	I wrote this node because several times I've found myself bundling nearly all the control references in a VI into a cluster. It requires LabVIEW 2015 or later. Let me know what you think!
</p>

<p>
	<a class="ipsAttachLink" data-fileid="12159" href="//lavag.org/applications/core/interface/file/attachment.php?id=12159" rel="">lv_scripting-0.7.0.6.vip</a>
</p>
]]></description><guid isPermaLink="false">20060</guid><pubDate>Wed, 15 Mar 2017 19:16:36 +0000</pubDate></item><item><title>LabVIEW Task Manager</title><link>https://lavag.org/topic/14921-labview-task-manager/</link><description><![CDATA[<p>Are there any existing task managers specific to LabVIEW? I am looking for a task manager that is capable of:</p>
<ul><li>Listing running VIs along with memory usage and refnum</li>
<li>Aborting a running VI</li>
<li>Showing or hiding a block diagram or front panel</li>
</ul><br><p>I have searched on google and the NI forums with no luck.</p>
<p> </p>
<p>Update:</p>
<p>Bitbucket Repository - <a href="https://bitbucket.org/lavag/labview-task-manager" rel="external nofollow">https://bitbucket.org/lavag/labview-task-manager</a></p>
<p>Code Repository Page - <a href="http://lavag.org/files/file/245-labview-task-manager/" rel="">http://lavag.org/files/file/245-labview-task-manager/</a></p>
]]></description><guid isPermaLink="false">14921</guid><pubDate>Wed, 14 Sep 2011 19:04:14 +0000</pubDate></item><item><title>Tagged Union XNodes</title><link>https://lavag.org/topic/20066-tagged-union-xnodes/</link><description><![CDATA[<p>
	I always loved this idea exchange idea to add sum types to LabVIEW: <a href="https://forums.ni.com/t5/LabVIEW-Idea-Exchange/New-Enum-Class-Primitive-quot-The-Defined-Enum-quot-with/idi-p/1904525" rel="external nofollow">https://forums.ni.com/t5/LabVIEW-Idea-Exchange/New-Enum-Class-Primitive-quot-The-Defined-Enum-quot-with/idi-p/1904525</a>
</p>

<p>
	I was sad to see that it was dismissed as being classes. I think there are differences, and that having these kinds of types in LabVIEW could be nice, so I jank implemented them using XNodes:
</p>

<p>
	<img alt="taggedunion.png" class="ipsImage ipsImage_thumbnailed" data-fileid="12171" src="https://lavag.org/uploads/monthly_2017_03/taggedunion.png.71ffcacb549006d90922c402d78aa98c.png"></p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Define-Tagged-Union.xnode takes an enumeration and a cluster as inputs. If certain enum values have data associated with them, the cluster should contain an element with the appropriate type and the same name as the corresponding enum selection. The output of this node is an enum &amp; variant cluster or "tagged union". This output can be bound to an existing typedef by right-clicking on the node.
</p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Construct-Tagged-Union.xnode takes a tagged union created by the define node at the top input and gives you a drop down menu. The input type adapts appropriately.
</p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Case-Tagged-Union.xnode goes inside a case structure. It's output type adapts based on the frame it is in.
</p>

<p>
	Source code can be found here: <a href="https://github.com/erdosmiller/lv-tagged-union" rel="external nofollow">https://github.com/erdosmiller/<abbr title="LabVIEW">lv</abbr>-tagged-union</a>
</p>

<p>
	I've attached a VI package that will add these XNodes to your palette, along with a package that will install a scripting library that this depends on. I wrote this awhile ago, so I don't remember all the details, but some types like .NET references may not be supported yet.
</p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Tagged-Union requires LabVIEW 2015 or later. Let me know what you think!
</p>

<p>
	<a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12172" data-fileid="12172" rel="">lv_tagged_union-0.0.0.7.vip</a>
</p>

<p>
	<a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12173" data-fileid="12173" rel="">lv_scripting-0.7.0.6.vip</a>
</p>
]]></description><guid isPermaLink="false">20066</guid><pubDate>Thu, 16 Mar 2017 13:22:49 +0000</pubDate></item><item><title>Signals XNodes</title><link>https://lavag.org/topic/20067-signals-xnodes/</link><description><![CDATA[<p>
	This is an experimental set of XNodes that puts a set of values in a DVR, lets you access them, and generates user events when one of the elements changes.
</p>

<p>
	<img alt="signals.png" class="ipsImage ipsImage_thumbnailed" data-fileid="12174" src="https://lavag.org/uploads/monthly_2017_03/signals.png.a6b456685ba74199907b57b9ffa1b2d7.png"></p>

<p>
	<abbr title="LabVIEW">LV</abbr>-Create-Signals.xnode takes a cluster at the input, and outputs a cluster of a DVR with the input cluster in it, and an event for each element in the cluster. The output can be bound to an existing typedef by right-clicking on the node.
</p>

<p>
	The data is accessed via <abbr title="LabVIEW">LV</abbr>-Read-Write-Signals.xnode. It's similar to a property node, and allows access to cluster elements, array elements, and array subsets. If you write an element and change its value, the corresponding event is generated.
</p>

<p>
	Attached is a VI package that will add these nodes to your palette, along with a scripting library that these nodes depend on. LabVIEW 2015 or later is required.
</p>

<p>
	The source code can be found here: <a href="https://github.com/erdosmiller/lv-signals" rel="external nofollow">https://github.com/erdosmiller/<abbr title="LabVIEW">lv</abbr>-signals</a>
</p>

<p>
	I made these because I commonly use a DVR &amp; user events for exposing data from a module. Let me know what you think!
</p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12176">lv_signals-0.0.1.7.vip</a></p>
<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=12177">lv_scripting-0.7.0.6.vip</a></p>]]></description><guid isPermaLink="false">20067</guid><pubDate>Thu, 16 Mar 2017 14:05:13 +0000</pubDate></item><item><title>Compact Index Array</title><link>https://lavag.org/topic/19873-compact-index-array/</link><description><![CDATA[<p>
	In response to <a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/A-more-compact-form-of-Index-Array-for-constant-index-values-and/idi-p/3363207" rel="external nofollow">this Idea</a>, and to refresh my xnode coding, here's a compact form of Index Array with fixed indices (double-click to change).  Thanks to hoovah for his XNode Editor!
</p>

<p>
	<img alt="CIA.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11805" src="https://lavag.org/uploads/monthly_2016_11/CIA.png.405a677a017d2d56e44fdbb8c52200c5.png"></p>

<p>
	<a class="ipsAttachLink" data-fileid="11804" href="//lavag.org/applications/core/interface/file/attachment.php?id=11804" rel="">CompactIndexArray.zip</a>
</p>
]]></description><guid isPermaLink="false">19873</guid><pubDate>Thu, 03 Nov 2016 01:14:31 +0000</pubDate></item><item><title>labview vi</title><link>https://lavag.org/topic/19858-labview-vi/</link><description><![CDATA[<p style="margin:1em 0px;padding:0px 0px 1em;color:rgb(76,93,119);font-family:Verdana, 'sans serif';font-size:11.52px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);">
	hey everybody... 
</p>

<p style="margin:1em 0px;padding:0px 0px 1em;color:rgb(76,93,119);font-family:Verdana, 'sans serif';font-size:11.52px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);">
	im working on labview
</p>

<p style="margin:1em 0px;padding:0px 0px 1em;color:rgb(76,93,119);font-family:Verdana, 'sans serif';font-size:11.52px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);">
	im trying to make a logic like.. i have few string which contains serial data to a firmware for a handle movement , handle moves in circular motion. like 30, 60, 90 degrees..
</p>

<p style="margin:1em 0px;padding:0px 0px 1em;color:rgb(76,93,119);font-family:Verdana, 'sans serif';font-size:11.52px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);">
	if 30 is pressed\enterd the string corrrosponding to 30 degree should be sent on my serial port. and vi should count numbers on each string sent 
</p>

<p>
	thanks in advance and hoping for quick and positive replies
</p>
]]></description><guid isPermaLink="false">19858</guid><pubDate>Tue, 18 Oct 2016 07:56:08 +0000</pubDate></item><item><title>OBEX OPP Over Bluetooth</title><link>https://lavag.org/topic/9932-obex-opp-over-bluetooth/</link><description><![CDATA[<p>Hi Peeps.</p>
<p>I thought I'd put this out into the wild before completion because I'm not going to get around to it again for another few months and as I've not seen anything else around; thought it might be useful.</p>
<p>It's a partial implementation of the OBEX protocol with an example of the OBEX Object Push Profile over bluetooth for sending files to mobile devices (vards,vcalendars, images,music etc).</p>
<p>Load up the BT Push File.vi (top directory) and set the address and you should be good to go to send files to your mobile phone.</p>
<p>The example has been tested on both the Microsoft and Widcomm stack to send files to samsung (U600, i8510) and nokia (N95,N81) phones without any problems, but (as with any new software) I am expecting a few teething problems so let me know and (no promises) I'll see what I can do.</p>
<p>If you are using the Widcomm stack. I would suggest pairing first because Widomm requires authentication and the authentication manager takes quite a while to pair so you will time out. The Microsoft stack doesn't require authentication first so need to pair at all.</p>
<p><a href="http://lavag.org/old_files/monthly_04_2009/post-15232-1240155321.zip" rel="">Download File:post-15232-1240155321.zip</a></p>
]]></description><guid isPermaLink="false">9932</guid><pubDate>Mon, 20 Apr 2009 17:04:24 +0000</pubDate></item><item><title>Window Drag and Drop (bodge)</title><link>https://lavag.org/topic/19727-window-drag-and-drop-bodge/</link><description><![CDATA[<p>
	This VI demonstrates how you can bodge a VI to accept drag and drops of files and folders just like a path control (without losing any mouse click/move event functionality).
</p>

<p>
	Path controls have an API for dragging and dropping Files/folders from the OS, or correctly formatted strings from Excel. While an acceptable drag-and-drop operation is underway the path control adds a dotted box to the control (I'm calling this a target box). However this behavior is not available for other objects such as panes or other controls. So Bodging time.
</p>

<p>
	<u><strong>DragandDropBodge.vi</strong></u> (attached to the original lavag.org post) has a transparent Path control (set to 'Scale object with pane') that in all the use cases where a drag and drop is possible is set to Visible=True, and in all the use cases where the user would click on an object within the pane is set to Visible=False. I am using a shift register and the Timeout case to Visible=False the Path control, but for a more complex VI or when you have an existing need for the Timeout Case, you can manage this with a user event.
</p>

<p>
	Other implementations:
</p>

<p>
	This could be used to bodge drag-and-drop for a xy graph or other indicator instead of the pane at large. Or by capturing the cursor position at the moment of 'value update' for the path control a drag and drop could update a specific line in a tree/table/array.
</p>

<p>
	 
</p>

<p>
	Hope this helps when you are searching with the same keywords I was and found no solutions!
</p>

<p>
	NSz
</p>

<p><a class="ipsAttachLink" href="//lavag.org/applications/core/interface/file/attachment.php?id=11480">DragandDropBodge.vi</a></p>]]></description><guid isPermaLink="false">19727</guid><pubDate>Wed, 03 Aug 2016 17:21:16 +0000</pubDate></item><item><title>LabVIEW 2013 MongoDB .NET for Windows</title><link>https://lavag.org/topic/19691-labview-2013-mongodb-net-for-windows/</link><description><![CDATA[<p>
	<br>
	I just started developing a LabVIEW 2013 driver for MongoDB . Currenly working with JSON only.
</p>

<p>
	<a href="https://github.com/3esmit/LabVIEW-MongoDB" rel="external nofollow">https://github.com/3esmit/LabVIEW-MongoDB</a>
</p>

<p>
	<strong>Name</strong>: LabVIEW MongoDB
</p>

<p>
	<strong>Category</strong>: Database
</p>

<p>
	<strong>LabVIEW Version</strong>: 2013
</p>

<p>
	<strong>License Type</strong>: BSD
</p>

<p>
	MongoDB Is a NoSQL database. It store documents in collections instead rows in tables. Tow collection documents don't need to have the same structure, and a document can store another document or an array of documents. Each document is persisted with "_id"  containing a special type called ObjectID. <br>
	This lvclass deals with .NET dlls drivers from version 1.8.3.9. Later versions maybe cannot be used (I could'nt make them work in anyway) since LabVIEW 2013 ignores important functions from later drivers maybe for not supporting some .NET feature it uses.<br>
	The 1.8.3.9 driver got a bug in list collections that is worked around in the lvclass method.
</p>

<p>
	Features:
</p>

<ul><li>
		Deamon Start/Shutdown
	</li>
	<li>
		Insert Document
	</li>
	<li>
		Find by ObjectID
	</li>
	<li>
		Aggegate
	</li>
	<li>
		List databases &amp; collections
	</li>
	<li>
		Create Collection
	</li>
	<li>
		Remove by ObjectID
	</li>
	<li>
		Find by Regex
	</li>
	<li>
		Find By Equal
	</li>
	<li>
		Get Document Part
	</li>
	<li>
		Update Set
	</li>
	<li>
		Insert Variant
	</li>
</ul><p>
	Planned features
</p>

<ul><li>
		Find Variant
	</li>
	<li>
		Aggregate to Variant
	</li>
	<li>
		LVOOP ObjectID
	</li>
	<li>
		LVOOP BSON
	</li>
	<li>
		LVOOP Query
	</li>
	<li>
		LVOOP Aggregate
	</li>
</ul>]]></description><guid isPermaLink="false">19691</guid><pubDate>Sun, 10 Jul 2016 07:53:09 +0000</pubDate></item><item><title>Get system power state</title><link>https://lavag.org/topic/14001-get-system-power-state/</link><description><![CDATA[<p>Hello</p>
<p>I've had some issues with a laptop that is used for data acquisition. Sometimes the people unplug the power and don't plug it in again. To not loose too much data, I had to find a was for LabView to know the power source and the fill level of the battery.</p>
<p>This vi is done with LabView 7.1 and uses a call to the windows library kernel32.dll to get the data. It should work on any windows system since Windows 2000. Maybe it is useful to other <abbr title="LabVIEW">LV</abbr> users as well.</p>
<p>The second vi just calls the first one in 500ms intervals and shows the results.</p>
<p>If you have ideas for improvement, let me know.</p>
<p>kruemi</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=4184" data-fileid="4184" rel="">PowerStatus.vi</a></p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=4185" data-fileid="4185" rel="">ShowPowerStatus.vi</a></p>
]]></description><guid isPermaLink="false">14001</guid><pubDate>Sat, 19 Mar 2011 13:28:43 +0000</pubDate></item><item><title>AST Unit Tester</title><link>https://lavag.org/topic/19539-ast-unit-tester/</link><description><![CDATA[<p>Hello,</p>
<p> </p>
<p>I developed a simple and quick unit tester.  </p>
<p> </p>
<p>My reason for developing this was NI's unit test framework is way to slow.  </p>
<p> </p>
<p>Here is the download on the NI community site</p>
<p> </p>
<p><a href="https://decibel.ni.com/content/groups/ast-unit-tester?view=overview" rel="external nofollow">https://decibel.ni.com/content/groups/ast-unit-tester?view=overview</a></p>
<p> </p>
<p>I also included a VI Package file</p>
<p> </p>
<p>Any feedback would be appreciated</p>
<p> </p>
<p>Thanks</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=11099" data-fileid="11099" rel="">automated_software_technology_lib_ast_unit_tester-1.0.0.30.vip</a></p>
]]></description><guid isPermaLink="false">19539</guid><pubDate>Tue, 29 Mar 2016 14:29:01 +0000</pubDate></item><item><title>Change Detection VI Macro (.vim)</title><link>https://lavag.org/topic/19492-change-detection-vi-macro-vim/</link><description><![CDATA[<p>After reading this LabVIEW Idea exchange request:</p>
<p><a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Provide-a-better-way-to-implement-a-polymorphic-VI/idi-p/920487" rel="external nofollow">http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Provide-a-better-way-to-implement-a-polymorphic-VI/idi-p/920487</a></p>
<p> </p>
<p>I was inspired to create VI macro(s) to attempt to address the problem mentioned in the request.  Attached is my first attempt and I'm looking for feedback since I know people here have strong opinions.   The benefit of this method is that a single vim (or 2 could replace a polymorphic VI with over 48 separate VIs....unless I'm missing something.  I know that VI macros are not officially supported by NI, but that hasn't stopped us from using unsupported features before.  Some people have probably already done something like this, but I couldn't find an example.</p>
<p> </p>
<p>To use the files, unzip them and copy them all to your \LabVIEW (version)\user.lib\macros\ directory.  </p>
<div>Create the directory if it does not exist.  For example: C:\Program Files (x86)\National Instruments\LabVIEW 2014\user.lib\macros\</div>
<div> </div>
<div>And as described in the wait-ms-with pass through post below, modify your LabVIEW.ini file to have the following</div>
<div>    ExternalNodesEnabled=True</div>
<div>and Optionally</div>
<div>    XNodeWizardMode=True</div>
<div> </div>
<div><p><a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Wait-ms-with-error-pass-through/idc-p/3178218#M31820" rel="external nofollow">http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Wait-ms-with-error-pass-through/idc-p/3178218#M31820</a></p></div>
<p> </p>
<p>Open the Example Changed.vi and review.</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=11020" data-fileid="11020" rel="">Changed Example.zip</a></p>
]]></description><guid isPermaLink="false">19492</guid><pubDate>Tue, 01 Mar 2016 17:00:54 +0000</pubDate></item><item><title>Pastebin Functions and Auto Archive</title><link>https://lavag.org/topic/19466-pastebin-functions-and-auto-archive/</link><description><![CDATA[<p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>Pastebin Functions and Auto Archive</strong></p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">Older project meant for a simple command and control system based around pastebin. Includes a Pastebin auto archiver example</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>Features</strong></p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><span>Bypasses developer API - Uses the same web interface as your browser</span></p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><span><strong>Auto Archiver</strong> "Pastebin Archive Main.vi" - <strong>Working</strong> 02/15/16 Searches the archives and downloads all unseen messages to disk. Avg of 25GB per week if I remember correctly. Saves to c:\pastes</span></p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><span><strong>Check archives</strong> for messages "Pastebin - Archive.vi" - <strong>Working</strong> 02/14/16</span></p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>Search for messages</strong> "Pastebin - Search.vi" - <strong>Working</strong> 02/15/16 - Max results per page 10 and pages are zero indexed</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>Fetch</strong> "Pastebin - Fetch.vi" - <strong>Working</strong> 02/15/16 - Downloads the contents of a paste</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>URL</strong> "Pastebin - URL.vi" - <strong>Working </strong>02/15/16  Grabs basic information about a paste using the URL</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>Post</strong> "Pastebin - Post.vi" - <strong>Broken/Detected</strong> 02/15/16 - Posts are nolonger set as public and have triggered anti-bot measures. Need to check what differs between my post and my browser post as this has changed. More than the new key location has changed.</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>Needed improvements</strong></p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">More examples</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">Documentation</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">Fix Post</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">Add create dir when saving if does not exist to archive example</p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"> </p>
<br><p style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;"><strong>Operation</strong></p>
<br><div>Load project in LabVIEW 2015 32/64 bit</div>
<br><p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10987" data-fileid="10987" rel="">Pastebin.zip</a></p>
]]></description><guid isPermaLink="false">19466</guid><pubDate>Mon, 15 Feb 2016 05:01:13 +0000</pubDate></item><item><title>Mandelbrot Explorer</title><link>https://lavag.org/topic/19465-mandelbrot-explorer/</link><description><![CDATA[<div>Mandelbrot Explorer - Moved to Code Repository</div>
<div> </div>
<div> </div>
<p><img src="http://i.imgur.com/fDV5S4w.png" alt="fDV5S4w.png"></p>
<p> </p>
<p>Simple Mandelbrot explorer that I wrote a few years ago. Just did a little cleanup and saved in 2015.</p>
<p> </p>
<p><strong>Features</strong></p>
<p>Many predefined color pallets</p>
<p>Rolling color pallet to produce motion effect</p>
<p>Ability to customize the color pallet</p>
<p>Log color mapping</p>
<p>Keyboard or mouse control</p>
<p>Basic shortcut keys</p>
<p>Saving high res images</p>
<p> </p>
<p><strong>Needed improvements</strong></p>
<p>Documentation</p>
<p>Clustering</p>
<p>Save settings</p>
<p> </p>
<p><strong>Operation</strong></p>
<p>Load project in LabVIEW 2015 32/64 bit</p>
<p>Start program using Mandelbrot Main.vi</p>
<p> </p>
<p>Moved to Code Repository</p>
]]></description><guid isPermaLink="false">19465</guid><pubDate>Mon, 15 Feb 2016 04:12:44 +0000</pubDate></item><item><title><![CDATA[Google maps &#60;-&#62; LabView via websockets]]></title><link>https://lavag.org/topic/17872-google-maps-labview-via-websockets/</link><description><![CDATA[<p>Hello,</p>
<p> Following my previous attempt with Google maps, Here is a websocket based link between <abbr title="LabVIEW">LV</abbr> and Google maps.</p>
<p> </p>
<p>Websocket class by S.Marlow <a href="http://evexiallc.com/index.php" rel="external nofollow">http://evexiallc.com/index.php</a></p>
<p>JSON API by drjdpowell</p>
<p> </p>
<p>Javascripts and demo application are based on the Webpanel demo application.</p>
<p> </p>
<p>Instructions:</p>
<p>1. Obtain a Google maps API key. </p>
<p>2. Edit the WP_Googlemaps.html and add the key to the relevant script tag.</p>
<p>3. Start the demo vi (google maps demo.vi)</p>
<p>4. Open the WP_Googlemaps.html with a modern browser.</p>
<p> </p>
<p>I have tested it with Chrome and Safari on iPhone 4.</p>
<p> </p>
<p>You might have to point to the correct path of some VIs, they are included in the vi directory.</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8843" data-fileid="8843" rel="">gmaps_websockets_LV2013.zip</a></p>
]]></description><guid isPermaLink="false">17872</guid><pubDate>Fri, 27 Dec 2013 22:03:53 +0000</pubDate></item><item><title>LabVIEW Ribbon Interface</title><link>https://lavag.org/topic/19386-labview-ribbon-interface/</link><description><![CDATA[<p>
	<span style="font-family:arial, sans-serif;"><span style="font-size:10.5pt;">So this code is not polished at all, but it was something I did as a fun pet project and realize I won't be able to finish it any time soon.  It is a ribbon interface done in a way that could be scaled up.  Ribbon like UIs have been done in </span></span><span style="font-family:arial, sans-serif;"><span style="font-size:10.5pt;"><a href="https://decibel.ni.com/content/groups/ui/blog/2009/11/10/creating-an-office-2007-like-ribbon-in-labview" rel="external nofollow">LabVIEW here</a>.  </span></span>
</p>

<p>
	<span style="font-family:arial, sans-serif;"><span style="font-size:10.5pt;">But these UI's relied on button controls, to be configured and made a specific way, and if you needed to update tabs, buttons, or groups, it had to be done manually.  So I wanted to come up with a way to make a ribbon like UI, but all that was required, was to provide the tabs, groups, and buttons, and the UI would be drawn.</span></span>
</p>

<p>
	<span style="font-family:arial, sans-serif;"><span style="font-size:10.5pt;">The end goal was to make an XControl with value change events when the user presses one of the buttons, but for now this is just a demonstration of what is possible.  The idea was the XControl would also be smart enough to only redraw the parts of the image that were changed.  Like if I changed the top tab background color it wouldn't have to redraw all the bottom parts of the UI.</span></span>
</p>

<p>
	<span style="font-size:10.5pt;font-family:arial, sans-serif;">Here is a video demonstration.  Here I show the default settings, then change some of the color and text settings.</span>
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="true" frameborder="0" height="344" src="https://www.youtube.com/embed/xLJCo4GsvTY?feature=oembed" width="459"></iframe>
	</div>
</div>

<p>
	<a href="http://screencast.com/t/daan9D78vqV" rel="external nofollow">http://screencast.com/t/daan9D78vqV</a>
</p>

<p>
	Some of the challenges that you don't really think about, that the API needs to be able to handle, is the text being of an unknown length, and number of rows.  Things like the top tabs needed to be able to expand right, or down as needed, and all other tabs, and images needed to shift to compensate.  Same thing when it comes to the button and group text.  Here you also have the added complications with the fact that the text might fit in the space already needed, like if the button is wider than the text.
</p>

<p>
	Images are scaled using .NET and the GDI resize.  This is also where images are combined, since some may have alpha layers, much like the included images do.
</p>

<p>
	I knew image scaling might take a while, and wouldn't be the type of thing I would want to redraw as a mouse moved over a button.  So for that reason I draw all the button states on startup, and then just combine the appropriate images for when the mouse is over, or down on a group, button, or tab.  This means a pretty fast response on the UI but means more memory is needed to hold all the button states in memory. 
</p>

<p>
	Doing the gradients efficiently for me meant doing them natively in LabVIEW.  I found some .NET code that would do it, but much slower than LabVIEW just drawing horizontal lines, and using math to determine the next color of the line.
</p>

<p>
	Several times images or parts of images needed to be shifted and translated.  Instead of converting a picture back into image data, then performing the move, then converting back, I used the code posted by Norm <a href="https://lavag.org/topic/17138-2d-picture-translation-movement/#entry105597" rel="">here</a>.  It needed to be updated for a few opcodes but for the most part is fantastic and made the image processing quicker.
</p>

<p>
	Other than mashing this into an XControl, I also didn't get around to creating a way to disable or disable and grey out buttons.  This would take more image manipulation magic and possibly more images to hold in memory.  Since disabled buttons are probably going to be somewhat rare, I thought I might draw these on-the-fly instead of on init like all the other button states.
</p>

<p>
	Anyway I hope someone finds something in this helpful, because I doubt I'll be able to do anything with it for a while.  Back saved to 2013, and remember this is very unfinished code, be gentle.
</p>

<p>
	EDIT: Attachment removed, re-uploaded with example images below.
</p>
]]></description><guid isPermaLink="false">19386</guid><pubDate>Mon, 04 Jan 2016 22:38:47 +0000</pubDate></item><item><title>Timing Custom Probe</title><link>https://lavag.org/topic/19374-timing-custom-probe/</link><description><![CDATA[<p>Easy way to roughly get VI running time +/- a few ms</p>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_12_2015/post-53507-0-27891900-1450437519.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_12_2015/post-53507-0-27891900-1450437519.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=10861" class="ipsImage ipsImage_thumbnailed" alt="post-53507-0-27891900-1450437519.png"></a></p>
<p> </p>
<p>LV2013: <a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10860" data-fileid="10860" rel="">Timing Probe.vi</a></p>
]]></description><guid isPermaLink="false">19374</guid><pubDate>Fri, 18 Dec 2015 11:21:30 +0000</pubDate></item><item><title>SQLite Library 1.6 beta: Attributes lookup table</title><link>https://lavag.org/topic/19353-sqlite-library-16-beta-attributes-lookup-table/</link><description><![CDATA[<p>Attached is a beta version of the latest 1.6 version of SQLite Library, for anyone who like to give feedback.   A major addition (not yet well tested) is â€œAttributesâ€, modeled on Variant Attributes or Waveform Attributes, but stored in any SQLite db file.  The idea is to make it easy to store simple named parameters without much effort.  See the example â€œSQLite Attributes.viâ€.  </p>
<p> </p>
<p>A more minor upgrade is making â€œExecute SQLâ€ polymorphic, so as to return data in a number of forms in addition to a 2D-array of strings.  See the upgraded example â€œSQLite Example 1 â€” Create Table.viâ€ which uses the new polymorphic VI, including showing how to return results as a Cluster.</p>
<p> </p>
<p>For Attributes, I had to make some choices in how to store the various LabVIEW types in SQLiteâ€™s limited number of types.   The format I decided on is:</p>
<p>1) all simple types that already have a defined mapping (i.e. a â€œBindâ€ property node) are stored as defined (so strings and paths are Text, DBLs and Singles are Float, integers (except U64) are Integers.</p>
<p>2) Timestamps are ISO-8601 Text (the most standardized format of the four possibilities)</p>
<p>3) Enums are stored as the item text as Text, rather than the integer value.  This seems the most robust against changes in the enum definition.</p>
<p>4) LVOOP objects are stored flattened in a Blob.</p>
<p>5) any other <abbr title="LabVIEW">LV</abbr> type is, contained in a Variant, flattened and stored in a Blob.  Using a flattened Variant means we store the type information and LabVIEW version.</p>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_11_2015/post-18176-0-04139400-1448742257.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_11_2015/post-18176-0-04139400-1448742257.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=10816" class="ipsImage ipsImage_thumbnailed" alt="post-18176-0-04139400-1448742257.png"></a></p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10815" data-fileid="10815" rel="">drjdpowell_lib_sqlite_labview-1.6.0.51.vip</a></p>
<p>LabVIEW 2011-2015</p>
<p> </p>
<br><p>The Attribute stuff grew out of a project where SQLite files held the data, one for each â€œRunâ€, and the Runs had lots of small bits of information that needed to be stored in addition to the bulk of the data.   When and where the measurement was taken, what the equipment setup was, who the Operator was, etc.  I purpose-made a name-value look-up table for this, but realized that such a table could be made into reusable â€œattributesâ€.</p>
]]></description><guid isPermaLink="false">19353</guid><pubDate>Sat, 28 Nov 2015 20:25:50 +0000</pubDate></item><item><title>Get Project Tree</title><link>https://lavag.org/topic/19373-get-project-tree/</link><description><![CDATA[<p>Fill Tree Control with actual opened LabVIEW Project(s)</p>
<p> </p>
<p>LV2013: <a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10858" data-fileid="10858" rel="">ProjectTree.vi</a></p>
]]></description><guid isPermaLink="false">19373</guid><pubDate>Fri, 18 Dec 2015 10:50:57 +0000</pubDate></item><item><title>An implementation of the XY Chart</title><link>https://lavag.org/topic/19333-an-implementation-of-the-xy-chart/</link><description><![CDATA[<p>I just recently had a need for XY chart functionality in my application. The example NI has on its website was a little too simple, as I needed support for multiple curves. I've attached the VI and some examples, would love to hear any critiques you have.</p>
<p> </p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10784" data-fileid="10784" rel="">XYChart.zip</a></p>
]]></description><guid isPermaLink="false">19333</guid><pubDate>Fri, 13 Nov 2015 23:31:21 +0000</pubDate></item><item><title>async call by ref workers</title><link>https://lavag.org/topic/18998-async-call-by-ref-workers/</link><description><![CDATA[<div>Hey all,</div>
<br><div> </div>
<br><div>I've spent a little time here and there working on this and I figured now was the right time to ask for feedback.</div>
<br><div> </div>
<br><div>Typically when making a new UI I'll use something like AMC and have a producer (the event structure) and consumer (a QMH). This is the standard template in AMC (<a href="http://www.ni.com/example/31091/en/#toc5" rel="external nofollow">image here</a>) and its also used in, for example, the sample projects. This is ok and has done well for a long time, but there are weak points. (a) the QMH can get clogged. After all you're sending all of your work down there and if something is slow, the consumer will run slow. (b) This pattern seems to always end up with a weird subset of state and functionality shared between the two loops. For example maybe your UI is set up to disable some inputs in state X, except that its your QMH, not your UI loop, which determines that you're in state X. So, maybe you send a message to the QMH, it takes some time and so your user is able to press buttons they shouldn't be able to. You fix this by putting the disable code in your UI loop, but then you need both loops to know that you're in state X. Another example: if you're using some features like right click menus, you need to share state between the UI and the QMH so you can generate the appropriate right click menu. Theres many examples like this. None of them is particularly heartbreaking, but my hope is that this is a better way.</div>
<br><div> </div>
<br><div>At one point a few months ago I was in a conversation with R&amp;D about events and we got onto some of these issues. Aristos and some others pointed out this was basically making two UI threads and suggested pulling everything back into a single loop (just the event handler) but then using async call by ref to take care of all the work that takes more than 200 ms (or whatever you personally consider the cutoff to be). This solves both problems because (a) async call by ref has a pool of VI instances it can use, so the code never blocks and (b) you only have one loop for the UI and associated state information, so there are fewer chances for weird situations.</div>
<br><div> </div>
<br><div>Since the code for doing all that manually is kind of tedious, I put together this prototype library to hopefully make the above design really really easy.</div>
<br><div> </div>
<br><div><u>Feedback I am looking for:</u></div>
<br><div>-is this a worthwhile pursuit at all? (ie do you agree with the first couple paragraphs above?)</div>
<br><div>-has this been done before (I searched and searched but I may have missed something)</div>
<br><div>-any thoughts on this first draft at implementation?</div>
<br><div> </div>
<br><div>
<br><div>The code is <a href="https://github.com/smithed/taskpool" rel="external nofollow">here </a>and examples are in the project or <a href="https://github.com/smithed/taskpool/tree/master/examples" rel="external nofollow">here</a>. The main example is "<a href="https://github.com/smithed/taskpool/blob/master/examples/example%20UI%20get%20websites.vi" rel="external nofollow">example UI get websites</a>" but this example also requires the lovely <a href="https://lavag.org/files/file/248-variant-repository/" rel="">variant repository</a>. Not for any particular reason, I just like it. There are more details about the code in the <a href="https://github.com/smithed/taskpool/blob/master/README.md" rel="external nofollow">readme</a>.</div>
<br><div> </div>
<br></div>
<br><div> </div>
<br><div> </div>
<br>]]></description><guid isPermaLink="false">18998</guid><pubDate>Thu, 21 May 2015 01:20:13 +0000</pubDate></item><item><title>Gold Parser Engine</title><link>https://lavag.org/topic/18808-gold-parser-engine/</link><description><![CDATA[<p><span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;">I would like to present one of my latest projects,  a port of the Gold Parser Engine to LabVIEW. It was not easy, I needed More advanced evaluation than the Built in </span></span><span style="font-family:arial, helvetica, sans-serif;">LabVIEW</span><span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;"> functions could offer, so I found the Gold parser engine for Java and VB, and yes i could use the .net but I couldn't get it to work well with reentrant calls to parse multiple things in parallel. So I put this together, I would like to polish it with the <abbr title="LabVIEW">LV</abbr> community, And Make it work even faster than it is already.</span></span></p>
<div> </div>
<div>I would like to thank, Devin Cook and Ralph Iden, for their excellent work on the previous Engines.</div>
<div> </div>
<p><span style="font-size:14px;"><span style="font-family:arial, helvetica, sans-serif;">In case you're not familiar with Gold: <span style="color:rgb(0,0,0);">GOLD is a</span><span style="color:rgb(0,0,0);"> free parsing system that you can use to develop your own programming languages, scripting languages and interpreters. It strives to be a development tool that can be used with numerous programming languages and on multiple platforms.</span></span></span></p>
<p> </p>
<p>I use it mostly to build AST out of strings of text that represent short snippets of code. The Source comes with an Top level example of how  a recursive evaluator can be implemented. But it can be used for many LabVIEW things including a 100% native XML parser, 100% native Scripting language... and the idea is that its native so that's nice. </p>
<p> </p>
<p>Performance:</p>
<p>I haven't tested long source strings for performance but currently it is working really quite quickly. Sub milliseconds for the numerical evaluation example. LabVIEW can be really sneaky making extra copies when you don't really need them. I have tried to do somethings to increase performance more. Alot of the items in the parsing VI are subroutines. And I have added Swap Values as a common performance tool. It is really cool. especially when working with class private data that doesn't deserve an in class function. eg. Tokens contain other tokens that can be evaluated recursively, however it doesn't make sense to put the eval function in the token class. As AristosQueue posted here <a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/New-in-place-element-structure-option-class-property-node-read/idc-p/2515866#M24026" rel="external nofollow">http://forums.ni.com/t5/LabVIEW-Idea-Exchange/New-in-place-element-structure-option-class-property-node-read/idc-p/2515866#M24026</a> </p>
<p> </p>
<p>After creating a grammar This example uses Devin Cook's Operator Precedence example. As you can see a string goes in and a number comes out. Parser engine has an application to test and verify grammars. This engine only except egt format.</p>
<p><img src="https://lh5.googleusercontent.com/-XSzU6oplqHw/VNkIKa9qgBI/AAAAAAAAFN4/bw_R3xU2ZN8/w780-h558-no/2-9-2015%2B1-18-56%2BPM.png" alt="2-9-2015%2B1-18-56%2BPM.png"></p>
<p>The above grammar has 15 symbols. I think of content as leaves on a AST (abstract syntax tree) and Nonterminals as Branches that have more leaves.</p>
<p><img src="https://lh6.googleusercontent.com/-3tEej4D8Yy4/VNkIBVsyY-I/AAAAAAAAFNo/Z6LWnADmn5Y/w800-h769-no/2-9-2015%2B1-00-40%2BPM.png" alt="2-9-2015%2B1-00-40%2BPM.png"></p>
<p> </p>
<p>Productions are a list of how each NonTerminal can be configured I like to think of it as a list of cases to handle.</p>
<p><img src="https://lh4.googleusercontent.com/-IV62ZqJZXNU/VNkPWV7S7aI/AAAAAAAAFOs/xuhz4HUW7Gc/w800-h497-no/2-9-2015%2B1-49-26%2BPM.png" alt="2-9-2015%2B1-49-26%2BPM.png"></p>
<p>It turns out that this makes a pretty simple recursive evaluation scheme  <img src="https://lavag.org/uploads/emoticons/default_thumbup1.gif" alt=":thumbup1:"></p>
<p><img src="https://lh6.googleusercontent.com/-cd_IbCfTk3I/VNkM-QkdWXI/AAAAAAAAFOE/lL0jDqEWO8s/w1514-h424-no/2-9-2015%2B1-38-39%2BPM.png" alt="2-9-2015%2B1-38-39%2BPM.png">If the Token is Content I see what type by getting the table index and using a typedef with all of them listed. In the case of an integer i get the value from the string and return it.</p>
<p><img src="https://lh4.googleusercontent.com/-eKzs2CEjC6s/VNkNAtIObSI/AAAAAAAAFOM/W5Gp21sedQ0/w1539-h418-no/2-9-2015%2B1-39-07%2BPM.png" alt="2-9-2015%2B1-39-07%2BPM.png">However if the Token is a NonTerminal, It can be handled by Sending the Tokens contained by the token into the recursive function and  using the values. You can see that the Production:</p>
<p>&lt;Muiti Exp&gt; ::= &lt;Multi Exp&gt; '/' &lt;Negate Exp&gt;</p>
<p>Contains 3 tokens.</p>
<p>I want to evaluate the Value associated with the &lt;Multi Exp&gt; so i get the sub token at index 0</p>
<p>and &lt;Negate Exp&gt; at index 2. </p>
<p> </p>
<p>You can find the Code here: <a href="https://decibel.ni.com/content/docs/DOC-41064" rel="external nofollow">https://decibel.ni.com/content/docs/DOC-41064</a></p>
<p> </p>
]]></description><guid isPermaLink="false">18808</guid><pubDate>Mon, 09 Feb 2015 20:05:03 +0000</pubDate></item><item><title>Header Sort Addin</title><link>https://lavag.org/topic/19006-header-sort-addin/</link><description><![CDATA[<div style="margin:0px 0px;"> </div>
<div style="margin:0px 0px 8px;"> </div>
<div style="margin:0px 0px;"> </div>
<div style="margin:0px 0px 8px;"> </div>
<p>Hi,</p>
<p> </p>
<p>recently I posted an idea in the exchange forum for adding support of sortable headers in bookmark manager: <a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Bookmark-Manager-Sort-by-column/idi-p/3136830" rel="external nofollow">http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Bookmark-Manager-Sort-by-column/idi-p/3136830</a></p>
<p> </p>
<p>So I started to develop a small addin you only need to place somewhere near your code to get the sorting for Listbox, MCListbox, Tree and Table (Table with [shift]-Click).</p>
<p> </p>
<p>For Listbox and MCListbox all seems fine, for Tree sometimes you get a crash (I nutshelled this behaviour to the "Sort Children"-Node and reported it). With Table integrated the stopping of this remote VI seems to be delayed. Don't know why.</p>
<p> </p>
<p>I'm not sure if I'm on the right way...</p>
<p> </p>
<p>Peter</p>
<p> </p>
<p>Edit:</p>
<p>Bugfixing:</p>
<ul><li>added wait for Frontpanel not closed -&gt; Rev.156 (now works in LV2014)</li>
<li>added little bit error handling</li>
<li>reworked example</li>
</ul><p>(File LV2014)</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=10540" data-fileid="10540" rel="">SortTable(rev.156).zip</a></p>
<div style="margin:0px;"> </div>
<div style="margin:0px;">Added here in Bookmark Manager:</div>
<div style="margin:0px;"> </div>
<div style="margin:0px;"><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_08_2015/post-53507-0-21304800-1438792187.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_08_2015/post-53507-0-21304800-1438792187.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=10541" class="ipsImage ipsImage_thumbnailed" alt="post-53507-0-21304800-1438792187.png"></a></div>
<div style="margin:0px;"> </div>
<div style="margin:0px;"> </div>
]]></description><guid isPermaLink="false">19006</guid><pubDate>Fri, 22 May 2015 13:15:45 +0000</pubDate></item><item><title><![CDATA[TLB&#39; - Top-Level Baseline Prime Application Template]]></title><link>https://lavag.org/topic/16188-tlb-top-level-baseline-prime-application-template/</link><description><![CDATA[<p>The hallmark of an experienced LabVIEW developer is the usage of their or others templates which prevent the ubiquitous blank block diagram symptom where time is wasted doing the same thing that they have done before.<br><br>Attached and linked you will find the TLB` (prime) template which, after a little learning what the parts are, can take you from zero to 60 in no time the next time you need to create a Top-Level application or interface.<br><br>This template can be used from the ultra simple UI to a fairly complex application.<br>Many questions and comments have been made about the original design (TLB) which is located here<br><a href="http://lavag.org/topic/14164-discuss-tlb-top-level-baseline/" rel="">http://lavag.org/topic/14164-discuss-tlb-top-level-baseline/</a><br><br>This reason for the update in this design is detailed in the presentation "Rebirth of the LabVIEW State Machine" which is accessible here<br><a href="http://lavag.org/topic/16091-ni-week-2012-videos/page__view__findpost__p__97844" rel="">http://lavag.org/topic/16091-ni-week-2012-videos/page__view__findpost__p__97844</a><br><br>Installing and Creating<br><a href="http://screencast.com/t/vtlFgLhQqT" rel="external nofollow">http://screencast.com/t/vtlFgLhQqT</a><br><br>Review of Examples<br><a href="http://screencast.com/t/XLIN0yjS" rel="external nofollow">http://screencast.com/t/XLIN0yjS</a><br><br>Structure of Code<br><a href="http://screencast.com/t/5RtMhPVujS" rel="external nofollow">http://screencast.com/t/5RtMhPVujS</a><br><br>Basic Flow of Operational Code<br><a href="http://screencast.com/t/1QGFRRuSf0nT" rel="external nofollow">http://screencast.com/t/1QGFRRuSf0nT</a><br><br>Adding a control to the system<br><a href="http://screencast.com/t/IJTxEQ28" rel="external nofollow">http://screencast.com/t/IJTxEQ28</a><br><br>Adding an action to the system<br><a href="http://screencast.com/t/5984lGlMjM" rel="external nofollow">http://screencast.com/t/5984lGlMjM</a><br><br>&lt;More to come soon&gt;</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8009" data-fileid="8009" rel="">QSM Evolution.zip</a><br>Code used in presentation video detailing why the typical QMH is fraught with issues that we have all run into</p>
<p><em>Credit to Daklu for it's creation and sharing</em></p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8888" data-fileid="8888" rel="">ni_tool_tlb`-1.2.0.23.vip</a> Most up to date version of TLB`</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=7245" data-fileid="7245" rel="">Rebirth of the LabVIEW State Machine.pptx</a></p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8889" data-fileid="8889" rel="">TLB` Application Template.vipc</a></p>
]]></description><guid isPermaLink="false">16188</guid><pubDate>Sun, 23 Sep 2012 00:42:24 +0000</pubDate></item><item><title>Floating point almost equal</title><link>https://lavag.org/topic/18636-floating-point-almost-equal/</link><description><![CDATA[<p>The other day I encountered a situation where I wanted to test if two floating point values were equal. Of course, one of the first things that you are told about floating point values is that you should never test for exact equality. So I proceed to wire up:</p>
<p> </p>
<p>Is X = Y +/- some acceptable tolerance?</p>
<p> </p>
<p>And that worked perfectly for my use case. That is, I knew that the max. value was 1000 and the min value was 0 and the resolution (or increment) was 0.01. A tolerance of 0.001 was sufficient.</p>
<p> </p>
<p>This got me thinking. Wouldn't it be nice to have some reusable VIs for testing if floating point values are almost equal? Unfortunately this meant taking a broader view of the problem and lead me to this interesting blog post:</p>
<p> </p>
<p><a href="http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/" rel="external nofollow">http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/</a></p>
<p> </p>
<p>I've attached VIs for the Absolute Epsilon comparison, Relative Epsilon comparison and the ULP comparison described in the blog post for double precision floating point values.</p>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_11_2014/post-40255-0-58730200-1416369553.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_11_2014/post-40255-0-58730200-1416369553.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=9726" class="ipsImage ipsImage_thumbnailed" alt="post-40255-0-58730200-1416369553.png"></a></p>
<p> </p>
<p>Perhaps this would be a nice addition to the somewhat barren OpenG Comparison Pallet?</p>
<p> </p>
<p><span style="font-size:13.63636302948px;color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">Uploaded package to Code Repository: </span><span style="font-size:14px;"><a href="http://lavag.org/files/file/259-floating-point-almost-equal/" rel="">http://lavag.org/files/file/259-floating-point-almost-equal/</a></span></p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=9725" data-fileid="9725" rel="">AlmostEqual_LV2013.zip</a></p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=9731" data-fileid="9731" rel="">AlmostEqual_LV86.zip</a></p>
]]></description><guid isPermaLink="false">18636</guid><pubDate>Tue, 18 Nov 2014 06:09:04 +0000</pubDate></item><item><title>Enable/Disable Private Methods</title><link>https://lavag.org/topic/16612-enabledisable-private-methods/</link><description><![CDATA[<p>I don't use private methods often, and as a result I don't know what other methods are available.  When I do turn on private methods I find that there are a ton and they some times will slow down my development, because there are so many that I will not use 99% of the time.  For this reason I find myself enabling and disabling private methods and I wanted an easier way to turn them on and off.  I made this VI (and it's supporting code) to run from the Tools menu of LabVIEW (place in the &lt;LabVIEW&gt;Projects folder) which will change the LabVIEW.ini key, and then restart LabVIEW.</p>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_02_2013/post-6627-0-80664200-1361887186.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_02_2013/post-6627-0-80664200-1361887186.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=7840" class="ipsImage ipsImage_thumbnailed" alt="post-6627-0-80664200-1361887186.png"></a></p>
<p> </p>
<p>Disclaimer 1: Private methods are not supported by NI and should not be used in build applications, and are generally only used for tools of development.  </p>
<p>Disclaimer 2: This set of code contains an EXE (pv.exe) and will be saved and executed from the system temporary folder %temp%.  Information about this EXE can be found <a href="http://www.softpanorama.info/Windows/windows_process_viewers.shtml#PrcView" rel="external nofollow">here</a>.</p>
<p>Disclaimer 3: As stated in the main VI, this will taskkill the version of LabVIEW running, and all unsaved work will be lost.</p>
<p> </p>
<p>Any feedback is appreciated, thanks.</p>
<p> </p>
<p>EDIT: This code uses OpenG File Library.</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=7839" data-fileid="7839" rel="">Enable Disable Private Methods.zip</a></p>
]]></description><guid isPermaLink="false">16612</guid><pubDate>Tue, 26 Feb 2013 14:00:21 +0000</pubDate></item><item><title><![CDATA[&#34;Sort Using Other Array&#34; XNode]]></title><link>https://lavag.org/topic/18552-sort-using-other-array-xnode/</link><description><![CDATA[<p>I needed to sort an array by using a <em>different</em> array's sorted order, but I couldn't find a function to do that. The easiest way I could find was to use Index &amp; Bundle Cluster Array with the sorting array first, sort the cluster array, and then unbundle the original values from the array in a For loop. I decided to create an XNode to make this process easier! Since it's an XNode, it can work with any type of array.</p>
<p>
Example usage and download:</p>
<p>
<a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_10_2014/post-15106-0-20074100-1412292227.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_10_2014/post-15106-0-20074100-1412292227.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=9556" class="ipsImage ipsImage_thumbnailed" alt="post-15106-0-20074100-1412292227.png"></a></p>
<p>
<strong>LabVIEW 2014 version:</strong></p>
<p>
<a href="https://lavag.org/applications/core/interface/file/attachment.php?id=9557" data-fileid="9557" rel="">Sort Using Other Array.zip</a></p>
<p>
<strong>LabVIEW 2009 version, uploaded by request:</strong></p>
<p>
<a href="https://lavag.org/applications/core/interface/file/attachment.php?id=9562" data-fileid="9562" rel="">Sort Using Other Array.zip</a></p>
]]></description><guid isPermaLink="false">18552</guid><pubDate>Thu, 02 Oct 2014 23:24:16 +0000</pubDate></item><item><title>Example of how to make an editable diagram inside a front panel, like the statechart dialogs</title><link>https://lavag.org/topic/18487-example-of-how-to-make-an-editable-diagram-inside-a-front-panel-like-the-statechart-dialogs/</link><description><![CDATA[<p><strong>Disclaimer: This technique makes use of multiple private properties/methods (one of which is optional), as well as some private menu options accessible through the INI key "enableSecretPopups=True". I believe this use of them is safe (in fact I'm pretty sure RestrictLRGrowMove is being used for its specific intended purpose!) but as I don't work for NI, I can't make any guarantees.</strong></p>
<p> </p>
<p>I know that many of LabVIEW's dialogs are implemented as VI's, and I was curious if the statechart module's state configuration dialog was implemented in this way as well. Sure enough, it was, which meant it was possible to create an editable block diagram as part of a VI's front panel. It didn't take long to figure out that the input/output nodes on the left and right were really unbundle/bundle by name nodes, as it was literally as easy as putting the mouse over one and looking at the context menu! I didn't at first know how it prevented them from moving left and right or being copied to another VI, however. I realized it had something to do with the object's flags through experimenting in Heap Peek. Then I found the private property called "RestrictLRGrowMove", which had this exact effect.</p>
<p> </p>
<p>So yeah, this is basically just a VI I created as a demonstration of this technique. It's possible to put a block diagram in a subpanel through a scripting method, and it's also possible to enable editing in that subpanel through a private property or hidden menu item. Of course, the latter means this isn't officially supported by NI, but it's still an interesting technique. Perhaps someday it <em>will</em> have official support.</p>
<p> </p>
<p>And if you're wondering why the unbundle/bundle nodes only show the text, it's actually very simple: there is no way to scroll in the subpanel unless scroll bars are enabled, and the rest of it is simply out of the viewable portion! The subVI that generates the embedded VI is kind of messy, but I put a step-by-step explanation of how it's generated on its block diagram as well for that reason.</p>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_09_2014/post-15106-0-12105000-1410049433.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_09_2014/post-15106-0-12105000-1410049433.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=9470" class="ipsImage ipsImage_thumbnailed" alt="post-15106-0-12105000-1410049433.png"></a></p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=9471" data-fileid="9471" rel="">Subpanel Diagram Example.zip</a></p>
]]></description><guid isPermaLink="false">18487</guid><pubDate>Sun, 07 Sep 2014 00:24:11 +0000</pubDate></item><item><title>Request for feedback on open-sourcing projects from NI systems engineering</title><link>https://lavag.org/topic/18354-request-for-feedback-on-open-sourcing-projects-from-ni-systems-engineering/</link><description><![CDATA[<p>I'm in the systems engineering group at NI. Over the course of the past year(s), we've received feedback (most recently <a href="https://decibel.ni.com/content/polls/16331" rel="external nofollow">here</a> -- sorry, this link is in the ni.com/community CLA group so access may be restricted) that some members of the community would be interested in contributing to some of the projects we've already released, or potentially working with us to identify future projects that might benefit the community at large.</p>
<p> </p>
<p>We'd like to renew this conversation by opening up a <a href="https://decibel.ni.com/content/thread/23441" rel="external nofollow">discussion</a> of what projects might interest the community. That discussion is posted here:</p>
<p><a href="https://decibel.ni.com/content/thread/23441" rel="external nofollow">https://decibel.ni.com/content/thread/23441</a></p>
<p> </p>
<p>If you have any thoughts or feedback, feel free to post here or in that discussion. We're very interested in hearing from you.</p>
]]></description><guid isPermaLink="false">18354</guid><pubDate>Tue, 15 Jul 2014 21:19:06 +0000</pubDate></item><item><title>Convert Range.vi - for rescaling a value between two ranges</title><link>https://lavag.org/topic/18465-convert-rangevi-for-rescaling-a-value-between-two-ranges/</link><description><![CDATA[<p>I just wrote this VI to accomplish a task that's come up quite often: rescaling a value from one range to another. There may be a VI for this built-in, but I wasn't able to find it.</p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=9461" data-fileid="9461" rel="">Convert Range.vi</a></p>
]]></description><guid isPermaLink="false">18465</guid><pubDate>Fri, 29 Aug 2014 22:16:07 +0000</pubDate></item><item><title>RFC-4180 formatted CSV file parser</title><link>https://lavag.org/topic/18018-rfc-4180-formatted-csv-file-parser/</link><description><![CDATA[<p>After many frustrating experiences with patched together CSV parsers (admittedly of my own creation), I've finally broken down and developed a CSV file parser that follows the RFC-4180 format: <a href="http://tools.ietf.org/html/rfc4180" rel="external nofollow">http://tools.ietf.org/html/rfc4180</a></p>
<p> </p>
<p>That is to take into account double quotes and commas inside double quotes and multiple-line entries. This is essential if you plan on storing user-input text data or storing numbers that may have a comma as a decimal point.</p>
<p> </p>
<p>From what I can tell, this is the same format that Open Office, Libre Office and Microsoft Excel use for their CSV file export. Therefore, using this format, you can export from LabVIEW to CSV, open it in Excel, make changes, export from Excel to CSV then import it back to LabVIEW without everything being broken by a missing double quotation mark or an extra comma.</p>
<p> </p>
<p>Attached is the VI to parse a CSV formatted string to a 2D array of strings for <abbr title="LabVIEW">LV</abbr> 2013, 2012 and 8.6. I've also attached an example CSV file (inside Test1.zip) exported from LibreOffice to demonstrate some of the tricky cases that most CSV parsers can't handle.</p>
<p> </p>
<p>Please give it a try and let me know your thoughts.</p>
<p> </p>
<p><span style="font-size:14px;">Update: I've posted the finished library to the Code Repository Database &amp; File IO catagory here <a href="http://lavag.org/files/file/239-robust-csv/" rel="">http://lavag.org/files/file/239-robust-csv/</a></span></p>
]]></description><guid isPermaLink="false">18018</guid><pubDate>Wed, 19 Feb 2014 05:45:39 +0000</pubDate></item><item><title>Reading JSON into LabVIEW</title><link>https://lavag.org/topic/16187-reading-json-into-labview/</link><description><![CDATA[<p>Hi all,</p>
<p>I've put together a small library to convert JSON formatted messages into something more useful in LabVIEW: variant attributes.  It's still in progress (more scripting to go...), but you can see it at: <a href="http://code.google.com/p/jsonlv/downloads/list" rel="external nofollow">http://code.google.com/p/jsonlv/downloads/list</a>.  Grab and unzip the .zip, open the json_example.vi, and work from there.</p>
<p>Because JSON is a pretty variable format, I'm looking for JSON (valid or not) that breaks the parser.  If anyone wants to give it a try, please feel free to contact me here, or at joe@underflowsoftware.com.</p>
<p>(Side note: <abbr title="LabVIEW">LV</abbr> crashes if you try to create a very, very deeply nested cluster using scripting.  So... don't do that!)</p>
<p>Thanks,</p>
<p>Joe Z.</p>
]]></description><guid isPermaLink="false">16187</guid><pubDate>Sat, 22 Sep 2012 22:52:21 +0000</pubDate></item><item><title>Status messaging library</title><link>https://lavag.org/topic/17805-status-messaging-library/</link><description><![CDATA[<p>I was looking for a way to simply pass status messages from anywhere in my application to a log file and/or a status message box on my user interface without having to pass a queue reference or event reference everywhere. I wanted something like the good old printf() command that I could litter throughout my application. I also wanted something that didn't take much place on the block diagram. This is what I came up with.</p>
<p> </p>
<p><img src="https://dl.dropboxusercontent.com/u/8640811/printf.PNG" alt="printf.PNG"></p>
<p>This VI sends the message string along with a time stamp and the call-chain to listeners of the "stdout" event (only if the specified verbose level less than or equal to the globally set verbose level).</p>
<p> </p>
<p>The message received by the stdout event handler is an instance of the "LV_Printf Msg" class. The data is available though property nodes or it can be flattened to a string through the dynamically dispatched "Receive Message" method. You can create a child of this class and override the "Receive Message" method to format the message differently.</p>
<p> </p>
<p>Please try it out and let me know your thoughts.</p>
<p> </p>
<p>Source &amp; Example Usage - LabVIEW 2013: <a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8778" data-fileid="8778" rel="">LV_Printf - 2013.zip</a></p>
<p>Source &amp; Example Usage - LabVIEW 2011 (not tested): <a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8777" data-fileid="8777" rel="">LV_Printf - 2011.zip</a></p>
<p> </p>
<p> </p>
]]></description><guid isPermaLink="false">17805</guid><pubDate>Wed, 04 Dec 2013 08:14:18 +0000</pubDate></item><item><title>LabVIEW Speak Basic</title><link>https://lavag.org/topic/15955-labview-speak-basic/</link><description><![CDATA[<p>Based on the squeaky wheel programming paradigm, I finally broke down and created a very very basic version of LVSpeak which simply enables speech detection in LabVIEW.<br>Refresher 
</p>
<div class="ipsEmbeddedVideo"><div><iframe width="459" height="344" src="https://www.youtube.com/embed/wgL7yPdGUi4?feature=oembed" frameborder="0" allowfullscreen="true"></iframe></div></div>
<br>This version of LVS is fully decoupled from the QuickEdit engine which enables you to speak common commands to <abbr title="LabVIEW">LV</abbr> and operate on GObjects (front panel and block diagram items)<br><br>This should be packaged into a VIPM package but is not yet.<br><br>It has imported its dependencies (ESF and REx) so that no other downloads are needed for the moment.<br>Dependencies would be handled in the future through VIPM<br><br>I'm posting for a specific person, but want to share w/ everyone.<br>There are many more things that I have in the full version of the LVS Engine, but for simplicity sake, I wanted to boil this down to the least common elements.<br><br>Enjoy,<br>Norm<br><br>~,~ The Captain was here<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=6947" data-fileid="6947" rel="">LVS_Basic.zip</a></p>
]]></description><guid isPermaLink="false">15955</guid><pubDate>Thu, 19 Jul 2012 12:10:00 +0000</pubDate></item><item><title>Universal FGV</title><link>https://lavag.org/topic/16669-universal-fgv/</link><description><![CDATA[<p>Hi everyone,<br><br>I had this (possibly hairbrained and madcap <img src="https://lavag.org/uploads/emoticons/default_biggrin.png" alt=":D">) idea a few weeks back - and have been trying to figure out a solution to it since. I've been playing around with <abbr title="LabVIEW">LV</abbr> OOP a lot recently and thought it would be really cool if I never had to make an FGV again. I'm not sure if someone has done this in the past but I thought I would give it a go.<br><br>My thought was that I could create a heirachy of <abbr title="LabVIEW">LV</abbr> classes for different data types and then when I need a new FGV, just create a sub-class off one of the data type classes to build a new FGV.<br><br>I've now got this working for standard data types (string, boolean and numeric - I could easily build classes for others if needed but haven't done so yet). Check out the attached code. Because I'm using OOP and dynamic terminals in places, I can't use the standard FGV uninitialised shift register, so am using a single element queue to store the data. This seems to be working OK now (feel free to use the code if you like - but I'm not promising it is bug free).<br><br>The part that I'm having real trouble with is supporting custom data types. I thought it would be really cool if the user could create a new FGV class - and then add in private data to the class which would then be converted to be the data type stored in the FGV. The problem I'm having with this is the connector pane on the FGV, as I can't find a way to easily update the data type on the input and output to the FGV. I have tried a few ways but none seem like less hassle than just creating the FGV from scratch anyway......</p>
<p> </p>
<p>Probably the easiest method I've found is to create separate dynamic accessors which can be dropped either before or after the FGV vi which stores the data. This isn't too bad but doesn't give the simplicity and ease of use I was hoping for.....</p>
<p> </p>
<p>Any ideas???</p>
<p> </p>
<p>Let me know what you think. I've possibly made this far more complicated than it needs to be but its been a bit of fun anyway.....</p>
<p> </p>
<p>Cheers,</p>
<p> </p>
<p>Pete</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=7939" data-fileid="7939" rel="">Universal FGV.zip</a></p>
]]></description><guid isPermaLink="false">16669</guid><pubDate>Mon, 18 Mar 2013 14:57:17 +0000</pubDate></item><item><title><![CDATA[&#34;Cluster Variant to Data&#34; when some values are missing]]></title><link>https://lavag.org/topic/16758-cluster-variant-to-data-when-some-values-are-missing/</link><description><![CDATA[<p>One thing that I really like about the OpenG "Read Section Cluster.vi" is that if some values are missing form the INI file it doesn't matter, the default value for the corresponding elements will just have the default value.</p>
<p> </p>
<p>I was wandering if it would be a good idea to have the "variant to data" behave the same way, instead of returning an error 91, shouldn't it try and see what does match between the data available in the variant and the data type passed to the "Variant to Data" primitive?</p>
<p> </p>
<p>I find it not easy to explain what I mean so here's an example :</p>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="https://lavag.org/uploads/monthly_04_2013/post-7452-0-39246500-1366732179.png" rel="external nofollow"><img src="https://lavag.org/uploads/monthly_04_2013/post-7452-0-39246500-1366732179_thumb.png" data-fileid="%7B___base_url___%7D/applications/core/interface/file/attachment.php?id=8064" class="ipsImage ipsImage_thumbnailed" alt="post-7452-0-39246500-1366732179_thumb.pn"></a></p>
<p> </p>
<p>And here's the code.</p>
<p> </p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=8065" data-fileid="8065" rel="">my variant to data.zip</a></p>
<p> </p>
<p>I know there are some limitations, not all data type are supported (refnums, arrays, waveforms, etc...) and unique names are required.</p>
<p> </p>
<p>If someone wants to know when this can be useful, the answer is this : when you develop custom steps for VBAI and you want to add some parameters without losing all the ones that were already there.</p>
<p>Maybe there are other use cases for this?</p>
<p> </p>
<p>Any feedback will be much appriciated.</p>
]]></description><guid isPermaLink="false">16758</guid><pubDate>Tue, 23 Apr 2013 15:55:43 +0000</pubDate></item><item><title>LVMark: Format markup for string controls</title><link>https://lavag.org/topic/14700-lvmark-format-markup-for-string-controls/</link><description><![CDATA[<p>Inspired by <a href="http://forums.ni.com/t5/LabVIEW-Idea-Exchange/HTML-Control/idc-p/1634750#M13335" rel="external nofollow">this idea</a>, these are just a few, one-day-of-coding functions that implement a simple, regex based markup for string controls.</p>
<p>For those not familiar with it, markup allows inline text to modify the displayed properties of the text.  For instance, **bold** becomes <strong>bold</strong>, _italics_ becomes <em>italics</em>, etc.</p>
<p>The code currently supports:</p>
<p></p>
<ul><li>Bold</li>
<li>Italic</li>
<li>Underline</li>
<li>Colors (in #XXXXXX format)</li>
<li>Text sizes (verysmall, small, large, verylarge)</li>
<li>Strikethrough</li>
<li>Some font setting</li>
</ul><p></p>
<p>Of course, it's still limited by the string control capabilities (no hyperlinks, no superscripts, no embedded lists).</p>
<p>If people think it's worthwhile, I'll develop it into a somewhat more complete solution (or, of course, they can!).  An X-control that supports it seems like an obvious extension, but I'm open to ideas.</p>
<p>Note: this was developed in LV2011, and back-ported to LV2009.  If you spot a problem with it, please notify me.</p>
<p>Use: open and run LVMark_TestString.vi for a demonstration.</p>
<p>Thanks,</p>
<p>Joe Z.</p>
<p><a href="https://lavag.org/applications/core/interface/file/attachment.php?id=4953" data-fileid="4953" rel="">LVMark2009.zip</a></p>
]]></description><guid isPermaLink="false">14700</guid><pubDate>Mon, 08 Aug 2011 01:41:23 +0000</pubDate></item></channel></rss>
