<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thinking in G &#187; I couldn&#8217;t live without</title>
	<atom:link href="http://thinkinging.com/category/openg/i-couldnt-live-without/feed/" rel="self" type="application/rss+xml" />
	<link>http://thinkinging.com</link>
	<description>an unfiltered stream of data flow consciousness</description>
	<lastBuildDate>Fri, 02 Oct 2009 23:51:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to list files in a LabVIEW 2009 executable app</title>
		<link>http://thinkinging.com/2009/10/02/how-to-list-files-in-a-labview-2009-executable-app/</link>
		<comments>http://thinkinging.com/2009/10/02/how-to-list-files-in-a-labview-2009-executable-app/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 23:46:47 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>

		<guid isPermaLink="false">http://thinkinging.com/?p=776</guid>
		<description><![CDATA[In earlier LabVIEW versions (prior to LabVIEW 2009), you could list all the VIs inside a built LabVIEW application using the List Folder function.  This is a very useful feature, since you might want to dynamically open VI References or find *.lvclass (LabVIEW Class) files for loading plugins, etc.

However, in LabVIEW 2009 this no longer [...]]]></description>
			<content:encoded><![CDATA[<p>In earlier LabVIEW versions (prior to LabVIEW 2009), you could list all the VIs inside a built LabVIEW application using the List Folder function.  This is a very useful feature, since you might want to dynamically open VI References or find *.lvclass (LabVIEW Class) files for loading plugins, etc.</p>
<p><img class="aligncenter size-full wp-image-777" title="List Folder" src="http://thinkinging.com/wp-content/uploads/2009/10/List-Folder.png" alt="List Folder" width="262" height="186" /></p>
<p>However, in LabVIEW 2009 this no longer works.  But, there&#8217;s still hope.  It turns out that <strong>LabVIEW 2009 EXEs are basically just ZIP archives</strong>.</p>
<p>And, you can list the contents of LabVIEW 2009 EXE files, programmatically, using the <a href="http://wiki.openg.org/Oglib_lvzip">OpenG Zip Tools</a> library, as shown below:</p>
<p><img title="List LV2009 EXE File Contents" src="http://thinkinging.com/wp-content/uploads/2009/10/List-LV2009-EXE-File-Contents.png" alt="List LV2009 EXE File Contents" /></p>
<p><em>Note: The image above is a <a href="http://zone.ni.com/devzone/cda/tut/p/id/9330">VI Snippet</a> and you can just drag &amp; drop it into a LabVIEW 2009 block diagram (but, make sure to install the <a href="http://wiki.openg.org/Oglib_lvzip">OpenG Zip Tools</a></em><em> first). Or, download the VI File, here: <a href="http://thinkinging.com/wp-content/uploads/2009/10/List-LV2009-EXE-File-Contents.vi">List LV2009 EXE File Contents.vi</a></em></p>
<p>Voilà! Problem solved <img src='http://thinkinging.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I definitely <a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">couldn&#8217;t live without</a> these handy VIs.</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2009/10/02/how-to-list-files-in-a-labview-2009-executable-app/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without &#8220;Array of VData to VCluster&#8221; (video)</title>
		<link>http://thinkinging.com/2009/02/14/i-couldnt-live-without-array-of-vdata-to-vcluster-video/</link>
		<comments>http://thinkinging.com/2009/02/14/i-couldnt-live-without-array-of-vdata-to-vcluster-video/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 23:59:40 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>

		<guid isPermaLink="false">http://thinkinging.com/?p=711</guid>
		<description><![CDATA[This is another article in a series showing some of my favorite OpenG VIs &#8212; &#8220;The OpenG VIs that I couldn&#8217;t live without&#8220;. In this article, I&#8217;m going to show a very useful VI, Array of VData to VCluster, that is used for converting arrays into a clusters.  The benefit of using this function, is that, unlike [...]]]></description>
			<content:encoded><![CDATA[<p>This is another article in a series showing some of my favorite <a href="http://openg.org/">OpenG VIs</a> &#8212; &#8220;<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The OpenG VIs that I couldn&#8217;t live without</a>&#8220;. In this article, I&#8217;m going to show a very useful VI, <a href="http://wiki.openg.org/Array_of_VData_to_VCluster">Array of VData to VCluster</a>, that is used for converting arrays into a clusters.  The benefit of using this function, is that, unlike the Array to Cluster primitive, it defers type checking to run-time.</p>
<p>Here&#8217;s a short, 5 minute video showing how to use this function:</p>
<p><object width="546" height="386" data="http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/jingh264player.swf" type="application/x-shockwave-flash"><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="thumb=http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/FirstFrame.jpg&amp;width=546&amp;height=386&amp;showbranding=false&amp;content=http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/2009-02-14_1541.mp4" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="allowScriptAccess" value="always" /><param name="base" value="http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/" /><param name="src" value="http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/jingh264player.swf" /><param name="flashvars" value="thumb=http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/FirstFrame.jpg&amp;width=546&amp;height=386&amp;showbranding=false&amp;content=http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/2009-02-14_1541.mp4" /><param name="allowfullscreen" value="true" /></object></p>
<p>If you want to give this VI a try, you can obtain it using <a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM). Simply select the <a href="http://wiki.openg.org/Oglib_lvdata">OpenG LabVIEW Data Tools</a> (oglib_lvdata) package from within VIPM.  Once installed, this will add a new functions palette at <em>OpenG&gt;&gt;OpenG LabVIEW Data Tools</em>.  (See <a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a quick guide on how to install OpenG on VIPM.)</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2009/02/14/i-couldnt-live-without-array-of-vdata-to-vcluster-video/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
<enclosure url="http://content.screencast.com/users/JKI_Software/folders/Jing/media/6178d250-28c8-46cd-83ba-08a2ba7a9f34/2009-02-14_1541.mp4" length="7801932" type="video/mp4" />
		</item>
		<item>
		<title>I couldn&#8217;t live without &#8220;Trim Whitespace&#8221;</title>
		<link>http://thinkinging.com/2008/06/28/i-couldnt-live-without-trim-whitespace/</link>
		<comments>http://thinkinging.com/2008/06/28/i-couldnt-live-without-trim-whitespace/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 16:48:22 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[OpenG]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2008/06/28/i-couldnt-live-without-trim-whitespace/</guid>
		<description><![CDATA[




This is another article in a series showing some of my favorite OpenG VIs -- "The
OpenG VIs that I couldn't live without". In this article, I'm
going to show a very useful VI, Trim
Whitespace, that is used for removing space, end of line,
and other&#160;whitespace
from at the beginning and/or end of a string.




Let's look at an example [...]]]></description>
			<content:encoded><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
This is another article in a series showing some of my favorite <a
 href="http://openg.org/">OpenG</a> VIs -- "<a
 href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The
OpenG VIs that I couldn't live without</a>". In this article, I'm
going to show a very useful VI, <span style="font-weight: bold;">Trim
Whitespace, </span>that is used for removing space, end of line,
and other&nbsp;<a
 href="http://en.wikipedia.org/wiki/Whitespace_%28programming_language%29">whitespace</a>
from at the beginning and/or end of a string.<br />
<br />
<div style="text-align: center;"><img
 style="width: 323px; height: 46px;" alt="Trim Whitespace"
 title="Trim Whitespace"
 src="http://wiki.openg.org/images/5/55/Trim_Whitespace.png"><br />
</div>
<br />
Let's look at an example where we have the string " &nbsp;hello
world" (that extra space at the front is what we want to get rid of).
&nbsp;We can use <span style="font-weight: bold;">Trim
Whitespace</span> to remove the leading space characters, as
shown below.<br />
<br />
<br />
<div style="text-align: center;"><img
 title="&quot;Trim Whitespace&quot; can remove leading space characters."
 style="width: 338px; height: 159px;" alt=""
 src="http://thinkinging.com/wp-content/uploads/2008/06/Trim%20Whitespace%20Example.png"><br />
</div>
<br />
One nice thing about (OpenG's) <span style="font-weight: bold;">Trim
Whitespace</span> is that it is polymorphic and handles arrays of
strings, as shown in this example:<br />
<br />
<div style="text-align: center;"><img
 style="width: 395px; height: 175px;" alt=""
 title="NI's &quot;Trim Whitespace&quot; can't do this."
 src="http://thinkinging.com/wp-content/uploads/2008/06/Trim%20Whitespace%20Array%20Example.png"><br />
</div>
<br />
Whitespace is also end of line characters, such as carriage returns
(\r) and line feeds (\n). &nbsp;Yes, <span
 style="font-weight: bold;">Trim Whitespace</span>
handles those, too.<br />
<br />
<div style="text-align: center;"><img
 title="&quot;Trim Whitespace&quot; can remove leading end of line characters."
 style="width: 351px; height: 191px;" alt=""
 src="http://thinkinging.com/wp-content/uploads/2008/06/Trim%20Whitespace%20EOL%20Example.png"><br />
</div>
<br />
If you want to give this VI a try, you can obtain it using <a
 href="http://jkisoft.com/vipm/">VI Package Manager</a>
(VIPM). Simply select the <b>OpenG String Tools</b> (<span
 style="font-weight: bold;">oglib_string</span>)
package from within VIPM.&nbsp; Once installed, this will add a new
functions palette at <b><i>OpenG&gt;&gt;OpenG
String Tools</i></b>. (See <a
 href="http://forums.jkisoft.com/index.php?showtopic=233">here</a>
for a quick
guide on how to install OpenG on VIPM.)<br />
<br />
<div style="text-align: center;"><img
 title="This is where to find &quot;Trim Whitespace&quot; in the palettes."
 style="width: 248px; height: 225px;" alt=""
 src="http://thinkinging.com/wp-content/uploads/2008/06/Trim%20Whitespace%20on%20String%20Palette.png">
</div>
</body>
</html>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2008/06/28/i-couldnt-live-without-trim-whitespace/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without &#8220;File&gt;&gt;Locate in Project&#8221;</title>
		<link>http://thinkinging.com/2007/09/15/i-couldnt-live-without-filelocate-in-project/</link>
		<comments>http://thinkinging.com/2007/09/15/i-couldnt-live-without-filelocate-in-project/#comments</comments>
		<pubDate>Sat, 15 Sep 2007 21:04:05 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[OpenG]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/09/15/i-couldnt-live-without-filelocate-in-project/</guid>
		<description><![CDATA[This is another article in a series showing some of my favorite
OpenG VIs --
"The
OpenG VIs that I couldn't live without". In this article, I'm going to show
a very useful tool called the Locate File in Project, which gives you an
easy way of finding VIs in the Project Explorer.



If you have this tool installed, it will [...]]]></description>
			<content:encoded><![CDATA[This is another article in a series showing some of my favorite
<a href="http://openg.org/" title="OpenG">OpenG</a> VIs --
"<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The
OpenG VIs that I couldn't live without</a>". In this article, I'm going to show
a very useful tool called the <b>Locate File in Project</b>, which gives you an
easy way of finding VIs in the <b>Project Explorer</b>.<br/>
<br/>
<img alt="Locate_File_In_Project.png" id="image273" src="http://thinkinging.com/wp-content/uploads/2007/09/Locate_File_In_Project.png"/><br/>
<br/>
If you have this tool installed, it will a <b><i>File&gt;&gt;Locate in
Project</i></b> option to the menu.&nbsp; When you select this menu option from
the menu of a VI's Front Panel or Block Diagram, the VI will be highlighted in
the Project Explorer window.&nbsp; For example, here is a typical scenario:<br/>
<br/>
You create a new VI.&nbsp; Maybe you make a copy of a class method VI.&nbsp;
However, you want to move this VI to a different sub-folder of the class.&nbsp;
The first thing that you need to do, is locate the new VI in the Project
Explorer window, so that you can move it.&nbsp; And, that's where Locate File in
Project comes in handy.<br/>
<br/>
The more you use the LabVIEW Project Explorer, the more you'll realize, too,
that <b>this is one tool that you can't live without</b> <img src='http://thinkinging.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <br/>
<br/>
If you want to give this VI a try, you can obtain it using
<a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM). Simply select
the <b>Locate File in Project</b> (<b>ogedit_locate_file_in_project</b>) package
from within VIPM.&nbsp; Once installed, this will add a new option
<b><i>File&gt;&gt;Locate in Project</i></b> item to LabVIEW's menu. (See
<a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a quick
guide on how to install OpenG on VIPM.)]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/09/15/i-couldnt-live-without-filelocate-in-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without &#8220;Conditional Auto-Indexing Tunnel&#8221;</title>
		<link>http://thinkinging.com/2007/05/28/i-couldnt-live-without-conditional-auto-indexing-tunnel/</link>
		<comments>http://thinkinging.com/2007/05/28/i-couldnt-live-without-conditional-auto-indexing-tunnel/#comments</comments>
		<pubDate>Mon, 28 May 2007 10:00:55 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/05/28/i-couldnt-live-without-conditional-auto-indexing-tunnel/</guid>
		<description><![CDATA[This is the tenth article of &#8220;The OpenG VIs that I couldn&#8217;t live without&#8220;, a series of articles showing some of my favorite OpenG VIs.  In this article, I&#8217;m going to show a very useful VIs called the Conditional Auto-Indexing Tunnel, which is a powerful tool for conditional filtering of 1D arrays.

This VI filters [...]]]></description>
			<content:encoded><![CDATA[<p>This is the tenth article of &#8220;<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The OpenG VIs that I couldn&#8217;t live without</a>&#8220;, a series of articles showing some of my favorite <a title="OpenG" href="http://openg.org/">OpenG</a> VIs.  In this article, I&#8217;m going to show a very useful VIs called the <span style="font-weight: bold">Conditional Auto-Indexing Tunnel</span>, which is a powerful tool for conditional filtering of 1D arrays.</p>
<p><img id="image194" alt="Conditional Auto-Indexing Tunnel" src="http://thinkinging.com/wp-content/uploads/2007/05/Conditional%20Auto-Indexing%20Tunnel.png" /></p>
<p>This VI filters a 1D array, keeping only those elements were corresponding elements in a Boolean array are TRUE. This is a little bit harder to explain with words, than with code, so let&#8217;s look at an example of this VI in action.  In the simple example, shown below, we are keeping only even elements of the input array.  As you can see, the benefit of using <span style="font-weight: bold">Conditional Auto-Indexing Tunnel</span> is that you do not have to do any building or deleting of arrays!</p>
<p><img id="image195" alt="Conditional Auto-Indexing Tunnel_example1.png" src="http://thinkinging.com/wp-content/uploads/2007/05/Conditional%20Auto-Indexing%20Tunnel_example1.png" /><br />
<span style="font-style: italic">Note: The example, above, may be found in your LabVIEW examples folder, here:</span><br style="font-style: italic" /> <span style="font-family: monospace">\examples\OpenG\array\Conditional Auto-Indexing Tunnel Example 01.vi</span><br style="font-family: monospace" /></p>
<p>And, here&#8217;s an example showing how to filter out elements in an array, without even using a For Loop!</p>
<p><img id="image196" alt="Conditional Auto-Indexing Tunnel_example2.png" src="http://thinkinging.com/wp-content/uploads/2007/05/Conditional%20Auto-Indexing%20Tunnel_example2.png" /><br />
If you want to give this VI a try, you can obtain it using <a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM).  Simply select the OpenG Array Library (the <span style="font-weight: bold">oglib_array </span>package from within VIPM), you will find the <span style="font-weight: bold">OpenG Array Tools</span> palette in the Functions palette under the OpenG submenu.  (See <a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a quick guide on how to install OpenG on VIPM.)</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/05/28/i-couldnt-live-without-conditional-auto-indexing-tunnel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without relative path inputs to file constants</title>
		<link>http://thinkinging.com/2007/05/18/i-couldnt-live-without-relative-path-inputs-to-file-constants/</link>
		<comments>http://thinkinging.com/2007/05/18/i-couldnt-live-without-relative-path-inputs-to-file-constants/#comments</comments>
		<pubDate>Fri, 18 May 2007 15:36:02 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/05/18/i-couldnt-live-without-relative-path-inputs-to-file-constants/</guid>
		<description><![CDATA[This is the ninth article of &#8220;The OpenG VIs that I couldn&#8217;t live without&#8220;, a series of articles showing some of my favorite OpenG VIs.  In this article, I&#8217;m going to show you a great hidden feature of the OpenG File Tools library: relative path inputs to file constants.  You might have noticed [...]]]></description>
			<content:encoded><![CDATA[<p>This is the ninth article of &#8220;<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The OpenG VIs that I couldn&#8217;t live without</a>&#8220;, a series of articles showing some of my favorite <a title="OpenG" href="http://openg.org">OpenG</a> VIs.  In this article, I&#8217;m going to show you a great hidden feature of the OpenG File Tools library: relative path inputs to file constants.  You might have noticed that all of the file constants on OpenG File Tools <strong>File Constants</strong> subpalette have a &#8220;Relative Path (.)&#8221; input, and you might also be wondering what the heck this is for.  For example, here are the NI and OpenG versions of the <strong>Temporary Directory</strong> function.</p>
<p><em>NI Version&#8230; </em></p>
<p><img id="image186" alt="Temporary Directory" src="http://thinkinging.com/wp-content/uploads/2007/05/Temporary%20Directory.png" /></p>
<p><em>OpenG Version&#8230;</em></p>
<p><img id="image187" alt="Temporary Directory (OpenG)" src="http://thinkinging.com/wp-content/uploads/2007/05/Temporary%20Directory%20%28OpenG%29.png" /></p>
<p>The &#8220;Relative path (.)&#8221; input of the OpenG version allows you to avoid some of the extra code required to build a path, relative to the constant (and, if you leave that input unwired, then the function simply outputs the path, in the same way as the NI function).  For example, let&#8217;s look at a common use case, implemented with the NI version of <strong>Temporary Directory</strong>.</p>
<p><img id="image188" alt="Example (NI)" src="http://thinkinging.com/wp-content/uploads/2007/05/Example%20%28NI%29.png" /></p>
<p>Now, let&#8217;s look at the equivalent code, using the OpenG version.</p>
<p><img id="image189" alt="Example (OpenG)" src="http://thinkinging.com/wp-content/uploads/2007/05/Example%20%28OpenG%29.png" /></p>
<p>That&#8217;s one less node and one less wire.  It&#8217;s not much, but it adds up!</p>
<p>If you want to give these OpenG file constant VIs a try, you can obtain them using <a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM).  Simply select the OpenG File Library (the <span style="font-weight: bold">oglib_file </span>package from within VIPM), you will find the <span style="font-weight: bold">OpenG File Tools</span> palette (and <strong>File Constants</strong> subpalette) in the Functions palette under the OpenG submenu.  (See <a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a quick guide on how to install OpenG on VIPM.)</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/05/18/i-couldnt-live-without-relative-path-inputs-to-file-constants/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without &#8220;Current VIs Parent Directory&#8221;</title>
		<link>http://thinkinging.com/2007/05/14/i-couldnt-live-without-current-vis-parent-directory/</link>
		<comments>http://thinkinging.com/2007/05/14/i-couldnt-live-without-current-vis-parent-directory/#comments</comments>
		<pubDate>Mon, 14 May 2007 15:44:18 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/05/14/i-couldnt-live-without-current-vis-parent-directory/</guid>
		<description><![CDATA[This is the eighth article of &#8220;The OpenG VIs that I couldn&#8217;t live without&#8220;, a series of articles showing some of my favorite OpenG VIs.  In this article, I&#8217;m going to show a very useful VIs called the Current VIs Parent Directory.  This VI outputs the path to the directory of the calling [...]]]></description>
			<content:encoded><![CDATA[<p>This is the eighth article of &#8220;<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The OpenG VIs that I couldn&#8217;t live without</a>&#8220;, a series of articles showing some of my favorite <a title="OpenG" href="http://openg.org">OpenG</a> VIs.  In this article, I&#8217;m going to show a very useful VIs called the <span style="font-weight: bold">Current VIs Parent Directory</span>.  This VI outputs the path to the directory of the calling VI, regardless of whether the VI is located in a directory, LLB, or an EXE!</p>
<p><img id="image169" alt="Current VIs Parent Directory.png" src="http://thinkinging.com/wp-content/uploads/2007/05/Current%20VIs%20Parent%20Directory.png" /></p>
<p>In the simple example, shown below, we are specifying that we want to read from a Configuration File named &#8220;setup.ini&#8221; which is located in the same folder as the calling VI.</p>
<p><img id="image170" alt="setup_ini_example.png" src="http://thinkinging.com/wp-content/uploads/2007/05/setup_ini_example.png" /></p>
<p>Remember, you can use relative paths as shown, below (for example, if you keep your configuration in a &#8220;support&#8221; folder):</p>
<p><img id="image171" alt="setup_ini_example2.png" src="http://thinkinging.com/wp-content/uploads/2007/05/setup_ini_example2.png" /></p>
<p>If you want to give this VI a try, you can obtain it using <a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM).  Simply select the OpenG File Library (the <span style="font-weight: bold">oglib_file </span>package from within VIPM), you will find the <span style="font-weight: bold">OpenG File Tools</span> palette in the Functions palette under the OpenG submenu.  (See <a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a quick guide on how to install OpenG on VIPM.)</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/05/14/i-couldnt-live-without-current-vis-parent-directory/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without the &#8220;OpenG Time Tools&#8221;</title>
		<link>http://thinkinging.com/2007/04/18/i-couldnt-live-without-the-openg-time-tools/</link>
		<comments>http://thinkinging.com/2007/04/18/i-couldnt-live-without-the-openg-time-tools/#comments</comments>
		<pubDate>Wed, 18 Apr 2007 15:19:03 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/04/18/i-couldnt-live-without-the-openg-time-tools/</guid>
		<description><![CDATA[This is the seventh article of &#8220;The OpenG VIs that I couldn&#8217;t live without&#8220;, a series of articles showing some of my favorite OpenG VIs.  In this article, I&#8217;m going to show a very useful set of VIs, the OpenG Time Tools, a set of timing VIs with error handling.

Let&#8217;s take a look at [...]]]></description>
			<content:encoded><![CDATA[<p>This is the seventh article of &#8220;<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The OpenG VIs that I couldn&#8217;t live without</a>&#8220;, a series of articles showing some of my favorite <a title="OpenG" href="http://openg.org">OpenG</a> VIs.  In this article, I&#8217;m going to show a very useful set of VIs, the <span style="font-weight: bold">OpenG Time Tools</span>, a set of timing VIs with error handling.</p>
<p><img alt="OpenG Time Tools Palette" id="image164" src="http://thinkinging.com/wp-content/uploads/2007/04/OpenG%20Time%20Tools%20Palette.png" /></p>
<p>Let&#8217;s take a look at one of the VIs. As you can see, below, the OpenG <span style="font-weight: bold">Wait (ms)</span> function has an <span style="font-weight: bold">error in</span> input and an <span style="font-weight: bold">error out</span> output.</p>
<p><img alt="Wait (ms) - OpenG" id="image165" src="http://thinkinging.com/wp-content/uploads/2007/04/Wait%20%28ms%29%20-%20OpenG.png" /></p>
<p>In the simple example, shown below, you can see how we are able to insert a wait between execution of two tasks by chaining (wiring in a sequence) the error cluster wiring between the three VIs.</p>
<p><img alt="Example" id="image167" src="http://thinkinging.com/wp-content/uploads/2007/04/Example.png" /></p>
<p>This is not possible, using LabVIEW&#8217;s built-in <span style="font-weight: bold">Wait (ms)</span> function, shown below, which has no error input or output.</p>
<p><img alt="Wait (ms) - NI" id="image166" src="http://thinkinging.com/wp-content/uploads/2007/04/Wait%20%28ms%29%20-%20NI.png" /></p>
<p>One other thing that we did not yet mention, is that the OpenG <span style="font-weight: bold">Wait (ms)</span> function has an input called &#8220;Wait on Error&#8221; that defaults to FALSE.  This means that we can choose whether or not we want to wait, if an error occurs upstream &#8212; generally, we will not want to wait, if an error occurs.</p>
<p>If you want to give this VI a try, you can obtain it using <a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM).  Simply select the OpenG Time Library (the <span style="font-weight: bold">oglib_time </span>package from within VIPM), you will find the <span style="font-weight: bold">OpenG Time Tools</span> palette in the Functions palette under the OpenG submenu.  (See <a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a quick guide on how to install OpenG on VIPM.)</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/04/18/i-couldnt-live-without-the-openg-time-tools/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without &#8220;Multi-line String to Array&#8221;</title>
		<link>http://thinkinging.com/2007/04/11/i-couldnt-live-without-multi-line-string-to-array/</link>
		<comments>http://thinkinging.com/2007/04/11/i-couldnt-live-without-multi-line-string-to-array/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 00:30:39 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/04/11/i-couldnt-live-without-multi-line-string-to-array/</guid>
		<description><![CDATA[This is the sixth article of &#8220;The     OpenG VIs that I couldn’t live without&#8220;, a series of articles showing     some of my favorite OpenG VIs.     In this article, I’m going to show a very useful VI,     Multi-line String to [...]]]></description>
			<content:encoded><![CDATA[<p>This is the sixth article of &#8220;<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The     OpenG VIs that I couldn’t live without</a>&#8220;, a series of articles showing     some of my favorite <a title="OpenG" href="http://openg.org/">OpenG</a> VIs.     In this article, I’m going to show a very useful VI,     <span style="font-weight: bold">Multi-line String to Array</span>, that is     used to convert a multi-line string into a 1D array of strings, so that you     can process individual lines (in a For Loop, for example).</p>
<p><img id="image141" title="Multi-line String to Array" style="height: 165px; width: 267px" src="http://thinkinging.com/wp-content/uploads/2007/04/Multi-line%20String%20to%20Array.png" /></p>
<p>One of the great things about this VI is that it automatically handles any     variety of different end of line (EOL) characters (see     <a title="wikipedia definition of Newline" href="http://en.wikipedia.org/wiki/Newline">wikipedia     definition of Newline</a>) that can be found in various platforms (for     example: Mac, Linux, and Windows).</p>
<p>Let’s take a look at a quick example of this VI in action. In this example     (shown below), we are converting a <span style="font-weight: bold">string     with five lines</span> into an <span style="font-weight: bold">array with     five elements</span> &#8212; one element for each line of the input string.</p>
<p><img id="image142" title="Multi-line String to Array Example" style="height: 139px; width: 450px" src="http://thinkinging.com/wp-content/uploads/2007/04/Multi-line%20String%20to%20Array%20Example.png" /></p>
<p>That&#8217;s all there is to it!</p>
<p>Now, you might be thinking to yourself, &#8220;<span style="font-weight: bold">How do   I get rid of the blank (third) line?</span>&#8221;  That&#8217;s easy! Just use   <span style="font-weight: bold">Filter 1D Array</span> (which we learned about   in   <a title="I couldn't live without " href="http://thinkinging.com/2007/04/08/i-couldnt-live-without-filter-1d-array/">our   last article</a>), as shown in the screenshot, below (wiring an Empty String constant to the &#8220;items to filter&#8221; input):</p>
<p><img id="image143" title="Multi-line String to Array Example (filter blank lines)" style="height: 120px; width: 526px" src="http://thinkinging.com/wp-content/uploads/2007/04/Multi-line%20String%20to%20Array%20Example_2.png" /></p>
<p>If you want to give this VI a try, you can obtain it using     <a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM). Simply     select the OpenG String Library (the     <span style="font-weight: bold">oglib_string </span>package from within     VIPM), you will find the <span style="font-weight: bold">OpenG String     Tools</span> palette in the Functions palette under the OpenG submenu. (See     <a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a     quick guide on how to install OpenG on VIPM.)</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/04/11/i-couldnt-live-without-multi-line-string-to-array/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I couldn&#8217;t live without &#8220;Filter 1D Array&#8221;</title>
		<link>http://thinkinging.com/2007/04/08/i-couldnt-live-without-filter-1d-array/</link>
		<comments>http://thinkinging.com/2007/04/08/i-couldnt-live-without-filter-1d-array/#comments</comments>
		<pubDate>Sun, 08 Apr 2007 20:28:51 +0000</pubDate>
		<dc:creator>Jim Kring</dc:creator>
				<category><![CDATA[I couldn't live without]]></category>
		<category><![CDATA[LabVIEW]]></category>

		<guid isPermaLink="false">http://thinkinging.com/2007/04/08/i-couldnt-live-without-filter-1d-array/</guid>
		<description><![CDATA[This is the fifth article of &#8220;The OpenG VIs that I couldn&#8217;t live without&#8220;, a series of articles showing some of my favorite OpenG VIs.  In this article, I&#8217;m going to show a very useful VI, Filter 1D Array, that is used to filter items out of a 1D array.

Let&#8217;s take a look at [...]]]></description>
			<content:encoded><![CDATA[<p>This is the fifth article of &#8220;<a href="http://thinkinging.com/category/openg/i-couldnt-live-without/">The OpenG VIs that I couldn&#8217;t live without</a>&#8220;, a series of articles showing some of my favorite <a title="OpenG" href="http://openg.org">OpenG</a> VIs.  In this article, I&#8217;m going to show a very useful VI, <span style="font-weight: bold">Filter 1D Array</span>, that is used to filter items out of a 1D array.</p>
<p><img id="image138" alt="Filter 1D Array" src="http://thinkinging.com/wp-content/uploads/2007/04/Filter%201D%20Array.png" /></p>
<p>Let&#8217;s take a look at a couple simple examples of this VI in action.</p>
<p>In this example (shown below), we are filtering out all values of +Inf and -Inf from a 1D array of DBL floating point numbers.  We simply specify an array of items that we wish to filter out of the input array and <span style="font-weight: bold">Filter 1D Array</span> does the rest.</p>
<p><img id="image139" alt="Filter 1D Array Example" src="http://thinkinging.com/wp-content/uploads/2007/04/Filter%201D%20Array%20Example.png" /></p>
<p>In our next example (shown below) we will notice that <span style="font-weight: bold">Filter 1D Array is Polymorphic</span>.  First, we notice that this example is filtering items from an array of strings (or previous example used a DBL floating point array) and, second, we notice that we are wiring a scalar value (empty string) into the &#8220;items to filter&#8221; (our previous example used an array of items to filter).  You can see in this example that <span style="font-weight: bold">all of the empty string elements were removed</span> from the input array.  Very cool!</p>
<p><img id="image140" alt="Filter 1D Array by Scalar Example" src="http://thinkinging.com/wp-content/uploads/2007/04/Filter%201D%20Array%20by%20Scalar%20Example.png" /></p>
<p>One other thing that you should also know (that we did not highlight in the above examples), is that <span style="font-weight: bold">Filter 1D Array outputs an array of indices (pointers) of the items that were removed</span>.  This allows you to do <span style="font-weight: bold">operations on associative arrays</span> (see <a href="http://en.wikipedia.org/wiki/Associative_array">wikipedia definition of associative array</a>) &#8212; an advanced programming technique.</p>
<p>If you want to give this VI a try, you can obtain it using <a href="http://jkisoft.com/vipm/">VI Package Manager</a> (VIPM).  Simply select the OpenG Array Library (the <span style="font-weight: bold">oglib_array </span>package from within VIPM), you will find the <span style="font-weight: bold">OpenG Array Tools</span> palette in the Functions palette under the OpenG submenu.  (See <a href="http://forums.jkisoft.com/index.php?showtopic=233">here</a> for a quick guide on how to install OpenG on VIPM.)</p>
]]></content:encoded>
			<wfw:commentRss>http://thinkinging.com/2007/04/08/i-couldnt-live-without-filter-1d-array/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
