<?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>PC Based Automation &#187; Expert I/O</title>
	<atom:link href="http://www.dajac.com/blog/tag/expert-io/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dajac.com/blog</link>
	<description>Exploring all aspects of PC based automation.</description>
	<lastBuildDate>Thu, 18 Nov 2010 19:58:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Automating the Baja 1000</title>
		<link>http://www.dajac.com/blog/2010/11/18/automating-the-baja-1000/</link>
		<comments>http://www.dajac.com/blog/2010/11/18/automating-the-baja-1000/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 19:53:17 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[pc based automation]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=504</guid>
		<description><![CDATA[If you&#8217;ve been getting the Dajac newsletter, you know that we have teamed up with Dallas Design and Technology (DDT) to prove that PC based automation makes sense, even in the toughest conditions. Read Dajac Goes for a Ride &#8211; Baja Style for complete details.
Today marks the beginning of the race!

The Expert I/O 1000 has [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_459" class="wp-caption alignright" style="width: 280px"><img src="http://www.dajac.com/blog/wp-content/uploads/2010/07/baja_1000.gif" alt="Taking PC Based Automation to the Extreme!" title="Baja 1000" width="270" height="90" class="size-full wp-image-459" /><p class="wp-caption-text">Taking PC Based Automation to the Extreme!</p></div></p>
<p>If you&#8217;ve been getting the Dajac newsletter, you know that we have teamed up with <a href="http://www.dallasdesigntech.com/">Dallas Design and Technology (DDT)</a> to prove that PC based automation makes sense, even in the toughest conditions. Read <a href="http://www.dajac.com/blog/2010/07/30/dajac-baja-1000/">Dajac Goes for a Ride &ndash; Baja Style</a> for complete details.</p>
<p>Today marks the beginning of the race!</p>
<p><span id="more-504"></span></p>
<p>The <a href="http://www.dajac.com/expert_io.php">Expert I/O 1000</a> has been installed and Mark is in Baja with the car, preparing to launch. The car is #404 and is scheduled to start the race at 1:00PM PST.</p>
<p>The starting line is being streamed live at <a href="http://www.baja1k.com/">www.BAJA1K.com</a>. They will also be shooting semi-live video from all over the course in addition to letting you get in the driver&#8217;s seat with your favorite team with real time vehicle tracking.</p>
<p><strong>Go check it out!</strong></p>
<p>I&#8217;ll publish more details when Mark returns.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2010/11/18/automating-the-baja-1000/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use Microsoft Office for Your Next Automation Project</title>
		<link>http://www.dajac.com/blog/2010/08/29/microsoft-office-automation/</link>
		<comments>http://www.dajac.com/blog/2010/08/29/microsoft-office-automation/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 16:02:02 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[Macro]]></category>
		<category><![CDATA[Microsoft Office]]></category>
		<category><![CDATA[pc based automation]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Visual Basic for Applications]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=475</guid>
		<description><![CDATA[If a software development platform can call a DLL, it can be used to control the Expert I/O 1000. Microsoft Office with Visual Basic for Applications (VBA) is no exception.
For most people, Office would be the last tool they would consider for PC based automation, but in some cases it might be the best. For [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_488" class="wp-caption alignright" style="width: 130px"><img src="http://www.dajac.com/blog/wp-content/uploads/2010/08/ms_office_logo.jpg" alt="Microsoft Office" title="Microsoft Office" width="120" height="103" class="size-full wp-image-488" /><p class="wp-caption-text">Automate with Office</p></div></p>
<p>If a software development platform can call a DLL, it can be used to control the Expert I/O 1000. Microsoft Office with Visual Basic for Applications (VBA) is no exception.</p>
<p>For most people, Office would be the last tool they would consider for PC based automation, but in some cases it might be the best. For example, you could easily log data to an Excel spreadsheet or Access database as you collect it and once it&#8217;s in these applications, it&#8217;s simple to manipulate, plot and report the data.</p>
<p><span id="more-475"></span></p>
<p>Office provides two big advantages.</p>
<ol>
<li>Low start up cost.</li>
<li>Short learning curve.</li>
</ol>
<p>The main advantage of Office is its low start up cost. Practically every computer in existence has Microsoft Office installed. If you don&#8217;t need the features of a full fledged software development suite, you can save a bunch of money by using a tool that is already on your computer.</p>
<p>The other big advantage of Office is that many people who aren&#8217;t software engineers know a great deal about VBA. It is used all the time for office automation by non-engineers. Microsoft has given us a development tool that can be used by everyone, not just geeky software engineers.</p>
<p>Controlling the Expert I/O using VBA in Excel is very easy. Here is the entire code of a VBA macro I created. The entire subroutine is only about a dozen lines.
<div class="codecolorer-container vb default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br /></div></td><td><div class="vb codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #008000;">' Expert I/O API.<br />
</span> &nbsp; &nbsp; <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> eioOpen <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;eio.dll&quot;</span> () <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> eioClose <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;eio.dll&quot;</span> () <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> eioClaimInterfaceEz <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;eio.dll&quot;</span> (<span style="color: #000080;">ByVal</span> ModelId <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span>, <span style="color: #000080;">ByVal</span> SerialNumber <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByRef</span> Handle <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>) <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> eioReleaseInterface <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;eio.dll&quot;</span> (<span style="color: #000080;">ByVal</span> Handle <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>) <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> eioDioSetPull <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;eio.dll&quot;</span> (<span style="color: #000080;">ByVal</span> Handle <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByVal</span> Port <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByVal</span> PullLevel <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>) <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> eioDioSet <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;eio.dll&quot;</span> (<span style="color: #000080;">ByVal</span> Handle <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByVal</span> Port <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByVal</span> PinLevels <span style="color: #000080;">As</span> <span style="color: #000080;">Byte</span>) <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> eioDioGet <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;eio.dll&quot;</span> (<span style="color: #000080;">ByVal</span> Handle <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByVal</span> Port <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByRef</span> PinLevels <span style="color: #000080;">As</span> <span style="color: #000080;">Byte</span>) <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
<br />
&nbsp; &nbsp; <span style="color: #008000;">' Constants<br />
</span> &nbsp; &nbsp; <span style="color: #000080;">Const</span> MODEL_ID <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span> = 1<br />
&nbsp; &nbsp; <span style="color: #000080;">Const</span> SERIAL_NUMBER <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span> = 99<br />
&nbsp; &nbsp; <span style="color: #000080;">Const</span> INPUT_PORT <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span> = 0<br />
&nbsp; &nbsp; <span style="color: #000080;">Const</span> OUTPUT_PORT <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span> = 2<br />
&nbsp; &nbsp; <span style="color: #000080;">Const</span> eioDIO_PULL_3_3 <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span> = 1<br />
&nbsp; &nbsp; <span style="color: #000080;">Const</span> eioDIO_PULL_GND <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span> = 2<br />
&nbsp; &nbsp; <br />
<span style="color: #000080;">Sub</span> DigitalIo()<br />
&nbsp; &nbsp; <span style="color: #000080;">Dim</span> Handle <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Dim</span> PinLevels <span style="color: #000080;">As</span> <span style="color: #000080;">Byte</span><br />
&nbsp; &nbsp; <span style="color: #000080;">Dim</span> ReturnCode <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span><br />
<br />
<br />
&nbsp; &nbsp; <span style="color: #008000;">' Open API and get handle. Normally, this would be done only once at the<br />
</span> &nbsp; &nbsp; <span style="color: #008000;">' beginning of the program. It has been included here to keep the<br />
</span> &nbsp; &nbsp; <span style="color: #008000;">' example as simple as possible.<br />
</span> &nbsp; &nbsp; ReturnCode = eioOpen()<br />
&nbsp; &nbsp; ReturnCode = eioClaimInterfaceEz(MODEL_ID, SERIAL_NUMBER, Handle)<br />
<br />
&nbsp; &nbsp; <span style="color: #008000;">' Set digital pulls.<br />
</span> &nbsp; &nbsp; ReturnCode = eioDioSetPull(Handle, INPUT_PORT, eioDIO_PULL_3_3)<br />
&nbsp; &nbsp; ReturnCode = eioDioSetPull(Handle, OUTPUT_PORT, eioDIO_PULL_3_3)<br />
<br />
&nbsp; &nbsp; <span style="color: #008000;">' Set output levels equal to cell in spreadsheet.<br />
</span> &nbsp; &nbsp; PinLevels = Cells(3, 5)<br />
&nbsp; &nbsp; ReturnCode = eioDioSet(Handle, OUTPUT_PORT, PinLevels)<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #008000;">' Get input levels and set spreadsheet cell to the value read.<br />
</span> &nbsp; &nbsp; ReturnCode = eioDioGet(Handle, INPUT_PORT, PinLevels)<br />
&nbsp; &nbsp; Cells(5, 5).Value = PinLevels<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #008000;">' Clean up. Normally, this would be done only once at the end of the<br />
</span> &nbsp; &nbsp; <span style="color: #008000;">' program. It has been included here since we included eioOpen() and<br />
</span> &nbsp; &nbsp; <span style="color: #008000;">' eioClaimInterfaceEz() in this subroutine.<br />
</span> &nbsp; &nbsp; ReturnCode = eioReleaseInterface(Handle)<br />
&nbsp; &nbsp; ReturnCode = eioClose()<br />
<br />
<span style="color: #000080;">End</span> <span style="color: #000080;">Sub</span></div></td></tr></tbody></table></div>
<p>Lines 27 and 28 initialize the Expert I/O API. Lines 31 and 32 set the output voltage level and input pull up state. These lines would normally be placed in a subroutine that runs once at the beginning of the macro. The initialization does not need to be performed for every I/O access.</p>
<p>Lines 35 and 36 set a digital output port to the value in the spreadsheet at E3.</p>
<p>Lines 39 and 40 read a digital input port and write its value to the spreadsheet at E5.</p>
<p>The interface is released and the API is closed with lines 45 and 46. As with the initialization, this cleanup only needs to be performed once at the end of the macro.</p>
<p>As you can see, writing a VBA macro to control the Expert I/O is an incredibly simple task. So for your next automation project, don&#8217;t forget to consider Microsoft Office. It might be just what you need.</p>
<p><a href="http://www.dajac.com/files/excel_vba_digital_io.zip">Click here</a> to download the Excel file that contains this macro.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2010/08/29/microsoft-office-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dajac Goes for a Ride &#8211; Baja Style</title>
		<link>http://www.dajac.com/blog/2010/07/30/dajac-baja-1000/</link>
		<comments>http://www.dajac.com/blog/2010/07/30/dajac-baja-1000/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:43:58 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[industrial]]></category>
		<category><![CDATA[pc based automation]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=434</guid>
		<description><![CDATA[Being headquartered near Indianapolis, it&#8217;s only fitting that Dajac be involved with racing. However, this will be a much different experience than the well controlled conditions at the Indianapolis Speedway. This year, Dajac&#8217;s Expert I/O 1000 will be put to the test in the rough and dirty Baja 1000 on the Baja peninsula November 17th [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_459" class="wp-caption alignright" style="width: 280px"><img src="http://www.dajac.com/blog/wp-content/uploads/2010/07/baja_1000.gif" alt="Taking PC Based Automation to the Extreme!" title="Baja 1000" width="270" height="90" class="size-full wp-image-459" /><p class="wp-caption-text">Taking PC Based Automation to the Extreme!</p></div></p>
<p>Being headquartered near Indianapolis, it&#8217;s only fitting that Dajac be involved with racing. However, this will be a much different experience than the well controlled conditions at the Indianapolis Speedway. This year, Dajac&#8217;s <a href="http://www.dajac.com/expert_io.php?aw=io">Expert I/O 1000</a> will be put to the test in the rough and dirty Baja 1000 on the Baja peninsula November 17th through the 21st.</p>
<p><span id="more-434"></span></p>
<p>The Baja 1000 is a thousand miles of the most grueling terrain. Racers and their vehicles endure water, sand, mud and wind as they careen through the course at top speeds up to 120 mph.</p>
<p>Dajac is teaming with <a href="http://www.dallasdesigntech.com">Dallas Design and Technology (DDT)</a>, a leading edge industrial integrator, to prove that PC based automation is a good choice for even the toughest projects. DDT will replace a large array of switches, gauges, a large format GPS and a laptop with a rugged touch screen PC and an Expert I/O 1000.</p>
<p><div id="attachment_464" class="wp-caption alignright" style="width: 460px"><img src="http://www.dajac.com/blog/wp-content/uploads/2010/07/baja_racer.jpg" alt="Dajac and Dallas Design and Technology team up to race in the Baja 1000." title="Baja Racer" width="450" height="255" class="size-full wp-image-464" /><p class="wp-caption-text">Dajac and Dallas Design and Technology team up to race in the Baja 1000.</p></div></p>
<p>A complete graphical user interface (GUI) and the data acquisition and control algorithms will be created for the PC using Visual Basic (VB.net). VB.net is a great tool for projects like this, but literally any PC software development environment could be used.</p>
<p>&#8220;The use of PC&#8217;s for industrial control is becoming more prevalent,&#8221; says Mark Stevens, Owner of DDT, &#8220;this project will allow us to prove the robustness of a properly integrated PC control system.&#8221; </p>
<p>I couldn&#8217;t agree more with Mark. A great deal of effort is being expended by the industrial controls market to design products that bolt PC features to outdated technology. Why not make your life simple and leap frog this intermediate step? It is only a matter of time before the PC is the de facto standard in industrial control.</p>
<p>Keep your eyes on the Dajac web site for updates! I will be posting more detailed information as we progress.</p>
<p>&nbsp;</p>
<hr />
<p><div id="attachment_375" class="wp-caption alignleft" style="width: 135px"><a href="http://www.dajac.com/usb-extension"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/08/tied_in_knots.jpg" alt="Tied In Knots USB Extension Guide" title="Tied In Knots USB Extension Guide" width="125" height="152" class="size-full wp-image-375" /></a><p class="wp-caption-text">Tied In Knots USB Extension Guide</p></div></p>
<p style="font-weight:bold;">TIED IN KNOTS &#8212; A Must-Have Guide to Untangling USB Extension Options for PC Based Automation</p>
<p>Stop your USB devices from being shackled to a PC like the pretty boy on a chain gang (he can&#8217;t wait to get free!). <a href="http://www.dajac.com/usb-extension">By downloading this guide</a> you&#8217;ll instantly grow your USB toolbox to include multiple methods of extending USB connections and put yourself head and shoulders above the competition.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2010/07/30/dajac-baja-1000/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dajac and Linxter Help You Dodge Bullets</title>
		<link>http://www.dajac.com/blog/2010/03/01/dajac-linxter-help-you-dodge-bullets/</link>
		<comments>http://www.dajac.com/blog/2010/03/01/dajac-linxter-help-you-dodge-bullets/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:50:14 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[linxter]]></category>
		<category><![CDATA[pc based automation]]></category>
		<category><![CDATA[smart grid]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=406</guid>
		<description><![CDATA[When I think of smart grids, one of the first things to pop into my mind is Keanu Reeves dodging bullets in The Matrix. That was the ultimate smart grid! We&#8217;re not even close to that, but with the internet, we are becoming more and more connected. Everyday, there are new initiatives to connect us [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_419" class="wp-caption alignright" style="width: 94px"><img src="http://www.dajac.com/blog/wp-content/uploads/2010/02/matrix.jpg" alt="The Ultimate Smart Grid" title="The Matrix" width="84" height="116" class="size-full wp-image-419" /><p class="wp-caption-text">The Ultimate Smart Grid</p></div></p>
<p>When I think of smart grids, one of the first things to pop into my mind is Keanu Reeves dodging bullets in <a href="http://en.wikipedia.org/wiki/The_Matrix">The Matrix</a>. That was the ultimate smart grid! We&#8217;re not even close to that, but with the internet, we are becoming more and more connected. Everyday, there are new initiatives to connect us to others and to connect machines to other machines.</p>
<p><span id="more-406"></span></p>
<p>Recently, there has been a great deal of talk about creating a smart power delivery system. This &#8220;smart grid&#8221; will have the ability to use electricity more efficiently by bridging the gap between the devices that use electricity and the suppliers of electricity. For example, a manufacturing plant may have a process that must run once a day with no strict time of day requirements. The smart grid will allow the plant to monitor electricity prices and only activate the process when the price of electricity falls below a specified threshold.</p>
<p>An example more pertinent to typical consumers is to control residential appliances based on electricity demand. With a smart grid, you will be able to load the washing machine and let the grid turn it on during non-peak (lower cost) times.</p>
<p>In addition to providing energy savings for the end user, the power companies will benefit from devices that report energy consumption. Using this consumption information, power companies will be able to operate more efficiently by leveling grid capacity to ensure energy is available when and where it is needed.</p>
<p>But how do you implement a smart grid? You need two pieces, a way to communicate with locally installed equipment and a way to control that equipment. Dajac and <a href="http://linxter.com/">Linxter</a> together provide the solution.</p>
<p>Dajac&#8217;s <a href="http://www.dajac.com/expert_io.php?aw=io">Expert I/O modules</a> are the &#8220;last mile&#8221; technology. They allow a computer to easily control electronic devices.</p>
<p>The remaining piece, the communications, is made effortless with Linxter&#8217;s software library. This library exposes a simple interface and takes care of the grunt work to give you a reliable and secure Ethernet communications channel across even the most unreliable links.</p>
<p>Over the next few weeks, Dajac and Linxter will unveil a smart grid proof of concept that will allow you to see these technologies in action and control them from anywhere in the world. Read the <a href="http://linxter.com/blog/tying-the-cloud-the-smart-grid-and-robots">Linxter blog</a> for more information about this event and keep an eye on the Dajac and Linxter web sites for the unveiling!</p>
<p>&nbsp;</p>
<hr />
<p><div id="attachment_375" class="wp-caption alignleft" style="width: 135px"><a href="http://www.dajac.com/usb-extension"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/08/tied_in_knots.jpg" alt="Tied In Knots USB Extension Guide" title="Tied In Knots USB Extension Guide" width="125" height="152" class="size-full wp-image-375" /></a><p class="wp-caption-text">Tied In Knots USB Extension Guide</p></div></p>
<p style="font-weight:bold;">TIED IN KNOTS &#8212; A Must-Have Guide to Untangling USB Extension Options for PC Based Automation</p>
<p>Stop your USB devices from being shackled to a PC like the pretty boy on a chain gang (he can&#8217;t wait to get free!). <a href="http://www.dajac.com/usb-extension">By downloading this guide</a> you&#8217;ll instantly grow your USB toolbox to include multiple methods of extending USB connections and put yourself head and shoulders above the competition.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2010/03/01/dajac-linxter-help-you-dodge-bullets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PC Based Automation Continues to Grow</title>
		<link>http://www.dajac.com/blog/2010/01/02/pc-based-automation-continues-to-grow/</link>
		<comments>http://www.dajac.com/blog/2010/01/02/pc-based-automation-continues-to-grow/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 05:01:55 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[pc based automation]]></category>
		<category><![CDATA[process control]]></category>
		<category><![CDATA[USB]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=377</guid>
		<description><![CDATA[I was cleaning up over the holidays and came across a couple articles that I had saved from earlier in 2009. I&#8217;m sure you&#8217;ll find them interesting. Both articles describe how people are taking PC based automation to the next level to reduce cost and integration time.

The first article, PC–Based Controls Help Freeze Escalating Energy [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_387" class="wp-caption alignright" style="width: 130px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/12/process_machine.jpg" alt="PC Based Process Control" title="PC Based Process Control" width="120" height="90" class="size-full wp-image-387" /><p class="wp-caption-text">PC Based Process Control</p></div></p>
<p>I was cleaning up over the holidays and came across a couple articles that I had saved from earlier in 2009. I&#8217;m sure you&#8217;ll find them interesting. Both articles describe how people are taking PC based automation to the next level to reduce cost and integration time.</p>
<p><span id="more-377"></span></p>
<p>The first article, <a href="http://www.controlglobal.com/articles/2009/PCBasedControlsEnergyCosts0905.html">PC–Based Controls Help Freeze Escalating Energy Costs</a>, from ControlGlobal.com (May 13, 2009) explains how a company used PC&#8217;s to standardize control in multiple plants. Not only were they able to standardize, but the power of the PC allowed them to drive cost out of the process by using highly advanced control algorithms. Implementing the algorithms with PLC&#8217;s might have been possible, but the solution &#8220;would have been unwieldy and impractical&#8221;. Using the PC allowed them to model the process in real time to design the most efficient algorithm. In addition to better algorithms, PC control made is very simple to communicate with the rest of the plant and even between plants.</p>
<p>The second article, <a href="http://electronicdesign.com/article/boards-modules-systems/usb-flexes-its-industrial-strength21019.aspx">USB Flexes Its Industrial Strength</a> from Electronic Design (May 23, 2009), describes the multiple advantages of USB in PC based automation. It explains that although the overall speed of USB 2.0 is slower than that of Gigabit Ethernet, USB continues to be a great choice because of it modularity and the lack of need for Gigabit speeds. An important point that the article misses is that USB can be implemented in such a way as to have a guaranteed maximum latency (as is done in the Expert I/O 1000), whereas Ethernet depends on the number of devices attached to the node. The article goes on to explain that USB speed is soon to surpass Gigabit Ethernet. The new USB 3.0 specification increases the bandwidth to 5 Gigabits/second. </p>
<p>Make no mistake, PC based automation is alive and well and continues make gains into process and control applications where PLC&#8217;s once easily dominated.</p>
<p>&nbsp;</p>
<hr />
<p><div id="attachment_375" class="wp-caption alignleft" style="width: 135px"><a href="http://www.dajac.com/usb-extension"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/08/tied_in_knots.jpg" alt="Tied In Knots USB Extension Guide" title="Tied In Knots USB Extension Guide" width="125" height="152" class="size-full wp-image-375" /></a><p class="wp-caption-text">Tied In Knots USB Extension Guide</p></div></p>
<p style="font-weight:bold;">TIED IN KNOTS &#8212; A Must-Have Guide to Untangling USB Extension Options for PC Based Automation</p>
<p>Stop your USB devices from being shackled to a PC like the pretty boy on a chain gang (he can&#8217;t wait to get free!). <a href="http://www.dajac.com/usb-extension">By downloading this guide</a> you&#8217;ll instantly grow your USB toolbox to include multiple methods of extending USB connections and put yourself head and shoulders above the competition.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2010/01/02/pc-based-automation-continues-to-grow/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PC Automated Pressure Measurements</title>
		<link>http://www.dajac.com/blog/2009/10/23/pc-automated-pressure-measurements/</link>
		<comments>http://www.dajac.com/blog/2009/10/23/pc-automated-pressure-measurements/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 18:18:01 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[measure]]></category>
		<category><![CDATA[pressure]]></category>
		<category><![CDATA[process control]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[sensor]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=342</guid>
		<description><![CDATA[One of the vivid memories from my childhood is working in the garden picking vegetables. We lived on a farm and it was common to have a big garden. My mother would can all types of food, such as tomatoes, pickles and green beans. Part of this canning process involved boiling the jars of food [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_354" class="wp-caption alignright" style="width: 105px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/10/pressure_cooker.png" alt="Pressure Cooker" title="Pressure Cooker" width="95" height="95" class="size-full wp-image-354" /><p class="wp-caption-text">Pressure Cooker</p></div></p>
<p>One of the vivid memories from my childhood is working in the garden picking vegetables. We lived on a farm and it was common to have a big garden. My mother would can all types of food, such as tomatoes, pickles and green beans. Part of this canning process involved boiling the jars of food in a pressure cooker. The release valve, with its hot hissing steam escaping, always intrigued me.</p>
<p>Canning food in the kitchen is a relatively simple process and easily controlled by the cook, but there are many other applications where it makes sense to automate the process.<span id="more-342"></span> For instance, you may have a process where it is important to know the exact pressure at a specific point in a process and, based on that pressure, control other parameters of the system.</p>
<p>Another example where automation would be ideal is monitoring pressure over time. You could manually take measurements at a given period over some number of hours, but it makes much more sense to automate and let the monitoring equipment record the measurements while you do other things. Because it is automated, this method is more precise and allows you to immediately analyze the data.</p>
<p>The first thing needed for measuring pressure is a pressure sensor. There are many sensors available with analog voltage outputs. These can be used with the Expert I/O 1000 by connecting the sensor&#8217;s analog output to an analog input on the Expert I/O 1000. The Expert I/O 1000 has six 0-5V analog inputs and it isn&#8217;t difficult to find pressure sensors with 0-5V outputs.</p>
<p>To properly specify the pressure sensor, the following parameters must be defined.</p>
<ul>
<li>Pressure range being measured.</li>
<li>Accuracy required.</li>
<li>Pressure fitting. How it attaches to the object being measured (1/4&#8243; pipe thread is the most common).</li>
<li>Electrical termination (connector or direct to cable).</li>
</ul>
<p>With these specifications in hand, you are now ready to shop for a sensor. Here are links to a few vendors that carry pressure sensors.</p>
<ul>
<li><a href="http://www.pewastore.com/index.asp?PageAction=VIEWCATS&#038;Category=11">PewaStore.com</a> </li>
<li><a href="http://www.omega.com/guides/pressXducers.html">Omega</a> (Choose output = Volt)</li>
<li><a href="http://stellartech.com/techsheets-press/pressuremodels.html">Stellar Technology</a></li>
<li><a href="http://www.emssensors.com/press/press.htm">Engineering and Manufacturing Services</a></li>
<li><a href="http://www.astsensors.com/pressure-sensor-products.php">American Sensor Technologies</a></li>
<li><a href="http://www.granzow.com/pressuretransmitters/">Granzow</a></li>
<li><a href="http://www.transducersdirect.com/HeleoCart/ProductCategory/Pressure+Transducer%2826%29.aspx">Transducers Direct</a></li>
<li><a href="http://devar.thomasnet.com/viewitems/level-and-pressure/level-and-pressure-transmitters?&#038;forward=1">DEVAR</a></li>
</ul>
<p>For easiest connection to the Expert I/O 1000, you&#8217;ll want to get a sensor with 0-5V analog output, but you probably noticed that another common output is 4-20mA. These can also be used with the Expert I/O 1000 by adding a 250 Ohm resistor from the output signal to ground. Adding the resistor converts the 4-20mA signal to a 1-5V signal. It&#8217;s not hard to deal with the 1V offset in software. The ground terminal next to each of the Expert I/O 1000 analog input terminals provide a convenient place to ground the 250 Ohm resistor.</p>
<p><div id="attachment_356" class="wp-caption aligncenter" style="width: 460px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/10/convert_4-20ma_to_1-5V.png" alt="Use a 250 Ohm resistor to ground to convert a 4-20mA output to 1-5V." title="Convert 4-20mA to 1-5V" width="450" height="310" class="size-full wp-image-356" /><p class="wp-caption-text">Use a 250 Ohm resistor to ground to convert a 4-20mA output to 1-5V.</p></div></p>
<p>Now that you have a sensor picked out, all that is left is to write a little software. Here is a snippet of code that initializes the Expert I/O 1000, samples an analog input and then exits.</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Open the Expert I/O API.</span><br />
eioOpen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Scan the USB and gather descriptors.</span><br />
eioGetDescriptors<span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>DescriptorGroup <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Claim the interface.</span><br />
eioClaimInterface<span style="color: #009900;">&#40;</span> DescriptorGroup.<span style="color: #202020;">Descriptors</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>EioHandle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Read analog input 1.</span><br />
eioAdcReadCount<span style="color: #009900;">&#40;</span> EioHandle<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>AdcCount <span style="color: #009900;">&#41;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Release the interface.</span><br />
eioReleaseInterface<span style="color: #009900;">&#40;</span> EioHandle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Close the Expert I/O API.</span><br />
eioClose<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>If you read <a href="http://www.dajac.com/blog/2009/10/10/expert-io-api/">Between Mac and PC: The Expert I/O API</a>, much of the code will be familiar to you. I&#8217;ll go through it again for those that didn&#8217;t read the article.</p>
<p>Lines 1 through 8 are initialization and only need to be executed once. The initialization starts with calling <code class="codecolorer c default"><span class="c">eioOpen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code>. This allows the API to configure its internal settings and ready itself for communicating on the USB.</p>
<p>The next step is to call <code class="codecolorer c default"><span class="c">eioGetDescriptors<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> to scan each USB bus and locate all Expert I/O devices. It returns a <code class="codecolorer c default"><span class="c">DescriptorGroup</span></code> which contains an array of <code class="codecolorer c default"><span class="c">Descriptors<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span></span></code>. Each descriptor in <code class="codecolorer c default"><span class="c">Descriptors<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span></span></code> describes an Expert I/O found connected to the USB.
<p>Descriptors contain a model ID and a serial number. By inspecting the descriptors, you can locate the specific Expert I/O you wish to access. For the purpose of this example, we simply choose the first device found on the bus. On line 8, we use the first descriptor to obtain a handle to the device.</p>
<p>A device&#8217;s handle is exactly as it sounds. It is a &#8220;handle&#8221; to grab hold of the Expert I/O to control it. The handle is used every time you perform an operation on the device.</p>
<p>Line 8 serves another purpose, it claims the Expert I/O&#8217;s interface for exclusive use by our application. This is important, because the last thing you want is 2 applications trying to control the same Expert I/O simultaneously. Applications can share access to an Expert I/O, but no more than one application at a time can claim it&#8217;s interface.</p>
<p>Now we are ready to read the analog input. Line 11 reads analog input 3 by calling <code class="codecolorer c default"><span class="c">eioAdcReadCount</span></code> and places the result into AdcCount. AdcCount contains a value between 0 and 255, linearly related to the input voltage. If the input voltage is 0V, AdcCount will be 0. If the input voltage is 5V, AdcCount will be 255. AdcCount will vary linearly with the input voltage between 0 and 5V. Notice how we use the handle to identify the Expert I/O.</p>
<p>At this point, you can use AdcCount as needed. For instance, you could make a decision, based on the value of AdcCount, to activate an output or you could plot the time and value on a chart. The possibilities are endless.</p>
<p>When finished accessing the Expert I/O and ready to relinquish control of its interface, call <code class="codecolorer c default"><span class="c">eioReleaseInterface<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> (line 14 in our example). With the interface released, it is now accessible to other applications that wish to claim it.</p>
<p>The last thing to do is to notify the API that we are finished using it. This is done on line 17 with a call to <code class="codecolorer c default"><span class="c">eioClose<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code>. Closing the API allows it to release any memory that it has allocated and to shut down in a structured manor.</p>
<p>That&#8217;s it. Now you know how to measure pressure using the Expert I/O 1000. It&#8217;s equally easy to monitor other characteristics. In a future article, I&#8217;ll go through the process of measuring temperature.</p>
<p>Please post questions and comments below.</p>
<hr />
<p><span style="font-weight:bold;">Think USB requires you to be shackled to a computer no more than 5 meters away?</span> Think again. This free guide and cheat sheet will show you the light: “TIED IN KNOTS – A Must-Have Guide to Untangling USB Extension Options for PC Based Automation”. <a href="http://www.dajac.com/usb-extension">Get it now!</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2009/10/23/pc-automated-pressure-measurements/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Between Mac and PC: The Expert I/O API</title>
		<link>http://www.dajac.com/blog/2009/10/10/expert-io-api/</link>
		<comments>http://www.dajac.com/blog/2009/10/10/expert-io-api/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 02:50:22 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[Expert I/O]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=148</guid>
		<description><![CDATA[PC based automation doesn&#8217;t need to be difficult. Some application user interfaces are terribly complicated and take forever to learn. Often, even the simple interfaces prove difficult because they make some features impossible to use so that other features are simple.
I see this all the time in products. The Mac vs PC battle (which is [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_334" class="wp-caption alignright" style="width: 94px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/10/mac-pc-s.png" alt="Mac vs PC" title="Expert I/O API is Just Right" width="84" height="95" class="size-full wp-image-334" /><p class="wp-caption-text">Mac vs PC</p></div></p>
<p>PC based automation doesn&#8217;t need to be difficult. Some application user interfaces are terribly complicated and take forever to learn. Often, even the simple interfaces prove difficult because they make some features impossible to use so that other features are simple.</p>
<p>I see this all the time in products. The Mac vs PC battle (which is really Apple vs Microsoft) is a perfect example.<span id="more-148"></span> Both have essentially equivalent hardware power, but they take very different approaches to the user interface. Microsoft gives you access to every option under the sun, while Apple only gives you access to the options that 80% of people use regularly.</p>
<p>Microsoft products generally take longer to understand, but once you get it, you can do whatever you want. Apple gets you off the ground quickly, but if you are a power user, you will tend to be frustrated by a system that holds you back.</p>
<p>The Expert I/O application programmer&#8217;s interface (API) is a good mix between these two extremes. It is simple to learn and at the same time doesn&#8217;t hold you back.</p>
<p>Right from the start, your life is made easy by allowing you to use your favorite programming language. The only stipulation is that it must support the use of dynamic link libraries (DLL&#8217;s) and it&#8217;s hard to find a language that doesn&#8217;t. You can use Visual Basic, C, C++, Delphi, Pascal, etc. You can even use scripting languages such as PHP and Python. Wouldn&#8217;t that be cool, a remote accessible web application built with PHP to control a PC based automation system.</p>
<p>Here is a simple example of using C to set a digital output high.</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Open the Expert I/O API.</span><br />
eioOpen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Scan the USB and gather descriptors.</span><br />
eioGetDescriptors<span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>DescriptorGroup <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Claim the interface.</span><br />
eioClaimInterface<span style="color: #009900;">&#40;</span> DescriptorGroup.<span style="color: #202020;">Descriptors</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>EioHandle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Set digital output voltage high to 3.3V.</span><br />
eioDioSetPull<span style="color: #009900;">&#40;</span> EioHandle<span style="color: #339933;">,</span> 2<span style="color: #339933;">,</span> eioDIO_PULL_3_3 <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Set bit 0 of port 2 high.</span><br />
eioDioSet<span style="color: #009900;">&#40;</span> EioHandle<span style="color: #339933;">,</span> 2<span style="color: #339933;">,</span> 1 <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Release the interface.</span><br />
eioReleaseInterface<span style="color: #009900;">&#40;</span> EioHandle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Close the Expert I/O API.</span><br />
eioClose<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Lines 1 through 8 are initialization and only need to be executed once. The initialization starts with calling <code class="codecolorer c default"><span class="c">eioOpen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code>. This allows the API to configure its internal settings and ready itself for communicating on the USB.</p>
<p>The next step is to call <code class="codecolorer c default"><span class="c">eioGetDescriptors<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> to scan each USB bus and locate all Expert I/O devices. It returns a <code class="codecolorer c default"><span class="c">DescriptorGroup</span></code> which contains an array of <code class="codecolorer c default"><span class="c">Descriptors<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span></span></code>. Each descriptor in <code class="codecolorer c default"><span class="c">Descriptors<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span></span></code> describes an Expert I/O found connected to the USB.
<p>Descriptors contain a model ID and a serial number. By inspecting the descriptors, you can locate the specific Expert I/O you wish to access. For the purpose of this example, we simply choose the first device found on the bus. On line 8, we use the first descriptor to obtain a handle to the device.</p>
<p>A devices handle is exactly as it sounds. It is a &#8220;handle&#8221; to grab hold of the Expert I/O to control it. The handle is used every time you perform an operation on the device.</p>
<p>Line 8 serves another purpose, it claims the Expert I/O&#8217;s interface for exclusive use by our application. This is important, because the last thing you want is 2 applications trying to control the same Expert I/O simultaneously. Applications can share access to an Expert I/O, but no more than one application at a time can claim it&#8217;s interface.</p>
<p>Now we are ready to start controlling the Expert I/O. Line 11 configures a digital output (port 2) to 3.3V logic high (<code class="codecolorer c default"><span class="c">eioDIO_PULL_3_3</span></code>). Notice how we use the handle to identify the Expert I/O.</p>
<p>Line 14 is the line that causes the digital output to change states. It sets bit 0 of port 2 high. Each port consists of 8 pins and each pin is associated with a bit in an 8-bit value. The 1 in this function call puts a 1 in the bit 0 position of the port (binary 1 is 00000001) and thereby forces its associated pin to logic high.</p>
<p>At this point, you can include code to control any other ports on the Expert I/O as you see fit.</p>
<p>When finished accessing the Expert I/O and ready to relinquish control of its interface, call <code class="codecolorer c default"><span class="c">eioReleaseInterface<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> (line 17 in our example). With the interface released, it is now accessible to other applications that wish to claim it.</p>
<p>The last thing to do is to notify the API that we are finished using it. This is done on line 20 with a call to <code class="codecolorer c default"><span class="c">eioClose<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code>. Closing the API allows it to release any memory that it has allocated and to shut down in a structured manor.</p>
<p>This is only a small example, but once it is in place and working, expanding it to control other I/O ports is very easy. There is a set of simple interface functions for each I/O type (motor, analog in, analog out, etc.). These are explained in complete detail in the <a href="http://www.dajac.com/files/eio_software_manual.pdf">software user manual</a>.</p>
<p>If you have questions or comments, please post them below.</p>
<p>&nbsp;</p>
<hr />
<p>Struggling with extending the USB connection? Be sure to check out <a href="http://www.dajac.com/usb-extension">TIED IN KNOTS – A Must-Have Guide to Untangling USB Extension Options for PC Based Automation</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2009/10/10/expert-io-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Expert I/O 1000 is a Golden Mousetrap Finalist</title>
		<link>http://www.dajac.com/blog/2009/09/14/expert-io-1000-is-a-golden-mousetrap-finalist/</link>
		<comments>http://www.dajac.com/blog/2009/09/14/expert-io-1000-is-a-golden-mousetrap-finalist/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 20:58:20 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[Design News]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[Golden Mousetrap]]></category>
		<category><![CDATA[press]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=266</guid>
		<description><![CDATA[
Earlier this year, we entered the Expert I/O 1000 in the 2009 Design News Golden Mousetrap contest. Today, we are proud to announce that it was selected as a finalist in the Test &#038; Measurement category. It&#8217;s a great honor to be standing shoulder to shoulder with the likes of Agilent, National Instruments and ABB [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_268" class="wp-caption alignright" style="width: 105px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/09/golden_mousetrap.jpg" alt="2009 Golden Mousetrap Finalist" title="Golden Mousetrap" width="95" height="95" class="size-full wp-image-268" /><p class="wp-caption-text">2009 Golden Mousetrap Finalist</p></div></p>
<p>
Earlier this year, we entered the Expert I/O 1000 in the 2009 Design News Golden Mousetrap contest. Today, we are proud to announce that it was selected as a finalist in the Test &#038; Measurement category. It&#8217;s a great honor to be standing shoulder to shoulder with the likes of Agilent, National Instruments and ABB who also attained top positions in the same category.
</p>
<p>
For more than two decades, the Design News Awards Program has recognized engineering innovation and creativity in product design. This year, Golden Mousetrap awards were given in four major categories: Electronics, Motion Control/Automation, Hardware/Software, Materials/Fastening/Joining/Assembly, and 20 subcategories. Design News gathered a record number of entries, distributing them to their beat editors for judging. Based on the editors&#8217; expertise in each technology area, 71 finalists and 23 winners were selected.<span id="more-266"></span>
</p>
<p><div id="attachment_275" class="wp-caption aligncenter" style="width: 460px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/09/golden_mousetrap_finalist_2009.jpg" alt="Expert I/O 1000 is a 2009 Golden Mousetrap Finalist." title="2009 Golden Mousetrap Finalist" width="450" height="348" class="size-full wp-image-275" /><p class="wp-caption-text">Expert I/O 1000 is a 2009 Golden Mousetrap Finalist.</p></div></p>
<p>
&#8220;Design News congratulates the winners and finalists of the 2009 Golden Mousetrap Awards for the great work they&#8217;ve done to develop new and innovative products for design engineers,&#8221; said Design News Editor-in-Chief Karen Field. &#8220;These products showcase the highly imaginative ways that today&#8217;s engineers are ‘building a better mousetrap,’ and we thank them for their contributions.&#8221;
</p>
<p>
Read more:</p>
<blockquote><p>
<a target="_blank" href="http://www.designnews.com/article/346227-Come_Join_the_Golden_Mousetrap_Party.php">Design News web Announcement</a><br />
<a target="_blank" href="http://www.designnews.com/channel/Golden_Mousetrap_Finalists.php">Complete List of Finalists</a><br />
<a target="_blank" href="http://www.designnews.com/channel/Golden_Mousetrap_Winners.php">Complete List of Winners</a><br />
Pages 52-55 of the September 2009 Design News Print Magazine
</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2009/09/14/expert-io-1000-is-a-golden-mousetrap-finalist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expert I/O 1000 Gets Press</title>
		<link>http://www.dajac.com/blog/2009/08/28/expert-io-1000-gets-press/</link>
		<comments>http://www.dajac.com/blog/2009/08/28/expert-io-1000-gets-press/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 16:13:57 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[Design World]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[press]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=241</guid>
		<description><![CDATA[Dajac recently published a press release describing the Expert I/O 1000. As has been the case time and again, we received a very positive response. It was published on no less than 13 technical magazine web sites (listed below) and this month, it was included in print for the first time. The August 2009 edition [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_244" class="wp-caption alignright" style="width: 90px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/08/design_world_aug_09.jpg" alt="Design World August 2009" title="Includes Expert I/O 1000 Showcase" width="80" height="95" class="size-full wp-image-244" /><p class="wp-caption-text">Design World August 2009</p></div></p>
<p>Dajac recently published a press release describing the Expert I/O 1000. As has been the case time and again, we received a very positive response. It was published on no less than 13 technical magazine web sites (listed below) and this month, it was included in print for the first time. The August 2009 edition of Design World magazine gave it more than a fourth of a page!</p>
<p>To celebrate this milestone, we are offering special pricing for a limited time. <span style="font-weight:bold; color:rgb(0, 128, 0);">Mention Design World magazine</span> during your Expert I/O 1000 purchase and <span style="font-weight:bold; color:rgb(0, 128, 0);">receive a 25% discount</span>. You&#8217;ll have to <a href="https://www.dajac.com/order1.php">act quick</a>. This offer only lasts through September 8th, 2009.<span id="more-241"></span></p>
<p><div id="attachment_245" class="wp-caption alignright" style="width: 460px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/08/npi_pr_design_world.jpg" alt="The Expert I/O 1000 received showcase coverage in the August 2009 issue of Design World magazine." title="Expert I/O 1000 Showcase" width="450" height="318" class="size-full wp-image-245" /><p class="wp-caption-text">The Expert I/O 1000 received showcase coverage in the August 2009 issue of Design World magazine.</p></div></p>
<p>We don&#8217;t pay for these articles, magazines pick up the press release and make a decision to publish it based on their readers&#8217; interests. That being the case, there are no guarantees that we will be notified when showcase articles are published. Therefore, if you see the Expert I/O 1000 press release in additional magazines, either online or in print, please post a comment to this article. We&#8217;d love to hear about it.</p>
<p>The following is a list of all the online magazines that have showcased the Expert I/O 1000.</p>
<p><a href="http://www.automation.com/content/dajac-announces-new-usb-controlled-io-module-for-pc-based-automation">Automation</a><br />
<a href="http://www.automationworld.com/products-5686">Automation World</a><br />
<a href="http://www.chemicalprocessing.com/vendors/products/2009/314.html">Chemical Processing</a><br />
<a href="http://www.designworldonline.com/articles/4206/USB-Controlled-IO-Module-for-PC-Based-Automation.aspx">Design World</a><br />
<a href="http://www.ecnmag.com/product-control-module-072109.aspx">ECN</a><br />
<a href="http://www.eepn.com/Locator/Products/Index.cfm?ArticleID=38190">Electronic Design</a><br />
<a href="http://www2.electronicproducts.com/USB_I_O_module_handles_digital_analog_motor-article-bpjh04_oct2009-html.aspx">Electronic Products</a><br />
<a href="http://www.embedded.com/products/oem/218101632?_requestid=294214">Embedded</a><br />
<a href="http://www.industrialcontroldesignline.com/showArticle.jhtml;jsessionid=KO4XKS0A4HQRIQSNDLOSKHSCJUNN2JVN?articleID=218101608&#038;queryText=dajac">Industrial Control Designline</a><br />
<a href="http://www.motioncontrol.com/companies/index.cfm/Dajac-Corporation">Motion Control</a><br />
<a href="http://www.motioncontroltips.com/2009/06/23/usb-controlled-io-module-for-pc-based-automation/">Motion Control Tips</a><br />
<a href="http://www.pddnet.com/product-automation-module-070109/?terms=dajac">Product Design and Development</a><br />
<a href="http://www.rdmag.com/Tools-And-Technology/2009/06/USB-I-O-module-for-PC-based-automation/">R &#038; D</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2009/08/28/expert-io-1000-gets-press/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Understanding Expert I/O 1000 Access Times</title>
		<link>http://www.dajac.com/blog/2009/08/14/understanding-expert-io-1000-access-times/</link>
		<comments>http://www.dajac.com/blog/2009/08/14/understanding-expert-io-1000-access-times/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 19:06:38 +0000</pubDate>
		<dc:creator>David Novak</dc:creator>
				<category><![CDATA[I/O Modules]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[Expert I/O]]></category>
		<category><![CDATA[rate]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[timing]]></category>

		<guid isPermaLink="false">http://www.dajac.com/blog/?p=56</guid>
		<description><![CDATA[I often get questions about the Expert I/O 1000&#8217;s access time characteristics. The short answer is that you can change outputs at a rate of 100Hz and you can read inputs at 50Hz. However, the complete answer is more complicated.
When dealing with MS Windows on a PC, it&#8217;s not possible to get absolute realtime results. [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_168" class="wp-caption alignright" style="width: 79px"><img src="http://www.dajac.com/blog/wp-content/uploads/2009/08/timing.jpg" alt="Expert I/O Timing" title="Timing Diagram" width="69" height="57" class="size-full wp-image-168" /><p class="wp-caption-text">Expert I/O Timing</p></div></p>
<p>I often get questions about the Expert I/O 1000&#8217;s access time characteristics. The short answer is that you can change outputs at a rate of 100Hz and you can read inputs at 50Hz. However, the complete answer is more complicated.</p>
<p>When dealing with MS Windows on a PC, it&#8217;s not possible to get absolute realtime results. You will always have some variability in timing. However, Dajac&#8217;s USB implementation directly associates the timing to guaranteed values in the USB specification. Therefore, we know the guaranteed worst case access times at the USB level. <span id="more-56"></span></p>
<p>Nothing prevents Windows from providing faster access, but it&#8217;s not guaranteed and will depend on such things as processor load and software implementation techniques.</p>
<p>Obviously, the Expert I/O 1000 is not the fastest device you&#8217;ll find, but we knew that would be the case when we designed it. A very large number of applications exist where the Expert I/O 1000 is plenty fast enough and in our experience, guaranteed latency has always been more important than raw speed. You&#8217;ll also pay a great deal more for faster solutions.</p>
<p>Here are access time test results. I included ADC inputs and digital I/O, but these numbers will hold for all inputs and outputs. </p>
<p><strong>Sample an Analog Input</strong><br />
Number of Accesses:  1000<br />
Minimum Access Time: 9475.5 us (105.54 Hz)<br />
Maximum Access Time: 23847 us (41.935 Hz)<br />
Average Access Time: 21519 us (46.47 Hz)</p>
<p><strong>Set a Digital Output Port</strong><br />
Number of Accesses:  1000<br />
Minimum Access Time: 3430.1 us (291.54 Hz)<br />
Maximum Access Time: 15876 us (62.987 Hz)<br />
Average Access Time: 10673 us (93.697 Hz)</p>
<p><strong>Sample a Digital Input Port</strong><br />
Number of Accesses:  1000<br />
Minimum Access Time: 15210 us (65.745 Hz)<br />
Maximum Access Time: 23915 us (41.815 Hz)<br />
Average Access Time: 21527 us (46.452 Hz)</p>
<p>If you have concerns about timing, keep in mind that if the Expert I/O 1000 doesn&#8217;t work for you, return it within 30 days and we&#8217;ll give you a full refund.</p>
<p>What other aspects of the Expert I/O 1000 would you like more detail about? Put your suggestions in the comments below and I&#8217;ll address them in future articles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dajac.com/blog/2009/08/14/understanding-expert-io-1000-access-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

