
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://combustory.com/wiki/skins/common/feed.css?301"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://combustory.com/wiki/index.php?feed=atom&amp;target=WikiSysop&amp;title=Special%3AContributions%2FWikiSysop</id>
		<title>Combustory - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://combustory.com/wiki/index.php?feed=atom&amp;target=WikiSysop&amp;title=Special%3AContributions%2FWikiSysop"/>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Special:Contributions/WikiSysop"/>
		<updated>2026-04-04T08:00:25Z</updated>
		<subtitle>From Combustory</subtitle>
		<generator>MediaWiki 1.17.0</generator>

	<entry>
		<id>http://combustory.com/wiki/index.php/Talk:RTC1307_-_Real_Time_Clock</id>
		<title>Talk:RTC1307 - Real Time Clock</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Talk:RTC1307_-_Real_Time_Clock"/>
				<updated>2009-07-04T02:23:14Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock</id>
		<title>RTC1307 - Real Time Clock</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock"/>
				<updated>2009-07-04T02:21:43Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{default}}&lt;br /&gt;
__TOC__ &lt;br /&gt;
== Summary ==&lt;br /&gt;
This code shows how to communicate with the RTC DS1307 Real Time Clock, which is used to set and retrieve the date/time of the chip. As a bonus there are some additional bytes of data that can be used as general purpose memory.  The main reason for my use of this code is to be able to log events that occur in my applications.  I recommend for you to get the RTC DS1307 data sheet to help with understanding what was done here.  The bottom line is that I have created this program to accept commands via serial communication with a PC to instruct the Arduino to send or receive data via I2C to the storage registers of the RTC DS1307 chip. &lt;br /&gt;
&lt;br /&gt;
Note of gratitude to [http://www.glacialwanderer.com/hobbyrobotics/?p=12 Maurice Ribble - http://www.glacialwanderer.com/hobbyrobotics/?p=12] for the majority of the RTC DS1307 code.  To not repeat his excellent instructions on this chip I highly recommend you visit his site on this topic.  All I did here was expand his code a to get a little more functionality out of the DS1307 chip.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
=== DS1307 Chip ===&lt;br /&gt;
&lt;br /&gt;
[[Image:DS1307_pin_out.jpg |left|thumb|300px|]]&lt;br /&gt;
&lt;br /&gt;
If you want to take the easy route, spend the extra bucks and buy a [http://www.sparkfun.com/commerce/product_info.php?products_id=99 Spark Fun] ready to go unit for around $20.  However, if you really prefer spending an extra hour or so (In my case 4 hours, but you get the benefit of my labor ;~), then buy a few chips from Digikey or Mouser. I think I spent a couple bucks to pay for the chip and the crystal, I ended up having to use two resistors as well, but those were from my existing inventory. If you go the chip route, just keep in mind that shipping can be significant, so you will want to buy more than just the chip. &lt;br /&gt;
&lt;br /&gt;
The reason I had to use the resistors, was to create a voltage divider to create a voltage on the battery backup pin.  As I found out and fortunately you will not endure because you are reading this right now, is that the battery pin must have 2.5-3vdc to operate properly or the chip will stop responding to IC2 requests. Ok, we all know the rule, &amp;quot;When all else fails, READ THE DIRECTIONS&amp;quot;. As wisdom will have it, I eventually read this seemingly insignificant information in the Data Sheet. Well if I get the time I will outline all the details on the parts and schematic, but the bottom line is that I was still to cheap to buy a 3v battery, so I just used the voltage divider to drop the 5vdc supply. The absolute most funny part is that the chip does run just fine without the 3vdc...... sometimes.  Meaning you think you have it all worked out and then......... sometimes.  Hence four hours.  But your not going to make that mistake are you?  Because you are here.  Soooooooo, after all is said and done the chip is very stable and works as expected and is reliable.  &lt;br /&gt;
&lt;br /&gt;
Now with all the wires flying on the breadboard, sometimes with voltage (Do as I say not as I do!), it is amazing that the chip even works anymore, but there is one further note I need to make about my chip. It is supposed to have 64 registers, but mine only has 31 registers that work.  Who knows, did I kill them?, or did I get a bad part? Either way the pointer still rolls through the dead registers as if they were there, but they do not accept any writing. I only bought one of these chips, so I could not test for repeatability.  No worry though, hopefully you will have better luck, and I will eventually get another chip to test. &lt;br /&gt;
&lt;br /&gt;
This page does not cover the clock output pin that has several settings for outputting a clock frequency, so I will leave it to the reader to figure that function out, as I have no need for that right now.  Another interesting feature on this chip is that the time and memory is maintained as long as you have that battery backup at 2.5-3v. But if the chip goes into backup mode, you will not be able to read or write to any of the registers.  One misleading piece of data in the Data Sheet is that the memory is non-volatile, well that is true as long as you have the battery backup power.  In my voltage divider method, when the power is gone it is gone-gone, so basically no data is retained, but that is exactly why I made the date/time setting command, because I just reset it from the host software that I use to control the Arduino. Go to [[Arduino Communications]] to see how I am communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
There are basically only two operations that control this chip, a read or write to 64 data registers and the process is similar for both read or write.&lt;br /&gt;
&lt;br /&gt;
* Reading Data&lt;br /&gt;
** Reading date/time&lt;br /&gt;
*** Open the I2C communication in write mode.&lt;br /&gt;
*** Set the register pointer to (0x00) - To read the date/time you reset the pointer to the first register.&lt;br /&gt;
*** End write mode.&lt;br /&gt;
*** Open I2C in read mode and read seven bytes of data.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);   // Open I2C line in write mode&lt;br /&gt;
  Wire.send(0x00);                              // Set the register pointer to (0x00)&lt;br /&gt;
  Wire.endTransmission();                       // End Write Transmission &lt;br /&gt;
&lt;br /&gt;
  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);      // Open the I2C line in send mode&lt;br /&gt;
&lt;br /&gt;
  second     = bcdToDec(Wire.receive() &amp;amp; 0x7f); // Read seven bytes of data&lt;br /&gt;
  minute     = bcdToDec(Wire.receive());&lt;br /&gt;
  hour       = bcdToDec(Wire.receive() &amp;amp; 0x3f);  &lt;br /&gt;
  dayOfWeek  = bcdToDec(Wire.receive());&lt;br /&gt;
  dayOfMonth = bcdToDec(Wire.receive());&lt;br /&gt;
  month      = bcdToDec(Wire.receive());&lt;br /&gt;
  year       = bcdToDec(Wire.receive());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Reading Memory - The process is essentially the same as Reading date/time with two small differences&lt;br /&gt;
*** (1) You have to set the register pointer where you want to read the memory.&lt;br /&gt;
*** (2) You have to indicate how many bytes to read.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);  &lt;br /&gt;
  Wire.send(0x08);                             // Set the register pointer to (0x08) to read first memory byte&lt;br /&gt;
  Wire.endTransmission();                      &lt;br /&gt;
&lt;br /&gt;
  Wire.requestFrom(DS1307_I2C_ADDRESS, 1);     // In this case only read one byte&lt;br /&gt;
&lt;br /&gt;
  temp_byte     = Wire.receive();              // Read the desired byte&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Write date/time.&lt;br /&gt;
** Open the I2C communication in write mode.&lt;br /&gt;
** Set the register pointer to (0x00) - To write the date/time you reset the pointer to the first register.&lt;br /&gt;
** Write seven bytes of data.&lt;br /&gt;
** End write mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   Wire.beginTransmission(DS1307_I2C_ADDRESS);  // Open I2C line in write mode&lt;br /&gt;
&lt;br /&gt;
   Wire.send(0x00);                           // Set the register pointer to (0x00)&lt;br /&gt;
   Wire.send(decToBcd(second));               // Write seven bytes&lt;br /&gt;
   Wire.send(decToBcd(minute));&lt;br /&gt;
   Wire.send(decToBcd(hour));      &lt;br /&gt;
   Wire.send(decToBcd(dayOfWeek));&lt;br /&gt;
   Wire.send(decToBcd(dayOfMonth));&lt;br /&gt;
   Wire.send(decToBcd(month));&lt;br /&gt;
   Wire.send(decToBcd(year));&lt;br /&gt;
   Wire.endTransmission();                    // End write mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Writing Memory - The process is essentially the same as writing date/time with two small differences&lt;br /&gt;
*** (1) You have to set the register pointer where you want to write the memory.&lt;br /&gt;
*** (2) Now write the byte value you want in that memory location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note: You can continue writing and the register pointer will go to the next memory location. When the pointer reaches the end of the memory it will start back at the beginning, which will overwrite your date/time if you are not careful.''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);  &lt;br /&gt;
  Wire.send(0xf3);                             // Set the register pointer to (0xf3) to write the 11th memory byte&lt;br /&gt;
  Wire.send(0xa6);                             // Write the desired byte value&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RTC_DS1307_v.01 code ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * RTC Control v.01&lt;br /&gt;
 * by &amp;lt;http://www.combustory.com&amp;gt; John Vaughters&lt;br /&gt;
 * Credit to:&lt;br /&gt;
 * Maurice Ribble - http://www.glacialwanderer.com/hobbyrobotics for RTC DS1307 code&lt;br /&gt;
 *&lt;br /&gt;
 * With this code you can set the date/time, retreive the date/time and use the extra memory of an RTC DS1307 chip.  &lt;br /&gt;
 * The program also sets all the extra memory space to 0xff.&lt;br /&gt;
 * Serial Communication method with the Arduino that utilizes a leading CHAR for each command described below. &lt;br /&gt;
 * Commands:&lt;br /&gt;
 * T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99) - T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year) - T Sets the date of the RTC DS1307 Chip. &lt;br /&gt;
 * Example to set the time for 02-Feb-09 @ 19:57:11 for the 3 day of the week, use this command - T1157193020209&lt;br /&gt;
 * Q(1-2) - (Q1) Memory initialization  (Q2) RTC - Memory Dump&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Wire.h&amp;quot;&lt;br /&gt;
#define DS1307_I2C_ADDRESS 0x68  // This is the I2C address&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Global Variables&lt;br /&gt;
&lt;br /&gt;
int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
int i;&lt;br /&gt;
long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;&lt;br /&gt;
byte test; &lt;br /&gt;
  &lt;br /&gt;
// Convert normal decimal numbers to binary coded decimal&lt;br /&gt;
byte decToBcd(byte val)&lt;br /&gt;
{&lt;br /&gt;
  return ( (val/10*16) + (val%10) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Convert binary coded decimal to normal decimal numbers&lt;br /&gt;
byte bcdToDec(byte val)&lt;br /&gt;
{&lt;br /&gt;
  return ( (val/16*10) + (val%16) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 1) Sets the date and time on the ds1307&lt;br /&gt;
// 2) Starts the clock&lt;br /&gt;
// 3) Sets hour mode to 24 hour clock&lt;br /&gt;
// Assumes you're passing in valid numbers, Probably need to put in checks for valid numbers.&lt;br /&gt;
 &lt;br /&gt;
void setDateDs1307()                &lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
   second = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48)); // Use of (byte) type casting and ascii math to achieve result.  &lt;br /&gt;
   minute = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   hour  = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   dayOfWeek = (byte) (Serial.read() - 48);&lt;br /&gt;
   dayOfMonth = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   month = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   year= (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   Wire.beginTransmission(DS1307_I2C_ADDRESS);&lt;br /&gt;
   Wire.send(0x00);&lt;br /&gt;
   Wire.send(decToBcd(second));    // 0 to bit 7 starts the clock&lt;br /&gt;
   Wire.send(decToBcd(minute));&lt;br /&gt;
   Wire.send(decToBcd(hour));      // If you want 12 hour am/pm you need to set&lt;br /&gt;
                                   // bit 6 (also need to change readDateDs1307)&lt;br /&gt;
   Wire.send(decToBcd(dayOfWeek));&lt;br /&gt;
   Wire.send(decToBcd(dayOfMonth));&lt;br /&gt;
   Wire.send(decToBcd(month));&lt;br /&gt;
   Wire.send(decToBcd(year));&lt;br /&gt;
   Wire.endTransmission();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Gets the date and time from the ds1307 and prints result&lt;br /&gt;
void getDateDs1307()&lt;br /&gt;
{&lt;br /&gt;
  // Reset the register pointer&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);&lt;br /&gt;
  Wire.send(0x00);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
&lt;br /&gt;
  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);&lt;br /&gt;
&lt;br /&gt;
  // A few of these need masks because certain bits are control bits&lt;br /&gt;
  second     = bcdToDec(Wire.receive() &amp;amp; 0x7f);&lt;br /&gt;
  minute     = bcdToDec(Wire.receive());&lt;br /&gt;
  hour       = bcdToDec(Wire.receive() &amp;amp; 0x3f);  // Need to change this if 12 hour am/pm&lt;br /&gt;
  dayOfWeek  = bcdToDec(Wire.receive());&lt;br /&gt;
  dayOfMonth = bcdToDec(Wire.receive());&lt;br /&gt;
  month      = bcdToDec(Wire.receive());&lt;br /&gt;
  year       = bcdToDec(Wire.receive());&lt;br /&gt;
  &lt;br /&gt;
  Serial.print(hour, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
  Serial.print(minute, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
  Serial.print(second, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;  &amp;quot;);&lt;br /&gt;
  Serial.print(month, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;/&amp;quot;);&lt;br /&gt;
  Serial.print(dayOfMonth, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;/&amp;quot;);&lt;br /&gt;
  Serial.print(year, DEC);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Wire.begin();&lt;br /&gt;
  Serial.begin(57600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
      command = Serial.read();&lt;br /&gt;
      if (command == 84) {      //If command = &amp;quot;T&amp;quot; Set Date&lt;br /&gt;
       setDateDs1307();&lt;br /&gt;
       getDateDs1307();&lt;br /&gt;
       Serial.println(&amp;quot; &amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      else if (command == 81) {      //If command = &amp;quot;Q&amp;quot; RTC1307 Memory Functions&lt;br /&gt;
        delay(100);     &lt;br /&gt;
        if (Serial.available()) {&lt;br /&gt;
         command = Serial.read(); &lt;br /&gt;
         if (command == 49) {      //If command = &amp;quot;1&amp;quot; RTC1307 Initialize Memory - All Data will be set to 255 (0xff).  Therefore 255 or 0 will be an invalid value.  &lt;br /&gt;
          Wire.beginTransmission(DS1307_I2C_ADDRESS); // 255 will be the init value and 0 will be cosidered an error that occurs when the RTC is in Battery mode.&lt;br /&gt;
          Wire.send(0x08); // Set the register pointer to be just past the date/time registers.&lt;br /&gt;
         for (i = 1; i &amp;lt;= 27; i++) {&lt;br /&gt;
             Wire.send(0xff);&lt;br /&gt;
            delay(100);&lt;br /&gt;
         }   &lt;br /&gt;
         Wire.endTransmission();&lt;br /&gt;
         getDateDs1307();&lt;br /&gt;
         Serial.println(&amp;quot;: RTC1307 Initialized Memory&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
         else if (command == 50) {      //If command = &amp;quot;2&amp;quot; RTC1307 Memory Dump&lt;br /&gt;
          getDateDs1307();&lt;br /&gt;
          Serial.println(&amp;quot;: RTC 1307 Dump Begin&amp;quot;);&lt;br /&gt;
          Wire.beginTransmission(DS1307_I2C_ADDRESS);&lt;br /&gt;
          Wire.send(0x00);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.requestFrom(DS1307_I2C_ADDRESS, 64);&lt;br /&gt;
          for (i = 1; i &amp;lt;= 64; i++) {&lt;br /&gt;
             test = Wire.receive();&lt;br /&gt;
             Serial.print(i);&lt;br /&gt;
             Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
             Serial.println(test, DEC);&lt;br /&gt;
          }&lt;br /&gt;
          Serial.println(&amp;quot; RTC1307 Dump end&amp;quot;);&lt;br /&gt;
         } &lt;br /&gt;
        }  &lt;br /&gt;
       }&lt;br /&gt;
      Serial.print(&amp;quot;Command: &amp;quot;);&lt;br /&gt;
      Serial.println(command);     // Echo command CHAR in ascii that was sent&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      command = 0;                 // reset command &lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
//*****************************************************The End***********************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC_DS1307_v.01 User Guide ==&lt;br /&gt;
&lt;br /&gt;
Not much to say here, I tend to use the Arduino in the [[Arduino Communications]] Method, so maybe someday I will present the other part of the controlling SW I made for this tool, but I will have to make changes to get it to work correctly for this particular set-up.  &lt;br /&gt;
&lt;br /&gt;
For now just enter the commands from the Arduino Environment or your favorite serial communications method.&lt;br /&gt;
&lt;br /&gt;
==== Commands ====&lt;br /&gt;
&lt;br /&gt;
* T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99) - T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year) - T Sets the date of the RTC DS1307 Chip. &lt;br /&gt;
** Example to set the time for 02-Feb-09 @ 19:57:11 for the 3 day of the week, use this command - T1157193020209&lt;br /&gt;
* Q1 - This command will initialize all the non date/time memory to 255 (0xff)&lt;br /&gt;
** I do this because when the RTC DS1307 goes into back up mode it returns 0 for any register, so for memory usage a 0 will be considered a failure to read memory and 255 will be a default value. Meaning it is considered null.&lt;br /&gt;
* Q2 - This command will Dump all 64 registers to the serial buffer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Electronics]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock</id>
		<title>RTC1307 - Real Time Clock</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock"/>
				<updated>2009-07-04T02:19:32Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{default}}&lt;br /&gt;
__TOC__ &lt;br /&gt;
== Summary ==&lt;br /&gt;
This code shows how to communicate with the RTC DS1307 Real Time Clock, which is used to set and retrieve the date/time of the chip. As a bonus there are some additional bytes of data that can be used as general purpose memory.  The main reason for my use of this code is to be able to log events that occur in my applications.  I recommend for you to get the RTC DS1307 data sheet to help with understanding what was done here.  The bottom line is that I have created this program to accept commands via serial communication with a PC to instruct the Arduino to send or receive data via I2C to the storage registers of the RTC DS1307 chip. &lt;br /&gt;
&lt;br /&gt;
Note of gratitude to [http://www.glacialwanderer.com/hobbyrobotics/?p=12 Maurice Ribble - http://www.glacialwanderer.com/hobbyrobotics/?p=12] for the majority of the RTC DS1307 code.  To not repeat his excellent instructions on this chip I highly recommend you visit his site on this topic.  All I did here was expand his code a to get a little more functionality out of the DS1307 chip.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
&lt;br /&gt;
=== DS1307 Chip ===&lt;br /&gt;
&lt;br /&gt;
[[Image:DS1307_pin_out.jpg |left|thumb|300px|]]&lt;br /&gt;
&lt;br /&gt;
If you want to take the easy route, spend the extra bucks and buy a [http://www.sparkfun.com/commerce/product_info.php?products_id=99 Spark Fun] ready to go unit for around $20.  However, if you really prefer spending an extra hour or so (In my case 4 hours, but you get the benefit of my labor ;~), then buy a few chips from Digikey or Mouser. I think I spent a couple bucks to pay for the chip and the crystal, I ended up having to use two resistors as well, but those were from my existing inventory. If you go the chip route, just keep in mind that shipping can be significant, so you will want to buy more than just the chip. &lt;br /&gt;
&lt;br /&gt;
The reason I had to use the resistors, was to create a voltage divider to create a voltage on the battery backup pin.  As I found out and fortunately you will not endure because you are reading this right now, is that the battery pin must have 2.5-3vdc to operate properly or the chip will stop responding to IC2 requests. Ok, we all know the rule, &amp;quot;When all else fails, READ THE DIRECTIONS&amp;quot;. As wisdom will have it, I eventually read this seemingly insignificant information in the Data Sheet. Well if I get the time I will outline all the details on the parts and schematic, but the bottom line is that I was still to cheap to buy a 3v battery, so I just used the voltage divider to drop the 5vdc supply. The absolute most funny part is that the chip does run just fine without the 3vdc...... sometimes.  Meaning you think you have it all worked out and then......... sometimes.  Hence four hours.  But your not going to make that mistake are you?  Because you are here.  Soooooooo, after all is said and done the chip is very stable and works as expected and is reliable.  &lt;br /&gt;
&lt;br /&gt;
Now with all the wires flying on the breadboard, sometimes with voltage (Do as I say not as I do!), it is amazing that the chip even works anymore, but there is one further note I need to make about my chip. It is supposed to have 64 registers, but mine only has 31 registers that work.  Who knows, did I kill them?, or did I get a bad part? Either way the pointer still rolls through the dead registers as if they were there, but they do not accept any writing. I only bought one of these chips, so I could not test for repeatability.  No worry though, hopefully you will have better luck, and I will eventually get another chip to test. &lt;br /&gt;
&lt;br /&gt;
This page does not cover the clock output pin that has several settings for outputting a clock frequency, so I will leave it to the reader to figure that function out, as I have no need for that right now.  Another interesting feature on this chip is that the time and memory is maintained as long as you have that battery backup at 2.5-3v. But if the chip goes into backup mode, you will not be able to read or write to any of the registers.  One misleading piece of data in the Data Sheet is that the memory is non-volatile, well that is true as long as you have the battery backup power.  In my voltage divider method, when the power is gone it is gone-gone, so basically no data is retained, but that is exactly why I made the date/time setting command, because I just reset it from the host software that I use to control the Arduino. Go to [[Arduino Communications]] to see how I am communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
There are basically only two operations that control this chip, a read or write to 64 data registers and the process is similar for both read or write.&lt;br /&gt;
&lt;br /&gt;
* Reading Data&lt;br /&gt;
** Reading date/time&lt;br /&gt;
*** Open the I2C communication in write mode.&lt;br /&gt;
*** Set the register pointer to (0x00) - To read the date/time you reset the pointer to the first register.&lt;br /&gt;
*** End write mode.&lt;br /&gt;
*** Open I2C in read mode and read seven bytes of data.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);   // Open I2C line in write mode&lt;br /&gt;
  Wire.send(0x00);                              // Set the register pointer to (0x00)&lt;br /&gt;
  Wire.endTransmission();                       // End Write Transmission &lt;br /&gt;
&lt;br /&gt;
  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);      // Open the I2C line in send mode&lt;br /&gt;
&lt;br /&gt;
  second     = bcdToDec(Wire.receive() &amp;amp; 0x7f); // Read seven bytes of data&lt;br /&gt;
  minute     = bcdToDec(Wire.receive());&lt;br /&gt;
  hour       = bcdToDec(Wire.receive() &amp;amp; 0x3f);  &lt;br /&gt;
  dayOfWeek  = bcdToDec(Wire.receive());&lt;br /&gt;
  dayOfMonth = bcdToDec(Wire.receive());&lt;br /&gt;
  month      = bcdToDec(Wire.receive());&lt;br /&gt;
  year       = bcdToDec(Wire.receive());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Reading Memory - The process is essentially the same as Reading date/time with two small differences&lt;br /&gt;
*** (1) You have to set the register pointer where you want to read the memory.&lt;br /&gt;
*** (2) You have to indicate how many bytes to read.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);  &lt;br /&gt;
  Wire.send(0x08);                             // Set the register pointer to (0x08) to read first memory byte&lt;br /&gt;
  Wire.endTransmission();                      &lt;br /&gt;
&lt;br /&gt;
  Wire.requestFrom(DS1307_I2C_ADDRESS, 1);     // In this case only read one byte&lt;br /&gt;
&lt;br /&gt;
  temp_byte     = Wire.receive();              // Read the desired byte&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Write date/time.&lt;br /&gt;
** Open the I2C communication in write mode.&lt;br /&gt;
** Set the register pointer to (0x00) - To write the date/time you reset the pointer to the first register.&lt;br /&gt;
** Write seven bytes of data.&lt;br /&gt;
** End write mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   Wire.beginTransmission(DS1307_I2C_ADDRESS);  // Open I2C line in write mode&lt;br /&gt;
&lt;br /&gt;
   Wire.send(0x00);                           // Set the register pointer to (0x00)&lt;br /&gt;
   Wire.send(decToBcd(second));               // Write seven bytes&lt;br /&gt;
   Wire.send(decToBcd(minute));&lt;br /&gt;
   Wire.send(decToBcd(hour));      &lt;br /&gt;
   Wire.send(decToBcd(dayOfWeek));&lt;br /&gt;
   Wire.send(decToBcd(dayOfMonth));&lt;br /&gt;
   Wire.send(decToBcd(month));&lt;br /&gt;
   Wire.send(decToBcd(year));&lt;br /&gt;
   Wire.endTransmission();                    // End write mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Writing Memory - The process is essentially the same as writing date/time with two small differences&lt;br /&gt;
*** (1) You have to set the register pointer where you want to write the memory.&lt;br /&gt;
*** (2) Now write the byte value you want in that memory location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note: You can continue writing and the register pointer will go to the next memory location. When the pointer reaches the end of the memory it will start back at the beginning, which will overwrite your date/time if you are not careful.''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);  &lt;br /&gt;
  Wire.send(0xf3);                             // Set the register pointer to (0xf3) to write the 11th memory byte&lt;br /&gt;
  Wire.send(0xa6);                             // Write the desired byte value&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RTC_DS1307_v.01 code ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * RTC Control v.01&lt;br /&gt;
 * by &amp;lt;http://www.combustory.com&amp;gt; John Vaughters&lt;br /&gt;
 * Credit to:&lt;br /&gt;
 * Maurice Ribble - http://www.glacialwanderer.com/hobbyrobotics for RTC DS1307 code&lt;br /&gt;
 *&lt;br /&gt;
 * With this code you can set the date/time, retreive the date/time and use the extra memory of an RTC DS1307 chip.  &lt;br /&gt;
 * The program also sets all the extra memory space to 0xff.&lt;br /&gt;
 * Serial Communication method with the Arduino that utilizes a leading CHAR for each command described below. &lt;br /&gt;
 * Commands:&lt;br /&gt;
 * T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99) - T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year) - T Sets the date of the RTC DS1307 Chip. &lt;br /&gt;
 * Example to set the time for 04-Feb-09 @ 19:57:11 for the 3 day of the week, use this command - T1157193040209&lt;br /&gt;
 * Q(1-2) - (Q1) Memory initialization  (Q2) RTC - Memory Dump&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;Wire.h&amp;quot;&lt;br /&gt;
#define DS1307_I2C_ADDRESS 0x68  // This is the I2C address&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Global Variables&lt;br /&gt;
&lt;br /&gt;
int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
int i;&lt;br /&gt;
long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;&lt;br /&gt;
byte test; &lt;br /&gt;
  &lt;br /&gt;
// Convert normal decimal numbers to binary coded decimal&lt;br /&gt;
byte decToBcd(byte val)&lt;br /&gt;
{&lt;br /&gt;
  return ( (val/10*16) + (val%10) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Convert binary coded decimal to normal decimal numbers&lt;br /&gt;
byte bcdToDec(byte val)&lt;br /&gt;
{&lt;br /&gt;
  return ( (val/16*10) + (val%16) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// 1) Sets the date and time on the ds1307&lt;br /&gt;
// 2) Starts the clock&lt;br /&gt;
// 3) Sets hour mode to 24 hour clock&lt;br /&gt;
// Assumes you're passing in valid numbers, Probably need to put in checks for valid numbers.&lt;br /&gt;
 &lt;br /&gt;
void setDateDs1307()                &lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
   second = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48)); // Use of (byte) type casting and ascii math to achieve result.  &lt;br /&gt;
   minute = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   hour  = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   dayOfWeek = (byte) (Serial.read() - 48);&lt;br /&gt;
   dayOfMonth = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   month = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   year= (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));&lt;br /&gt;
   Wire.beginTransmission(DS1307_I2C_ADDRESS);&lt;br /&gt;
   Wire.send(0x00);&lt;br /&gt;
   Wire.send(decToBcd(second));    // 0 to bit 7 starts the clock&lt;br /&gt;
   Wire.send(decToBcd(minute));&lt;br /&gt;
   Wire.send(decToBcd(hour));      // If you want 12 hour am/pm you need to set&lt;br /&gt;
                                   // bit 6 (also need to change readDateDs1307)&lt;br /&gt;
   Wire.send(decToBcd(dayOfWeek));&lt;br /&gt;
   Wire.send(decToBcd(dayOfMonth));&lt;br /&gt;
   Wire.send(decToBcd(month));&lt;br /&gt;
   Wire.send(decToBcd(year));&lt;br /&gt;
   Wire.endTransmission();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Gets the date and time from the ds1307 and prints result&lt;br /&gt;
void getDateDs1307()&lt;br /&gt;
{&lt;br /&gt;
  // Reset the register pointer&lt;br /&gt;
  Wire.beginTransmission(DS1307_I2C_ADDRESS);&lt;br /&gt;
  Wire.send(0x00);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
&lt;br /&gt;
  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);&lt;br /&gt;
&lt;br /&gt;
  // A few of these need masks because certain bits are control bits&lt;br /&gt;
  second     = bcdToDec(Wire.receive() &amp;amp; 0x7f);&lt;br /&gt;
  minute     = bcdToDec(Wire.receive());&lt;br /&gt;
  hour       = bcdToDec(Wire.receive() &amp;amp; 0x3f);  // Need to change this if 12 hour am/pm&lt;br /&gt;
  dayOfWeek  = bcdToDec(Wire.receive());&lt;br /&gt;
  dayOfMonth = bcdToDec(Wire.receive());&lt;br /&gt;
  month      = bcdToDec(Wire.receive());&lt;br /&gt;
  year       = bcdToDec(Wire.receive());&lt;br /&gt;
  &lt;br /&gt;
  Serial.print(hour, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
  Serial.print(minute, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
  Serial.print(second, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;  &amp;quot;);&lt;br /&gt;
  Serial.print(month, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;/&amp;quot;);&lt;br /&gt;
  Serial.print(dayOfMonth, DEC);&lt;br /&gt;
  Serial.print(&amp;quot;/&amp;quot;);&lt;br /&gt;
  Serial.print(year, DEC);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Wire.begin();&lt;br /&gt;
  Serial.begin(57600);&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
      command = Serial.read();&lt;br /&gt;
      if (command == 84) {      //If command = &amp;quot;T&amp;quot; Set Date&lt;br /&gt;
       setDateDs1307();&lt;br /&gt;
       getDateDs1307();&lt;br /&gt;
       Serial.println(&amp;quot; &amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      else if (command == 81) {      //If command = &amp;quot;Q&amp;quot; RTC1307 Memory Functions&lt;br /&gt;
        delay(100);     &lt;br /&gt;
        if (Serial.available()) {&lt;br /&gt;
         command = Serial.read(); &lt;br /&gt;
         if (command == 49) {      //If command = &amp;quot;1&amp;quot; RTC1307 Initialize Memory - All Data will be set to 255 (0xff).  Therefore 255 or 0 will be an invalid value.  &lt;br /&gt;
          Wire.beginTransmission(DS1307_I2C_ADDRESS); // 255 will be the init value and 0 will be cosidered an error that occurs when the RTC is in Battery mode.&lt;br /&gt;
          Wire.send(0x08); // Set the register pointer to be just past the date/time registers.&lt;br /&gt;
         for (i = 1; i &amp;lt;= 27; i++) {&lt;br /&gt;
             Wire.send(0xff);&lt;br /&gt;
            delay(100);&lt;br /&gt;
         }   &lt;br /&gt;
         Wire.endTransmission();&lt;br /&gt;
         getDateDs1307();&lt;br /&gt;
         Serial.println(&amp;quot;: RTC1307 Initialized Memory&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
         else if (command == 50) {      //If command = &amp;quot;2&amp;quot; RTC1307 Memory Dump&lt;br /&gt;
          getDateDs1307();&lt;br /&gt;
          Serial.println(&amp;quot;: RTC 1307 Dump Begin&amp;quot;);&lt;br /&gt;
          Wire.beginTransmission(DS1307_I2C_ADDRESS);&lt;br /&gt;
          Wire.send(0x00);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.requestFrom(DS1307_I2C_ADDRESS, 64);&lt;br /&gt;
          for (i = 1; i &amp;lt;= 64; i++) {&lt;br /&gt;
             test = Wire.receive();&lt;br /&gt;
             Serial.print(i);&lt;br /&gt;
             Serial.print(&amp;quot;:&amp;quot;);&lt;br /&gt;
             Serial.println(test, DEC);&lt;br /&gt;
          }&lt;br /&gt;
          Serial.println(&amp;quot; RTC1307 Dump end&amp;quot;);&lt;br /&gt;
         } &lt;br /&gt;
        }  &lt;br /&gt;
       }&lt;br /&gt;
      Serial.print(&amp;quot;Command: &amp;quot;);&lt;br /&gt;
      Serial.println(command);     // Echo command CHAR in ascii that was sent&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      command = 0;                 // reset command &lt;br /&gt;
      delay(100);&lt;br /&gt;
    }&lt;br /&gt;
//*****************************************************The End***********************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC_DS1307_v.01 User Guide ==&lt;br /&gt;
&lt;br /&gt;
Not much to say here, I tend to use the Arduino in the [[Arduino Communications]] Method, so maybe someday I will present the other part of the controlling SW I made for this tool, but I will have to make changes to get it to work correctly for this particular set-up.  &lt;br /&gt;
&lt;br /&gt;
For now just enter the commands from the Arduino Environment or your favorite serial communications method.&lt;br /&gt;
&lt;br /&gt;
==== Commands ====&lt;br /&gt;
&lt;br /&gt;
* T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99) - T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year) - T Sets the date of the RTC DS1307 Chip. &lt;br /&gt;
** Example to set the time for 04-Feb-09 @ 19:57:11 for the 3 day of the week, use this command - T1157193040209&lt;br /&gt;
* Q1 - This command will initialize all the non date/time memory to 255 (0xff)&lt;br /&gt;
** I do this because when the RTC DS1307 goes into back up mode it returns 0 for any register, so for memory usage a 0 will be considered a failure to read memory and 255 will be a default value. Meaning it is considered null.&lt;br /&gt;
* Q2 - This command will Dump all 64 registers to the serial buffer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Electronics]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Talk:Linux,_Apple,_or_Windows_-_Which_one_is_right_for_you%3F</id>
		<title>Talk:Linux, Apple, or Windows - Which one is right for you?</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Talk:Linux,_Apple,_or_Windows_-_Which_one_is_right_for_you%3F"/>
				<updated>2009-07-04T02:16:02Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Talk:Wind_Energy_is_not_just_for_Wind_Turbines</id>
		<title>Talk:Wind Energy is not just for Wind Turbines</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Talk:Wind_Energy_is_not_just_for_Wind_Turbines"/>
				<updated>2009-07-04T02:15:01Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Talk:Main_Page</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Talk:Main_Page"/>
				<updated>2009-07-04T02:12:01Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-10T02:11:15Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about as soon as I thought of this method.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
[[Image:Arduino_Com_diagram.jpg | 400px]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Arduino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs.com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are literally tons of info on this subject on the web. Other than that make sure that the permissions are set on the shared folder to allow creating and writing files.&lt;br /&gt;
&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not that difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Does the clear_log file exist&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor and LED circuits based on the diagrams or something similar - ''' That's it, just follow the diagrams or create a comparable soltion. &lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_com_circuit.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' linux shared folder to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to, you will be able to select the drive from within the AutoIT GUI.&lt;br /&gt;
&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  This program will create a ''command'' file, fill it with the command string and place it in the Network Dir. The Software will wait 5 seconds and then retrieve the results and place it in the text window. Then the program will place the ''clear_log'' file in the Network Dir. I will not cover the use of this software here, refer to the User Guide section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled. Pressing F5 runs it as interpreted.&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\&amp;quot;                           ; Default network directory&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step and it WORKS! then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Make sure you have loaded the Arduino program from Step 3&lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program by pressing F5 and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
'''If all goes well it will look something like this:'''&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_com_pic_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Arduino_Com_v.01 User Guide ==&lt;br /&gt;
&lt;br /&gt;
==== Network Dir ====&lt;br /&gt;
This is the place where you must find the Windows mapped drive and path to the folder where you placed the Arduino files on the Linux box. This location is where the ''PollCommand'' script is constantly polling for a command or clear_log file and this is where the the arduino_log file is located.&lt;br /&gt;
==== Working Dir ====&lt;br /&gt;
This particular path is fairly useless and you should be able to leave it as the desktop.  All that happens here is that a results file is created until it is read into the Arduino_Com_v.01 software and then it is deleted.  &lt;br /&gt;
==== Arduino Command ====&lt;br /&gt;
''Basic Commands - ''The Arduino Commands data box is set up as a drop down menu with the pre-filled commands, but you can put whatever command you want in the box and then press the GO button to send the command. The commands are worth further explanation.  The following commands will make the Arduino respond:&lt;br /&gt;
* C - will increment the Threshold value by the second digit. So a C5 will increment the Threshold by 5 points and a C9 will increment the Threshold by 9 points, and so on.  If the second Character after the C is not a number, it will not increment the Threshold. The C command also prints out the Current Threshold value.&lt;br /&gt;
* D - will decrement the Threshold value by the second digit. So a D5 will decrement the Threshold by 5 points and a D9 will decrement the Threshold by 9 points, and so on.  If the second Character after the D is not a number, it will not decrement the Threshold. The D command also prints out the Current Threshold value.&lt;br /&gt;
* T - will take a measurement of the current temperature and print out the current Temperature. A plain T will work without any second character. &lt;br /&gt;
&lt;br /&gt;
All other commands are ignored by the Arduino, but you will get a result of the ascii values of any characters you send to the Arduino. A nice little ascii converter that came in handy when programming.  Also you will notice several preceding characters and the last ascii character of each the command printed. These were for my testing and further development purposes.&lt;br /&gt;
&lt;br /&gt;
''Stacking Commands - '' You are also able to stack the commands together and they will be processed as individual commands. &lt;br /&gt;
&lt;br /&gt;
For instance this command:&lt;br /&gt;
 C5TD5&lt;br /&gt;
will result with:&lt;br /&gt;
 ------------------------------------------------------------------&lt;br /&gt;
 Command:  C5TD5&lt;br /&gt;
 Results:  &lt;br /&gt;
 ~# THRESHOLD = 585 53&lt;br /&gt;
 ~&amp;amp; Temp = 520 84&lt;br /&gt;
 ~# THRESHOLD = 580 53&lt;br /&gt;
 ******************************************************************&lt;br /&gt;
There can be no spaces in the commands. The command will only interpret the characters before the first space.&lt;br /&gt;
&lt;br /&gt;
==== Command Results ====&lt;br /&gt;
This text box is where the results of your command will be loaded. There is also a result that will occur when the Temperature exceeds the threshold. This is something I was playing around with on how to handle alarms from the Arduino.  So for this alarm you will get the results at the next command sent. &lt;br /&gt;
&lt;br /&gt;
For instance the following result was given after the T command was sent:&lt;br /&gt;
&lt;br /&gt;
 ------------------------------------------------------------------&lt;br /&gt;
 Command:  T&lt;br /&gt;
 Results:  &lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~&amp;amp; Temp = 577 84&lt;br /&gt;
 ******************************************************************&lt;br /&gt;
This indicated that the threshold had been exceeded prior to the T command, and the Hot Temp alarms had been previously printed.  &lt;br /&gt;
==== Sys Info ====&lt;br /&gt;
This Tab in the results location is just a typical text box I create for some basic info about the computer. &lt;br /&gt;
==== Clear ====&lt;br /&gt;
The Clear button will clear the Command Results text box and only the command results box.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-10T02:01:30Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about as soon as I thought of this method.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
[[Image:Arduino_Com_diagram.jpg | 400px]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Arduino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs.com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are literally tons of info on this subject on the web. Other than that make sure that the permissions are set on the shared folder to allow creating and writing files.&lt;br /&gt;
&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not that difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Does the clear_log file exist&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor and LED circuits based on the diagrams or something similar - ''' That's it, just follow the diagrams or create a comparable soltion. &lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_com_circuit.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' linux shared folder to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to, you will be able to select the drive from within the AutoIT GUI.&lt;br /&gt;
&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  This program will create a ''command'' file, fill it with the command string and place it in the Network Dir. The Software will wait 5 seconds and then retrieve the results and place it in the text window. Then the program will place the ''clear_log'' file in the Network Dir. I will not cover the use of this software here, refer to the User Guide section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled. Pressing F5 runs it as interpreted.&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\&amp;quot;                           ; Default network directory&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step and it WORKS! then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Make sure you have loaded the Arduino program from Step 3&lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program by pressing F5 and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
'''If all goes well it will look something like this:'''&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_com_pic_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Arduino_Com_v.01 User Guide ==&lt;br /&gt;
&lt;br /&gt;
==== Network Dir ====&lt;br /&gt;
This is the place where you must find the Windows mapped drive and path to the folder where you placed the Arduino files on the Linux box. This location is where the ''PollCommand'' script is constantly polling for a command or clear_log file and this is where the the arduino_log file is located.&lt;br /&gt;
==== Working Dir ====&lt;br /&gt;
This particular path is fairly useless and you should be able to leave it as the desktop.  All that happens here is that a results file is created until it is read into the Arduino_Com_v.01 software and then it is deleted.  &lt;br /&gt;
==== Arduino Command ====&lt;br /&gt;
'''Basic Commands - '''The Arduino Commands data box is set up as a drop down menu with the pre-filled commands, but you can put whatever command you want in the box and then press the GO button to send the command. The commands are worth further explanation.  The following commands will make the Arduino respond:&lt;br /&gt;
* C - will increment the Threshold value by the second digit. So a C5 will increment the Threshold by 5 points and a C9 will increment the Threshold by 9 points, and so on.  If the second Character after the C is not a number, it will not increment the Threshold. The C command also prints out the Current Threshold value.&lt;br /&gt;
* D - will decrement the Threshold value by the second digit. So a D5 will decrement the Threshold by 5 points and a D9 will decrement the Threshold by 9 points, and so on.  If the second Character after the D is not a number, it will not decrement the Threshold. The D command also prints out the Current Threshold value.&lt;br /&gt;
* T - will take a measurement of the current temperature and print out the current Temperature. A plain T will work without any second character. &lt;br /&gt;
&lt;br /&gt;
All other commands are ignored by the Arduino, but you will get a result of the ascii values of any characters you send to the Arduino. A nice little ascii converter that came in handy when programming.  Also you will notice several preceding characters and the last ascii character of each the command printed. These were for my testing and further development purposes.&lt;br /&gt;
&lt;br /&gt;
'''Stacking Commands - ''' You are also able to stack the commands together and they will be processed as individual commands. &lt;br /&gt;
&lt;br /&gt;
For instance this command:&lt;br /&gt;
 C5TD5&lt;br /&gt;
will result with:&lt;br /&gt;
 ------------------------------------------------------------------&lt;br /&gt;
 Command:  C5TD5&lt;br /&gt;
 Results:  &lt;br /&gt;
 ~# THRESHOLD = 585 53&lt;br /&gt;
 ~&amp;amp; Temp = 520 84&lt;br /&gt;
 ~# THRESHOLD = 580 53&lt;br /&gt;
 ******************************************************************&lt;br /&gt;
There can be no spaces in the commands. The command will only interpret the characters before the first space.&lt;br /&gt;
&lt;br /&gt;
==== Command Results ====&lt;br /&gt;
This text box is where the results of your command will be loaded. There is also a result that will occur when the Temperature exceeds the threshold. This is something I was playing around with on how to handle alarms from the Arduino.  So for this alarm you will get the results at the next command sent. &lt;br /&gt;
&lt;br /&gt;
For instance the following result was given after the T command was sent:&lt;br /&gt;
&lt;br /&gt;
 ------------------------------------------------------------------&lt;br /&gt;
 Command:  T&lt;br /&gt;
 Results:  &lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~@ Hot Temp = 580&lt;br /&gt;
 ~&amp;amp; Temp = 577 84&lt;br /&gt;
 ******************************************************************&lt;br /&gt;
This indicated that the threshold had been exceeded prior to the T command, and the Hot Temp alarms had been previously printed.  &lt;br /&gt;
==== Sys Info ====&lt;br /&gt;
This Tab in the results location is just a typical text box I create for some basic info about the computer. &lt;br /&gt;
==== Clear ====&lt;br /&gt;
The Clear button will clear the Command Results text box and only the command results box.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-09T00:41:02Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  This program will create a ''command'' file, fill it with the command string and place it in the Network Dir. The Software will wait 5 seconds and then retrieve the results and place it in the test window. Then the program will place the ''clear_log'' file in the Network Dir. I will not cover the use of this software here, refer to the user section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled. Pressing F5 runs it as interpreted.&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\&amp;quot;                           ; Default network directory&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step and it WORKS! then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Make sure you have loaded the Arduino program from Step 3&lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program by pressing F5 and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
'''If all goes well it will look something like this:'''&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_com_pic_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-08T22:27:03Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: /* Step 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  This program will create a ''command'' file, fill it with the command string and place it in the Network Dir. The Software will wait 5 seconds and then retrieve the results and place it in the test window. Then the program will place the ''clear_log'' file in the Network Dir. I will not cover the use of this software here, refer to the user section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled. Pressing F5 runs it as interpreted.&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\sketchbook\ArduinoSerial\&amp;quot; &lt;br /&gt;
 ;$network_dir = &amp;quot;P:\&amp;quot;                          ; Change this to default before you release the SW&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step and it WORKS! then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Make sure you have loaded the Arduino program from Step 3&lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program by pressing F5 and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
'''If all goes well it will look something like this:'''&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_com_pic_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/File:Arduino_com_pic_1.jpg</id>
		<title>File:Arduino com pic 1.jpg</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/File:Arduino_com_pic_1.jpg"/>
				<updated>2008-08-08T22:26:10Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-08T22:23:57Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: /* Step 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  This program will create a ''command'' file, fill it with the command string and place it in the Network Dir. The Software will wait 5 seconds and then retrieve the results and place it in the test window. Then the program will place the ''clear_log'' file in the Network Dir. I will not cover the use of this software here, refer to the user section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled. Pressing F5 runs it as interpreted.&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\sketchbook\ArduinoSerial\&amp;quot; &lt;br /&gt;
 ;$network_dir = &amp;quot;P:\&amp;quot;                          ; Change this to default before you release the SW&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step and it WORKS! then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Make sure you have loaded the Arduino program from Step 3&lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program by pressing F5 and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
If all goes well it will look something like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:arduino_com_pic_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-08T22:20:49Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: /* Step 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  This program will create a ''command'' file, fill it with the command string and place it in the Network Dir. The Software will wait 5 seconds and then retrieve the results and place it in the test window. Then the program will place the ''clear_log'' file in the Network Dir. I will not cover the use of this software here, refer to the user section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled. Pressing F5 runs it as interpreted.&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\sketchbook\ArduinoSerial\&amp;quot; &lt;br /&gt;
 ;$network_dir = &amp;quot;P:\&amp;quot;                          ; Change this to default before you release the SW&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step and it WORKS! then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Make sure you have loaded the Arduino program from Step &lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-08T22:18:35Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: /* Step 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  This program will create a ''command'' file, fill it with the command string and place it in the Network Dir. The Software will wait 5 seconds and then retrieve the results and place it in the test window. Then the program will place the ''clear_log'' file in the Network Dir. I will not cover the use of this software here, refer to the user section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled. Pressing F5 runs it as interpreted.&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\sketchbook\ArduinoSerial\&amp;quot; &lt;br /&gt;
 ;$network_dir = &amp;quot;P:\&amp;quot;                          ; Change this to default before you release the SW&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-08T22:08:21Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - ''' This code is a utility that will allow you to select the mapped shared windows drive/path and a working directory. There is a drop down menu with four commands that that will make the Arduino respond.  I will not cover the use of this software here, refer to the user section.  For now just get this loaded into AutoIT and hit F5 to get it to run. You can run AutoIT programs interpreted or compiled.  &lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; File name: Arduino_Com_v.01.au3&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\sketchbook\ArduinoSerial\&amp;quot; &lt;br /&gt;
 ;$network_dir = &amp;quot;P:\&amp;quot;                          ; Change this to default before you release the SW&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
==== Step 11 ====&lt;br /&gt;
''' Put all the steps together and see if it works - ''' Well ok! I deviated from the quick guide, but if you follow this step then you can revel. `,~)  Now we just want to get it all to work.  Check list of things that need to be in place:&lt;br /&gt;
* Make sure the Arduino is plugged into the linux box and that the Serial monitor on the Arduino environment is not connected&lt;br /&gt;
* Now you are ready to start the ''CommandPoll'' script from Step 6&lt;br /&gt;
* Make sure your Windows box can browse to the mapped drive and you can see the files on your linux box&lt;br /&gt;
* Start the ''Arduino_Com_v.01.au3'' program and set the Network Dir to your mapped drive&lt;br /&gt;
* Change the Working Dir if you do not want to use the Desktop (optional)&lt;br /&gt;
* Now click the GO button and see if you get a response (it takes about 5 sec to respond)&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-08T21:28:53Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9).  I will leave it to the reader to decode these commands.  &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - '''&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\sketchbook\ArduinoSerial\&amp;quot; &lt;br /&gt;
 ;$network_dir = &amp;quot;P:\&amp;quot;                          ; Change this to default before you release the SW&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Arduino_Communications</id>
		<title>Arduino Communications</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Arduino_Communications"/>
				<updated>2008-08-08T21:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Arduino Communications Page'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
In my search for ways to communicate with the Arduino board, I found lots of ways that required me to learn new languages or learn serial communication programming.  I do want to eventually pick up these skills, but I found a quicker way for my needs.  I have learned over time that you can always find a better way to solve a problem, but I realize that the amount of time to learn that better way is sometimes greater than the project time-frame, and therefore just solve it in the best way you can with the tools you have.  I believe that the solution below encompasses that spirit.  Here you will find a quick, dirty yet effective solution for communicating with the Arduino.&lt;br /&gt;
&lt;br /&gt;
This solution met my goals, but it may not meet yours.  It is limited in the effect that a transfer in a message may take as long as 5 sec.  This fits fine for my needs where I am just looking to form a distributed network of smart sensors/controllers that allow the setting of certain variables and the reporting of alarms and/or useful tracking information from the individual controllers.&lt;br /&gt;
&lt;br /&gt;
'''Note: I owe a BIG debt of gratitude to all the Arduino hackers that provided me with the tools/code/knowledge to allow this solution'''&lt;br /&gt;
&lt;br /&gt;
== Functional Description of Method ==&lt;br /&gt;
&lt;br /&gt;
This method creates a log file that is created by an Arduino board using serial communications that is sent to a terminal which is redirected to a file.  The file can then be used by any software you desire to process the messages from the Arduino board. To send messages to the Arduino board the use of Arduino-Serial (a command line utility) is placed in a BASH script that is used to constantly poll for the existence of a command file.  When a command file is found, the BASH script will send the commands in the file to the Arduino board.  The response by the Arduino is to follow the command input and print response data out to the terminal, which is sent to the log file.&lt;br /&gt;
&lt;br /&gt;
If your brain just got scrambled, join the club.  There were several technical hurdles I was concerned about of as soon as I thought of it.  I did not even think this would work at first, but it turns out to function just fine. (Until Further Notice! `,~)&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
'''The method requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent &lt;br /&gt;
* Linux computer that is able to communicate with the Arduino &lt;br /&gt;
* Your favorite development language &lt;br /&gt;
* Basic Linux operational skill&lt;br /&gt;
* Knowledge of ''samba'' or ''NIS'' if networking is desired &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This example requires the following hardware/knowledge:'''&lt;br /&gt;
&lt;br /&gt;
* An Arduino Board or equivalent (I used an actual Arduino Board with the USB connection)&lt;br /&gt;
* Linux computer that is able to communicate with the Arduino (I used an Ubuntu 8.x box)&lt;br /&gt;
* A Windows computer that is able to support AutoIT (I used an XP box)&lt;br /&gt;
* A network between the two computers&lt;br /&gt;
* Development languages - BASH scripting for Linux and AutoIT for windows&lt;br /&gt;
* Knowledge of ''samba'' for sharing folders over the network&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example of Method ==&lt;br /&gt;
=== Quick Guide: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Step 1 -''' Buy an Arduino Board - http://www.arduino.cc/en/Main/Buy&lt;br /&gt;
&lt;br /&gt;
'''Step 2 -''' Load the Arduino software on your linux box - http://www.arduino.cc/playground/Learning/Linux&lt;br /&gt;
               &lt;br /&gt;
'''Step 3 -''' Load the sample Arduino code (see Step 3 below) into your Arduino board - http://www.arduino.cc/en/Guide/HomePage&lt;br /&gt;
&lt;br /&gt;
'''Step 4 -''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - http://us1.samba.org/samba/&lt;br /&gt;
&lt;br /&gt;
'''Step 5 -''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/&lt;br /&gt;
&lt;br /&gt;
'''Step 6 -''' Load the sample BASH scripting text (see Step 6 below) into an executable file in your shared folder from Step 4 on the Linux box - http://www.gnu.org/software/bash/&lt;br /&gt;
&lt;br /&gt;
'''Step 7 -''' Build your Thermistor circuit based on the diagram (see Step 7 below) or something similar&lt;br /&gt;
&lt;br /&gt;
'''Step 8 -''' Map your 'samba' shared folder on your linux box to a windows drive &lt;br /&gt;
&lt;br /&gt;
'''Step 9 -''' Load AutoIT on your windows box - http://www.autoitscript.com/autoit3/&lt;br /&gt;
&lt;br /&gt;
'''Step 10 -''' Use the sample AutoIT script (see Step 10 below) to test the solution&lt;br /&gt;
&lt;br /&gt;
'''Step 11 -''' Revel in your new found capability to conquer the world, well the Arduino world anyway! `,~)&lt;br /&gt;
=== Detailed Guide: ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
'''Buy an Arduino Board - ''' There are lots of options to buy a board. I chose the standard USB version from the guidance of this [http://www.arduino.cc/en/Main/Buy Arduino link]. If you follow this [http://www.freeduino.org/buy.html Freeduino link] you will find many options including my favorite the Bare Bones Board from [http://moderndevice.com/ moderndevice.com] and [http://wulfden.org/freeduino/freeduino.shtml wulfden.com].  Check out the [http://www.moderndevice.com/RBBB_revB.shtml RBBB assembly]. These options are super cheap and I will definitely be buying my next Arduino based board from these sites.  These folks have knocked down the price of micro-controller development boards.&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
'''Load the Arduino software on your linux box - ''' Here are the [http://www.arduino.cc/playground/Learning/Linux Linux Instructions]. For my Arduino, I used Ubuntu 8.x.  I also recommend you do a google search of Aruino and your linux type to find any type of specific hiccups that inevitably find there way into installs.  The Ubuntu instuctions I ended up using was from [http://principialabs.com/running-arduino-on-ubuntu/ principialabs,com] and after all was said and done these instructions worked without a single problem for me.&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
''' Load the sample Arduino code into your Arduino board - ''' Here is the code I used.  I will not claim it to be pretty, but it does work as a test for this method. Most likely you will have to modify some of the numbers around the input.  I will give you my schematic, but I am sure that your set up will vary somewhat and that will change the Threshold and Voltage reading numbers.&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
 * AnalogInput with Thermistor&lt;br /&gt;
 * by DojoDave &amp;lt;http://www.0j0.org&amp;gt; and John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * Turns on a light emitting diode(LED) connected to digital  &lt;br /&gt;
 * pin 13 when the temperature rises above the threshold. The value obtained by analogRead(). &lt;br /&gt;
 * In the easiest case we connect a thermistor to analog pin 5.  The program also implements a &lt;br /&gt;
 * Serial Communication method that utilizes a char and a # ie. A0...A9, B0...B9, etc. Each Command will implement &lt;br /&gt;
 * a specific action in the Arduino.&lt;br /&gt;
 * &lt;br /&gt;
 */ &lt;br /&gt;
 int tempPin = 5;    // select the input pin for the Thermistor&lt;br /&gt;
 int ledPin = 13;   // select the pin for the LED&lt;br /&gt;
 int val = 0;       // variable to store the value coming from the sensor&lt;br /&gt;
 int THRESHOLD = 580;&lt;br /&gt;
 int statePin = HIGH;  // variable used to store the last LED status, to toggle the light&lt;br /&gt;
 int command = 0;       // This is the command char, in ascii form, sent from the serial port     &lt;br /&gt;
 long polTime = 1000;  // The time to Pol the tempPin&lt;br /&gt;
 long previousMillis = 0;        // will store last time Temp was updated&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   Serial.begin(57600);&lt;br /&gt;
   pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT&lt;br /&gt;
   pinMode(12, OUTPUT);      // Test Com Reset issue  &lt;br /&gt;
   digitalWrite(12,HIGH);&lt;br /&gt;
   delay(5000);&lt;br /&gt;
   digitalWrite(12,LOW);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   if (millis() - previousMillis &amp;gt; polTime) {&lt;br /&gt;
     previousMillis = millis();   // remember the last time&lt;br /&gt;
     val = analogRead(tempPin);    // read the value from the sensor&lt;br /&gt;
      if (val &amp;gt;= THRESHOLD) {&lt;br /&gt;
       //statePin = !statePin;           // toggle the status of the ledPin (this trick doesn't use time cycles)&lt;br /&gt;
       digitalWrite(ledPin, statePin); // turn the led on or off&lt;br /&gt;
       Serial.print(&amp;quot;~@ Hot &amp;quot;);          // send the string &amp;quot;Hot&amp;quot; back to the computer, followed by newline&lt;br /&gt;
       Serial.print(&amp;quot;Temp = &amp;quot;);&lt;br /&gt;
       Serial.println(val);           // &lt;br /&gt;
      }&lt;br /&gt;
     else {&lt;br /&gt;
       digitalWrite(ledPin, LOW);&lt;br /&gt;
     }&lt;br /&gt;
     if (Serial.available()) {      // Look for char in serial que and process if found&lt;br /&gt;
       command = Serial.read();&lt;br /&gt;
       if (command == 84) {          // If command = &amp;quot;T&amp;quot; print the Temp&lt;br /&gt;
         Serial.print(&amp;quot;~&amp;amp; Temp = &amp;quot;);&lt;br /&gt;
         Serial.print(val);           // &lt;br /&gt;
         Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
         delay(100);&lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 67) {      //If command = &amp;quot;C&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Increment the Threshold by number sent&lt;br /&gt;
             THRESHOLD += command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       else if (command == 68) {      //If command = &amp;quot;D&amp;quot; Change Temp Threshhold&lt;br /&gt;
         if (Serial.available()) {&lt;br /&gt;
           command = Serial.read();&lt;br /&gt;
           if (command &amp;gt; 47 &amp;amp;&amp;amp; command &amp;lt; 58) {          // If command is between 0-9 Decrement the Threshold by number sent&lt;br /&gt;
             THRESHOLD -= command - 48;                 // ASII math to get value sent   &lt;br /&gt;
                   Serial.print(&amp;quot;~# THRESHOLD = &amp;quot;);&lt;br /&gt;
                   Serial.print(THRESHOLD);           // &lt;br /&gt;
                   Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
                   delay(100);&lt;br /&gt;
           }  &lt;br /&gt;
         }  &lt;br /&gt;
       }&lt;br /&gt;
       delay(100);&lt;br /&gt;
       Serial.println(command);     // Echo command char found in serial que&lt;br /&gt;
       command = 0;                 // reset command &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 //*****************************************************The End***********************&lt;br /&gt;
==== Step 4 ====&lt;br /&gt;
''' Create a Folder on the Linux box and share the Folder over the network using ''samba'' - '''  There is not much to say here other than learn your ''samba'' and make it happen.  There are lterally tons of info on this subject on the web. Other than that make sure that the permissions are set to allow creating and writing files.&lt;br /&gt;
==== Step 5 ====&lt;br /&gt;
''' Compile the Arduino-Serial software and place the executable in the shared folder from Step 4 - ''' This step gave me a little bit of an issue. I had to comment out a few baud speed lines.  It was not the difficult to figure out, because the compiler gave pretty clear error messages and these [http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/  Arduino-Serial] instructions even mentioned this as an issue and even though it is mentioned and supposedly fixed, there is still one more line he did not comment out. Make sure any line that looks like this:&lt;br /&gt;
&lt;br /&gt;
 case 28800:  brate=B28800;  break;  &lt;br /&gt;
&lt;br /&gt;
Looks like this:&lt;br /&gt;
&lt;br /&gt;
 //case 28800:  brate=B28800;  break;&lt;br /&gt;
&lt;br /&gt;
==== Step 6 ====&lt;br /&gt;
''' Load the sample BASH scripting text into an executable file in your shared folder from Step 4 on the Linux box - ''' Here is the BASH script.  It is a script that goes into an infinite loop and constantly polls for two files, a ''command'' file and a ''clear_log'' file.  When it sees those files it takes action to either send commands or clear the log file.  The files are sent from some other application that are used to control the communication to the Arduino.  In this example I use AutoIT as the controlling software (See Step 9). &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # File name CommandPoll&lt;br /&gt;
 # This Script is used to control the communication to an Arduino board via the Arduino-Serial command line utility and the dev/ttyUSB0 terminal&lt;br /&gt;
 # Written by John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # Set the terminal to match the Arduino Serial Communications&lt;br /&gt;
 stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts&lt;br /&gt;
 &lt;br /&gt;
 # Kill any existing tail commands logging the terminal&lt;br /&gt;
 exec  ps ax | grep &amp;quot;tail -f /dev/ttyUSB0&amp;quot; | grep ? | awk '{system(&amp;quot;kill &amp;quot; $1)}'&lt;br /&gt;
 # Connect the terminal to a tail logging to a file by appending&lt;br /&gt;
 exec tail -f /dev/ttyUSB0 &amp;gt;&amp;gt; /home/jvaughters/arduino-0011/sketchbook/ArduinoSerial/arduino_log &amp;amp;&lt;br /&gt;
 &lt;br /&gt;
 # create an infinite loop to test for files that will prompt action&lt;br /&gt;
 while [ 1 ]&lt;br /&gt;
 do&lt;br /&gt;
   if [ -f command ] 								     # Does the command file exist&lt;br /&gt;
     then&lt;br /&gt;
     cat command | awk '{system(&amp;quot;./arduino-serial -b 57600 -p /dev/ttyUSB0 -s &amp;quot; $1)}' # Send the commands in the command file via Arduino-Serial utility&lt;br /&gt;
     rm command									     # remove the command file&lt;br /&gt;
   fi&lt;br /&gt;
   if [ -f clear_log ] 								     # Clear arduino_log file&lt;br /&gt;
     then&lt;br /&gt;
     echo &amp;gt; arduino_log&lt;br /&gt;
     rm clear_log&lt;br /&gt;
   fi&lt;br /&gt;
   sleep 1 									     # Sleep for one second or your processor will run 100% (optional)&lt;br /&gt;
 done&lt;br /&gt;
 exit 0 &lt;br /&gt;
==== Step 7 ====&lt;br /&gt;
''' Build your Thermistor circuit based on the diagram or something similar - ''' (Needs to be completed)&lt;br /&gt;
==== Step 8 ====&lt;br /&gt;
''' Map your ''samba'' shared folder on your linux box to a windows drive - ''' For this example you have to map a drive on your windows box.  I think I will leave the details on how to accomplish this task to a google search on mapping drives in windows. It is fairly straight forward. I mapped my drive to P: for no particular reason, but what ever you map it to you will be able to select the drive from within the AutoIT GUI (See Step 9).&lt;br /&gt;
==== Step 9 ====&lt;br /&gt;
''' Load AutoIT on your windows box - ''' Go to the [http://www.autoitscript.com/autoit3/ AutoIT] site and load this very powerful and free software.  This software has been around for a while and it has a fairly active development crew, which creates constant improvements, extensions and user libraries.  It is a very powerful GUI scripting tool and it is very easy to create a GUI application as well.  I have created many great utilities using this software. It is not for super powerful software needs, but with today's computers, it does quite a bit.  LOVE this tool.  &lt;br /&gt;
==== Step 10 ====&lt;br /&gt;
''' Use the sample AutoIT script to test the solution - '''&lt;br /&gt;
&lt;br /&gt;
 ; Arduino Communications and Control&lt;br /&gt;
 ; 31 Jul 2008 - John Vaughters &amp;lt;http://www.combustory.com&amp;gt;&lt;br /&gt;
 ; This is a Utility to Communicate with the Arduino Control board&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;GuiConstants.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;GuiEdit.au3&amp;gt; &lt;br /&gt;
 #include &amp;lt;file.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;Date.au3&amp;gt;&lt;br /&gt;
 #include &amp;lt;IE.au3&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
 ;*************&lt;br /&gt;
 ;  _Load_Results() loads the temp file into the desired control then deletes the temp file&lt;br /&gt;
 ; $w_dir is the working directory where the file exists&lt;br /&gt;
 ; $ctl_to_load is the place to load the file contents&lt;br /&gt;
 ; $temp_file is the temporary file to load the data from&lt;br /&gt;
 ; The function returns the number of lines loaded from the file&lt;br /&gt;
 &lt;br /&gt;
 Func _Load_Results ($w_dir, $ctl_load_to, $temp_file)&lt;br /&gt;
 	Dim $aRecords&lt;br /&gt;
 	If Not _FileReadToArray($w_dir &amp;amp; $temp_file,$aRecords) Then&lt;br /&gt;
 			MsgBox(4096,&amp;quot;Error&amp;quot;, &amp;quot; Error reading log to Array     error:&amp;quot; &amp;amp; @error)&lt;br /&gt;
 			 Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		For $x = 1 to $aRecords[0]&lt;br /&gt;
 			if StringLen($aRecords[$x]) &amp;gt; 0 then GuiCtrlSetData($ctl_load_to, $aRecords[$x] &amp;amp; @CRLF, 1)&lt;br /&gt;
 		Next&lt;br /&gt;
 		;Delete the temporary file&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;del &amp;quot; &amp;amp; $temp_file, $w_dir &amp;amp; &amp;quot;&amp;quot;,@SW_HIDE)&lt;br /&gt;
 		Return ($aRecords[0]-1)&lt;br /&gt;
 EndFunc&lt;br /&gt;
 &lt;br /&gt;
 ;Initialize Variable Defaults&lt;br /&gt;
 $working_dir = @DesktopDir &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 $working_file = &amp;quot;arduino_log&amp;quot;&lt;br /&gt;
 $poll_delay = 5000                             ; This is the delay the program waits before collecting the command  results&lt;br /&gt;
 $network_dir = &amp;quot;P:\sketchbook\ArduinoSerial\&amp;quot; &lt;br /&gt;
 ;$network_dir = &amp;quot;P:\&amp;quot;                          ; Change this to default before you release the SW&lt;br /&gt;
 $process_results = False ;Processing Flag&lt;br /&gt;
 $command_get_begin = TimerInit() ;Initialize Timer&lt;br /&gt;
 ; GUI&lt;br /&gt;
 GuiCreate(&amp;quot; Arduino Communications and Control&amp;quot;, 700, 600)&lt;br /&gt;
 &lt;br /&gt;
 ; MENU &lt;br /&gt;
 $filemenu = GuiCtrlCreateMenu(&amp;quot;&amp;amp;File&amp;quot;)&lt;br /&gt;
 $fileitem = GUICtrlCreateMenuitem (&amp;quot;Open&amp;quot;,$filemenu)&lt;br /&gt;
 GUICtrlSetState(-1,$GUI_DEFBUTTON)&lt;br /&gt;
 $exititem = GUICtrlCreateMenuitem (&amp;quot;Exit&amp;quot;,$filemenu)&lt;br /&gt;
 $helpmenu = GuiCtrlCreateMenu(&amp;quot;Help&amp;quot;)&lt;br /&gt;
 $infoitem = GUICtrlCreateMenuitem (&amp;quot;Info&amp;quot;,$helpmenu)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ; LOGO PIC&lt;br /&gt;
 GuiCtrlCreatePic(&amp;quot;logo.jpg&amp;quot;,0,0, 100,140)&lt;br /&gt;
 &lt;br /&gt;
 ; AVI for letting the user know the system is processing&lt;br /&gt;
 $processing = GuiCtrlCreateAvi(&amp;quot;sampleAVI.avi&amp;quot;,0, 405, 140, 32, 32)&lt;br /&gt;
 &lt;br /&gt;
 ; Tabbed Result Window&lt;br /&gt;
 $tab_result_start_x = 20&lt;br /&gt;
 $tab_result_start_y = 175&lt;br /&gt;
 $tab_result_size_x = 650&lt;br /&gt;
 $tab_result_size_y = 400&lt;br /&gt;
 $tab_result_title_2 = &amp;quot;Command Results&amp;quot;&lt;br /&gt;
 $tab_result_title_4 = &amp;quot;Sys Info&amp;quot;&lt;br /&gt;
 GuiCtrlCreateTab($tab_result_start_x, $tab_result_start_y, $tab_result_size_x , $tab_result_size_y)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_2)&lt;br /&gt;
 $edit_ctl_tab2 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem($tab_result_title_4)&lt;br /&gt;
 $edit_ctl_tab4 = GuiCtrlCreateEdit(@CRLF &amp;amp; &amp;quot;&amp;quot;, $tab_result_start_x + 10 , $tab_result_start_y + 40, $tab_result_size_x - 20, $tab_result_size_y - 50)&lt;br /&gt;
 GuiCtrlCreateTabItem(&amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 ; Combo Arduino Command File Type&lt;br /&gt;
 $combo_ctl_search_file = GuiCtrlCreatecombo(&amp;quot;*&amp;quot;, 240, 145, 120, 100)&lt;br /&gt;
 GUICtrlSetData(-1,&amp;quot;C5|D5|T1|&amp;quot;,&amp;quot;C5&amp;quot;) ; add other item snd set a new default&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Arduino Command&amp;quot;, 245, 170, 150, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Working Directory Label&lt;br /&gt;
 $combo_ctl_working_dir = GuiCtrlCreateLabel($working_dir, 240, 80, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Working Directory&amp;quot;, 245, 105, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; Current Network Directory Label&lt;br /&gt;
 $combo_ctl_network_dir = GuiCtrlCreateLabel($network_dir, 240, 20, 450, 22,$WS_DLGFRAME)&lt;br /&gt;
 GUICtrlSetBkColor(-1,0xffffff)&lt;br /&gt;
 GuiCtrlCreateLabel(&amp;quot;Network Directory&amp;quot;, 245, 45, 200, 20)&lt;br /&gt;
 &lt;br /&gt;
 ; BUTTON&lt;br /&gt;
 $search_btn = GuiCtrlCreateButton(&amp;quot;Go&amp;quot;, 370, 143, 25, 25)&lt;br /&gt;
 $file_btn = GuiCtrlCreateButton(&amp;quot;Working Dir&amp;quot;, 125, 77, 100, 25)&lt;br /&gt;
 $network_btn = GuiCtrlCreateButton(&amp;quot;Network Dir&amp;quot;, 125, 18, 100, 25)&lt;br /&gt;
 $site_btn = GuiCtrlCreateButton(&amp;quot;www.combustory.com&amp;quot;, 0, 145, 135, 22)&lt;br /&gt;
 $clear_btn = GuiCtrlCreateButton(&amp;quot;Clear&amp;quot;, 620, 170, 50, 22)&lt;br /&gt;
 &lt;br /&gt;
 ; List System Info&lt;br /&gt;
 GuiCtrlSetData($edit_ctl_tab4, &amp;quot;Computer:             &amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;----------------------------------------------------------&amp;quot; &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;IP Address:             &amp;quot; &amp;amp; @IPAddress1 &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Computer Name:     &amp;quot; &amp;amp; @ComputerName &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
    								&amp;quot;OS:                         &amp;quot; &amp;amp; @OSVersion &amp;amp; @CRLF &amp;amp; _&lt;br /&gt;
 								&amp;quot;Sys Dir:                   &amp;quot; &amp;amp; @SystemDir &amp;amp; @CRLF &amp;amp; @CRLF)&lt;br /&gt;
 ; GUI MESSAGE LOOP&lt;br /&gt;
 GuiSetState()&lt;br /&gt;
 &lt;br /&gt;
 ; Main Event Loop&lt;br /&gt;
 While 1&lt;br /&gt;
   ; After every loop check if the user clicked something in the GUI window&lt;br /&gt;
    $msg = GUIGetMsg()&lt;br /&gt;
     if $process_results = True Then&lt;br /&gt;
 		if $poll_delay &amp;lt; TimerDiff($command_get_begin) Then&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;type arduino_log&amp;gt;results.txt&amp;quot;, $network_dir,@SW_HIDE)&lt;br /&gt;
 			; Load command results into Command Results tab&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;------------------------------------------------------------------&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Command:  &amp;quot; &amp;amp; GUICtrlRead($combo_ctl_search_file) &amp;amp; @CRLF,1)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;Results:  &amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			_Load_Results ($network_dir, $edit_ctl_tab2, &amp;quot;results.txt&amp;quot;)&lt;br /&gt;
 			GuiCtrlSetData($edit_ctl_tab2, &amp;quot;******************************************************************&amp;quot; &amp;amp; @CRLF,1)&lt;br /&gt;
 			$process_results = False&lt;br /&gt;
 			RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;echo&amp;gt;clear_log&amp;quot;, $network_dir,@SW_HIDE) ; Send message to Linux polling script to clear the log&lt;br /&gt;
 			GUICtrlSetState ($processing, 0)&lt;br /&gt;
 		EndIf&lt;br /&gt;
 	EndIf	&lt;br /&gt;
    Select&lt;br /&gt;
    &lt;br /&gt;
     ; Check if user clicked on the close button &lt;br /&gt;
 	Case $msg = $GUI_EVENT_CLOSE Or $msg = $exititem&lt;br /&gt;
         ; Destroy the GUI including the controls&lt;br /&gt;
          GUIDelete()&lt;br /&gt;
        ; Exit the script&lt;br /&gt;
          Exit&lt;br /&gt;
          &lt;br /&gt;
 	; Check if user clicked on the File Open button&lt;br /&gt;
 	Case $msg = $fileitem&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the Help Info button&lt;br /&gt;
 	Case $msg = $infoitem&lt;br /&gt;
 		MsgBox(64, &amp;quot;Info&amp;quot;, &amp;quot;Arduino Communications Control v0.1&amp;quot; &amp;amp; @CRLF &amp;amp; &amp;quot;By: John Vaughters&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 	; Check if user clicked on the &amp;quot;File&amp;quot; button&lt;br /&gt;
 	Case $msg = $file_btn&lt;br /&gt;
 		$working_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_working_dir, $working_dir)&lt;br /&gt;
 			&lt;br /&gt;
 	Case $msg = $network_btn&lt;br /&gt;
 		$network_dir = FileSelectFolder(&amp;quot;Choose Folder...&amp;quot;,&amp;quot;&amp;quot;,4,&amp;quot;&amp;quot;) &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
 		GuiCtrlSetData($combo_ctl_network_dir, $network_dir)&lt;br /&gt;
 &lt;br /&gt;
 	Case $msg = $search_btn&lt;br /&gt;
 		&lt;br /&gt;
 		; Start processing AVI &lt;br /&gt;
 		GUICtrlSetState ($processing, 1)&lt;br /&gt;
 		&lt;br /&gt;
 		$file = FileOpen($working_dir &amp;amp; &amp;quot;command&amp;quot;, 2)&lt;br /&gt;
 		; Check if file opened for reading OK&lt;br /&gt;
 		If $file = -1 Then&lt;br /&gt;
 			MsgBox(0, &amp;quot;Error&amp;quot;, &amp;quot;Unable to open file.&amp;quot;)&lt;br /&gt;
 			Exit&lt;br /&gt;
 		EndIf&lt;br /&gt;
 		&lt;br /&gt;
 		; Set File Type&lt;br /&gt;
 		$working_file = GUICtrlRead($combo_ctl_search_file)&lt;br /&gt;
 		FileWrite($file, $working_file)&lt;br /&gt;
 		FileClose($file)  ; The File must be closed before you can copy it anywhere&lt;br /&gt;
 		RunWait(@ComSpec &amp;amp; &amp;quot; /c &amp;quot; &amp;amp; &amp;quot;copy command &amp;quot; &amp;amp; $network_dir, $working_dir,@SW_HIDE)&lt;br /&gt;
 		$command_get_begin = TimerInit() ;Start the timer until you can retrieve your results&lt;br /&gt;
 		$process_results = True ; Set Processing flag&lt;br /&gt;
 			&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $site_btn&lt;br /&gt;
 		_IECreate (&amp;quot;www.combustory.com&amp;quot;)&lt;br /&gt;
 		&lt;br /&gt;
 	Case $msg = $clear_btn&lt;br /&gt;
 		_GUICtrlEdit_SetSel ($edit_ctl_tab2, 0, -1) &lt;br /&gt;
 		_GUICtrlEdit_ReplaceSel ($edit_ctl_tab2, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    EndSelect&lt;br /&gt;
 &lt;br /&gt;
 WEnd&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-03-01T01:53:21Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices related to a cars.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all machines dependent on Combustibles.  As you can see from the list below it is a fairly significant task that will require a world of help, so please feel free to join in the task by creating an account and creating content. &lt;br /&gt;
&lt;br /&gt;
* [[Motorcycles]]&lt;br /&gt;
* [[Cars]]&lt;br /&gt;
* [[Trucks]]&lt;br /&gt;
* [[Tractors]]&lt;br /&gt;
* [[Earth Movers]]&lt;br /&gt;
* [[Tanks]]&lt;br /&gt;
* [[Airplanes]]&lt;br /&gt;
* [[Jets]]&lt;br /&gt;
* [[Helicopters]]&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creators Note ==&lt;br /&gt;
&lt;br /&gt;
No content of a pornographic nature will be allowed!&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-03-01T01:52:35Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices related to a cars.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all machines dependent on Combustibles.  As you can see from the list below it is a fairly significant task that will require a world of help, so please feel free to join in the task by creating an account and creating content. &lt;br /&gt;
&lt;br /&gt;
* [[Motorcycles]]&lt;br /&gt;
* [[Cars]]&lt;br /&gt;
* [[Trucks]]&lt;br /&gt;
* [[Tractors]]&lt;br /&gt;
* [[Earth Movers]]&lt;br /&gt;
* [[Tanks]]&lt;br /&gt;
* [[Airplanes]]&lt;br /&gt;
* [[Jets]]&lt;br /&gt;
* [[Helicopters]]&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creators Note ==&lt;br /&gt;
&lt;br /&gt;
No content of a pornographic nature will be allowed!&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-03-01T01:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices related to a cars.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all machines dependent on Combustibles.  As you can see from the list below it is a fairly significant task that will require a world of help, so please feel free to join in the task by creating an account and creating content. &lt;br /&gt;
&lt;br /&gt;
* [Motorcycles]&lt;br /&gt;
* Cars&lt;br /&gt;
* Trucks&lt;br /&gt;
* Tractors&lt;br /&gt;
* Earth Movers&lt;br /&gt;
* Tanks&lt;br /&gt;
* Airplanes&lt;br /&gt;
* Jets&lt;br /&gt;
* Helicopters&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creators Note ==&lt;br /&gt;
&lt;br /&gt;
No content of a pornographic nature will be allowed!&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-27T00:13:38Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Unprotected &amp;quot;Main Page&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices related to a cars.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all machines dependent on Combustibles.  As you can see from the list below it is a fairly significant task that will require a world of help, so please feel free to join in the task by creating an account and creating content. &lt;br /&gt;
&lt;br /&gt;
* Motorcycles&lt;br /&gt;
* Cars&lt;br /&gt;
* Trucks&lt;br /&gt;
* Tractors&lt;br /&gt;
* Earth Movers&lt;br /&gt;
* Tanks&lt;br /&gt;
* Airplanes&lt;br /&gt;
* Jets&lt;br /&gt;
* Helicopters&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creators Note ==&lt;br /&gt;
&lt;br /&gt;
No content of a pornographic nature will be allowed!&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-27T00:01:27Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Protected &amp;quot;Main Page&amp;quot; [edit=sysop:move=sysop]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices related to a cars.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all machines dependent on Combustibles.  As you can see from the list below it is a fairly significant task that will require a world of help, so please feel free to join in the task by creating an account and creating content. &lt;br /&gt;
&lt;br /&gt;
* Motorcycles&lt;br /&gt;
* Cars&lt;br /&gt;
* Trucks&lt;br /&gt;
* Tractors&lt;br /&gt;
* Earth Movers&lt;br /&gt;
* Tanks&lt;br /&gt;
* Airplanes&lt;br /&gt;
* Jets&lt;br /&gt;
* Helicopters&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creators Note ==&lt;br /&gt;
&lt;br /&gt;
No content of a pornographic nature will be allowed!&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-26T01:46:39Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices related to a cars.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all machines dependent on Combustibles.  As you can see from the list below it is a fairly significant task that will require a world of help, so please feel free to join in the task by creating an account and creating content. &lt;br /&gt;
&lt;br /&gt;
* Motorcycles&lt;br /&gt;
* Cars&lt;br /&gt;
* Trucks&lt;br /&gt;
* Tractors&lt;br /&gt;
* Earth Movers&lt;br /&gt;
* Tanks&lt;br /&gt;
* Airplanes&lt;br /&gt;
* Jets&lt;br /&gt;
* Helicopters&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creators Note ==&lt;br /&gt;
&lt;br /&gt;
No content of a pornographic nature will be allowed!&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-26T01:33:15Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices for related to a car.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all machines dependent on Combustibles.  As you can see from the list below it is a fairly significant task that will require a world of help, so please feel free to join in the task by creating an account and creating content. &lt;br /&gt;
&lt;br /&gt;
* Motorcycles&lt;br /&gt;
* Cars&lt;br /&gt;
* Trucks&lt;br /&gt;
* Tractors&lt;br /&gt;
* Earth Movers&lt;br /&gt;
* Tanks&lt;br /&gt;
* Airplanes&lt;br /&gt;
* Jets&lt;br /&gt;
* Helicopters&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-26T01:20:04Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Welcome to Combustory! &lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
My original Goal was to create a website that is the most comprehensive website for Automobiles. However, as I soon found out while looking for a Domain Name that there was not many good choices for related to a car.  Some how I came up with Combustory and it made me think of the History of Combustibles in general.  So I decided on a site that would include all Combustible things.  &lt;br /&gt;
&lt;br /&gt;
* Motorcycles&lt;br /&gt;
* Cars&lt;br /&gt;
* Trucks&lt;br /&gt;
* Tractors&lt;br /&gt;
* Earth Movers&lt;br /&gt;
* Tanks&lt;br /&gt;
* Airplanes&lt;br /&gt;
* Jets&lt;br /&gt;
* Helicopters&lt;br /&gt;
* Suggestions Welcome&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-25T22:51:05Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Combustory'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stuff ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-25T22:47:44Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Main_Page"/>
				<updated>2008-02-25T22:47:08Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Main Page moved to Wiki Support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Wiki Support]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-25T22:47:08Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: Main Page moved to Wiki Support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-25T22:36:06Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-25T22:34:58Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== even more stuff ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-24T04:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== even more stuff ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== the rest of the stuff ==&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-24T04:15:45Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;_TOC_&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-24T04:08:15Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
_TOC_&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-24T04:07:03Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
_TOC_&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-24T03:58:25Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	<entry>
		<id>http://combustory.com/wiki/index.php/Wiki_Support</id>
		<title>Wiki Support</title>
		<link rel="alternate" type="text/html" href="http://combustory.com/wiki/index.php/Wiki_Support"/>
				<updated>2008-02-24T03:57:50Z</updated>
		
		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{H:h|Editor toc}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''MediaWiki has been successfully installed.'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My First Wiki&lt;br /&gt;
&lt;br /&gt;
==  More stuff below ==&lt;br /&gt;
[[Image:test.png]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	</feed>