<?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; Program Structure</title>
	<atom:link href="http://www.speedvi.com/tag/program-structure/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>Mon, 30 Jan 2012 19:05:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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[<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>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 &#8230;<p class="read-more"><a href="http://www.speedvi.com/everything-labview-related/a-way-to-improve-user-experience-in-complicated-applications-in-labview.html">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<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><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>
]]></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>5</slash:comments>
		</item>
	</channel>
</rss>

