<?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>SPEED VI &#187; User Interface</title>
	<atom:link href="http://www.speedvi.com/tag/user-interface/feed" rel="self" type="application/rss+xml" />
	<link>http://www.speedvi.com</link>
	<description>Everything about Virtual Instruments, Computer-based Measurement and Control, Automation...</description>
	<lastBuildDate>Thu, 28 Jan 2010 14:54:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Transfer More Than Text Message in Queue Between Loops in LabVIEW</title>
		<link>http://www.speedvi.com/everything-labview-related/transfer-more-than-text-message-in-queue-between-loops-in-labview.html</link>
		<comments>http://www.speedvi.com/everything-labview-related/transfer-more-than-text-message-in-queue-between-loops-in-labview.html#comments</comments>
		<pubDate>Mon, 20 Apr 2009 03:45:31 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Case]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[Queue]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.speedvi.com/everything-labview-related/transfer-more-than-text-message-in-queue-between-loops-in-labview.html</guid>
		<description><![CDATA[As in one of my previous post: A Way to Improve User Experience in Complicated Applications in LabVIEW, I used two loops in my program. One loop works as user interface events interpreter and another loop processes test operations. I use a message queue to transfer user command from the user event loop to the [...]]]></description>
			<content:encoded><![CDATA[<p>As in one of my previous post: <a href="http://www.speedvi.com/everything-labview-related/a-way-to-improve-user-experience-in-complicated-applications-in-labview.html" target="_blank">A Way to Improve User Experience in Complicated Applications in LabVIEW</a>, I used two loops in my program. One loop works as user interface events interpreter and another loop processes test operations. I use a message queue to transfer user command from the user event loop to the test operation loop. Right now, a few test operations need to be performed with a set of voltage values to the same UUT, but the test routine is the same. I don’t want to create more cases to different voltages, I want to use only one case to process the same test routine.</p>
<p>Below is how I realize it. As in the following image shows:</p>
<p> <span id="more-52"></span>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Message Queue" border="0" alt="Message Queue" src="http://www.speedvi.com/wp-content/uploads/2009/04/image.png" width="443" height="194" /> </p>
<p>I create a cluster which has a string data as the test command and a numeric array to store the test voltage value. I use this cluster as the element data type of the queue to transfer the test command and the test voltage from the user interface loop to the test operation loop. In the test case, test operation will be taken with specific voltage. It works quite well for me, and I needn’t create more cases in the test operation loop.</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>January 13, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/a-way-to-improve-user-experience-in-complicated-applications-in-labview.html" title="A Way to Improve User Experience in Complicated Applications in LabVIEW">A Way to Improve User Experience in Complicated Applications in LabVIEW</a> (5)</li><li>July 10, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/move-up-and-down-tree-control-sub-items-programmatically-in-labview.html" title="Move Up and Down Tree Control Sub-items Programmatically in LabVIEW">Move Up and Down Tree Control Sub-items Programmatically in LabVIEW</a> (0)</li><li>March 16, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/how-to-create-linked-list-in-labview.html" title="How to Create Linked List in LabVIEW">How to Create Linked List in LabVIEW</a> (0)</li><li>March 8, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/a-note-about-using-database-connectivity-toolset-in-labview.html" title="A Note about Using Database Connectivity Toolset in LabVIEW">A Note about Using Database Connectivity Toolset in LabVIEW</a> (0)</li><li>February 22, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/build-a-tri-state-led-indicator-in-labview.html" title="Build a Tri-State LED Indicator in LabVIEW">Build a Tri-State LED Indicator in LabVIEW</a> (0)</li><li>February 16, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/ni-announcing-the-labview-2009-platform-beta-program.html" title="NI Announcing the LabVIEW 2009 Platform Beta Program">NI Announcing the LabVIEW 2009 Platform Beta Program</a> (0)</li><li>February 2, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/problem-with-dll-in-labview.html" title="A Strange Problem When Calling External DLL with LabVIEW">A Strange Problem When Calling External DLL with LabVIEW</a> (0)</li><li>January 16, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/access-different-access-database-files-programmly-in-labview-with-database-connectivity-toolset.html" title="Access Different Access Database Files Programmatically in LabVIEW with Database Connectivity Toolset">Access Different Access Database Files Programmatically in LabVIEW with Database Connectivity Toolset</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.speedvi.com/everything-labview-related/transfer-more-than-text-message-in-queue-between-loops-in-labview.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Way to Improve User Experience in Complicated Applications in LabVIEW</title>
		<link>http://www.speedvi.com/everything-labview-related/a-way-to-improve-user-experience-in-complicated-applications-in-labview.html</link>
		<comments>http://www.speedvi.com/everything-labview-related/a-way-to-improve-user-experience-in-complicated-applications-in-labview.html#comments</comments>
		<pubDate>Mon, 12 Jan 2009 17:18:30 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Program Structure]]></category>
		<category><![CDATA[Queue]]></category>
		<category><![CDATA[State Machine]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.speedvi.com/uncategorized/a-way-to-improve-user-experience-in-complicated-applications-in-labview.html</guid>
		<description><![CDATA[LabVIEW 8.x comes with the User Interface Event Handler template by default to process user interface events. But in some complicated applications, there will be so many jobs to do at the same time, and this default template is not enough. For example, in one of my projects, UUT’s power supply monitor and serial communication [...]]]></description>
			<content:encoded><![CDATA[<p>LabVIEW 8.x comes with the User Interface Event Handler template by default to process user interface events. But in some complicated applications, there will be so many jobs to do at the same time, and this default template is not enough. For example, in one of my projects, UUT’s power supply monitor and serial communication with UUT is running all the time while some tests are performed. If only with the default template in this case, the user interface will freeze when the application is performing some time-consuming jobs like serial communication or DAQ.</p>
<p><span id="more-28"></span></p>
<p>My way to improve user experience in such situation is a combination of state machine and the default user interface event handler. The user interface event handler only gets user events and sends them to the state machine by queue. The state machine does the real jobs which the user events suppose to do. And the state machine and the UI events handler run parallel. A simple demonstration is as following graphic:</p>
<p><a href="http://www.speedvi.com/wp-content/uploads/2009/01/image.png"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" title="image" src="http://www.speedvi.com/wp-content/uploads/2009/01/image-thumb.png" border="0" alt="image" width="466" height="444" /></a></p>
<p>There should be more to work if you want to use this structure in your real project development. As with this structure, the buttons and other controls will be working even some time-consuming works  are performing at the same time. Buttons are no longer freeze in such situation.</p>
<p>It is not the best solution to this problems, but so far in my projects, it works. And any improvement to this program structure is welcome. And, you can download a demo VI <a title="A simple demo vi" href="http://www.speedvi.com/wp-content/uploads/2009/01/simpledemo.vi" target="_blank">here</a>.</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>April 20, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/transfer-more-than-text-message-in-queue-between-loops-in-labview.html" title="Transfer More Than Text Message in Queue Between Loops in LabVIEW">Transfer More Than Text Message in Queue Between Loops in LabVIEW</a> (2)</li><li>July 10, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/move-up-and-down-tree-control-sub-items-programmatically-in-labview.html" title="Move Up and Down Tree Control Sub-items Programmatically in LabVIEW">Move Up and Down Tree Control Sub-items Programmatically in LabVIEW</a> (0)</li><li>March 16, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/how-to-create-linked-list-in-labview.html" title="How to Create Linked List in LabVIEW">How to Create Linked List in LabVIEW</a> (0)</li><li>March 8, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/a-note-about-using-database-connectivity-toolset-in-labview.html" title="A Note about Using Database Connectivity Toolset in LabVIEW">A Note about Using Database Connectivity Toolset in LabVIEW</a> (0)</li><li>February 22, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/build-a-tri-state-led-indicator-in-labview.html" title="Build a Tri-State LED Indicator in LabVIEW">Build a Tri-State LED Indicator in LabVIEW</a> (0)</li><li>February 16, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/ni-announcing-the-labview-2009-platform-beta-program.html" title="NI Announcing the LabVIEW 2009 Platform Beta Program">NI Announcing the LabVIEW 2009 Platform Beta Program</a> (0)</li><li>February 2, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/problem-with-dll-in-labview.html" title="A Strange Problem When Calling External DLL with LabVIEW">A Strange Problem When Calling External DLL with LabVIEW</a> (0)</li><li>January 16, 2009 -- <a href="http://www.speedvi.com/everything-labview-related/access-different-access-database-files-programmly-in-labview-with-database-connectivity-toolset.html" title="Access Different Access Database Files Programmatically in LabVIEW with Database Connectivity Toolset">Access Different Access Database Files Programmatically in LabVIEW with Database Connectivity Toolset</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.speedvi.com/everything-labview-related/a-way-to-improve-user-experience-in-complicated-applications-in-labview.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
