﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>RoboticsConnection User Forum / Serializer Robot Controller Support / RoboticsConnection Hardware Support  / What does the Serializer Really Buy Me? Read on!!! / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>RoboticsConnection User Forum</description><link>http://www.roboticsconnection.com/userForums/</link><webMaster>info@roboticsconnection.com</webMaster><lastBuildDate>Thu, 04 Dec 2008 14:20:58 GMT</lastBuildDate><ttl>20</ttl><item><title>What does the Serializer Really Buy Me? Read on!!!</title><link>http://www.roboticsconnection.com/userForums/Topic13-4-1.aspx</link><description>&lt;SPAN class=Forum_Normal id=spBody&gt;&lt;FONT face=Tahoma&gt;Patrick,&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Hopefully, I can ramble enough to explain to you how useful the Serializer Robot Controller is, and help you and your son get started (quickly) with robotics.&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt; &lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;I’m going to post this on our forum&lt;/FONT&gt;&lt;FONT face=Tahoma&gt; as well, so others can leverage this information.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;So, to control robots, you have to obviously have some control software.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;The software has quite a few tasks to perform, but basically it has to do the following:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Control Motors/Actuators/Servos&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Read Sensors and interpret their meaning&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Perform an action based on the sensor input&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;I know the list above is very elementary, but it’s a good starting point for discussion.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;Interfacing Motors/Actuators/Servos:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Regarding point 1, everyone interfaces microcontrollers to DC motors using a h-bridge. &lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;This requires some low-level bit twiddling to send a PWM (Pulse Width Modulated) output to the h-bridge, which then makes the motors work.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;So, typically, you have to purchase an additional h-bridge to interface your motors (costing $50-$100).&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;In addition, you have to write(and debug) the low-level software to control the h-bridges.&lt;SPAN style="mso-spacerun: yes"&gt;   &lt;/SPAN&gt;The Serializer has built-in dual 4 Amp h-bridges, AND also has the ability to interface &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/pc-77-7-10-amp-h-bridge.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;external H-Bridges&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;, if the onboard 4 Amp h-bridges aren’t enough.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;So, you’re not stuck w/ the onboard h-bridges.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;Thus, you could spend time re-implementing the control software for the h-bridges, but why?&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;It’s been done a million times, including by ourselves.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Almost all hobbyist based robotics kits use standard hobby servos. &lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;To &lt;/FONT&gt;&lt;A href="http://www.seattlerobotics.org/guide/servos.html"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;interface a servo&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;, you basically just need an I/O line from your microcontroller, power, ground, and write some control software to send the correct pulse width to the servo, so that it goes to the desired position.&lt;SPAN style="mso-spacerun: yes"&gt;   &lt;/SPAN&gt;While this is pretty easy to do, it’s yet another piece of code that you have to write (and debug).&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;The Serializer supports control of up to 6 servos, and implements this code for you.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;In addition, we’re launching a new product at the end of the month to allow you to control up to 25 servos from the Serializer’s I2C port.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;The board will plug into the Serializer, and our firmware and libraries will support the interface to allow you to immediately use it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;We are also launching a new product at the end of the month to allow you to control up to eight relays from the Serializer’s I2C port, which are useful for turning on devices that require larger currents that microcontrollers can’t handle.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Again, the Serializer firmware, and our libraries will support control of this device.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;We are also launching a new product at the end of the month to allow you to control up to 10 sonar sensors from the Serializer’s I2C port.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;And, you guessed it, the firmware and our libraries support it too. &lt;SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;By the way, the Serializer’s I2C port is a perfect way to expand the functionality of the Serializer, without using up a lot of I/O lines.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;Interfacing Sensors:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;In order for your robot to sense and “see” it’s surroundings, it obviously needs sensors.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;There are many sensors available for measuring distance to an object, temperature, direction/heading, distance traveled, and many more.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;In addition sensors have different ways to interface them to query the information, which includes analog, pwm, i2C, SPI, and others.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;As you can see, you’ll have to write (and debug) software to interface all of these sensors, which can be a real pain (and can be VERY time consuming).&lt;SPAN style="mso-spacerun: yes"&gt;   &lt;/SPAN&gt;So we decided to take all of the most popular sensors on the robotics market, and provide a physical and software interface for them via the Serializer.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;The Serializer can read up to five 10-bit analog sensors, up to 127 I2C devices, and up to ten I/O sensors.&lt;SPAN style="mso-spacerun: yes"&gt;   &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Once you have written software to read the values of the sensors, you have to interpret it.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;This might mean converting a 10-bit analog value to a meaningful distance, or converting the number of ticks your wheel encoders reported to a distance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Again, all of this sensor interfacing &amp;amp; interpretation is packaged for you within the Serializer firmware and libraries.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;A very powerful sensor is a Camera.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;We’ve worked with &lt;/FONT&gt;&lt;A href="http://www.roborealm.com/"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;www.RoboRealm.com&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; to provide some cool &lt;/FONT&gt;&lt;A href="http://www.roborealm.com/help/RobConn_Traxster.php"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;vision processing examples&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; via their software as well.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;We are currently trying to find a quality wireless camera that we can offer to our customers at a reasonable price.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;So far, most wireless cameras have been pretty junky. &lt;SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;L&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR&gt;Nonetheless, the camera will be a very key sensor for robotics going forward.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Once we find a camera, we will be leveraging the RoboRealm software a lot more.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;Making decisions:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Once you have collected all of the sensory inputs, and have translated them to a meaningful value, you need to make decisions on what action to perform (if any).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;This is actually the fun part of software development, because you are adding intelligence to your robot.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;Obviously as a beginner, you could start out with simple behaviors to allow your robot to follow a line, navigate through a maze, etc.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Eventually, you can add higher intelligence to allow you robot to plan out a path to take, recognize objects (via vision), and perform useful tasks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Before I get too deep into this subject, lets’ summarize what the Serializer does for you, and how to interface to it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;Utilizing the Serializer:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;As you have read, the Serializer interfaces the most common &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/pc-16-5-serializer-net-robot-controller.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;robotic sensors on the market&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; (under Devices/Sensors tab), and converts the signals returned from the sensors into a meaningful value (such as distance, temperature, etc.).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;So, how do you get that information from the Serializer and/or control it?&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Well, there are a few ways:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo2"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Your application uses the Serializer Protocol, which is defined in the &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/docs/SerializerWL_UserGuide_v2.0.pdf"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Serializer User Guide&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;, to query these values and/or control motors/servos via a serial connection&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo2"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;You use our Serializer &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/libraries/MSDNDocumentation/"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;.NET library&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; to implement the protocol for you, and you just use the simple to use .NET object interface to query sensors and/or control motors/servos&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo2"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;You use our Serializer Microsoft Robotics Studio(MSRS) Services to query sensors and/or control motors/servos - Advanced&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo2"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;You use our upcoming C++ library (written by &lt;/FONT&gt;&lt;A href="http://www.learningce.com/821.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;James Y. Wilson&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;) to query sensors and/or control motors/servos&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Point 1 requires you to open a serial port, and send the various commands (e.g. ‘pwm, ‘sensor’, ‘pping’), defined in the Serializer Protocol to the Serializer to query sensor values and/or control motors/servos.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;You can also open up a ‘Hyperterm’ session, and send the same commands to the Serializer for debugging purposes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Points 2 thru 4 implement the protocol for you, and handles all of the communications behind the scenes.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;What does this mean?&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Well, it means we made it even EASIER for you to control your robot via the Serializer! &lt;SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;You don’t have to worry about the communications portion of the software,&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;which implies coming up w/ a useful scheme for querying the sensors, whilst not blocking other code that needs executing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Regarding the &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/libraries/MSDNDocumentation/"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;.NET Library&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;, we have &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/libraries/MSDNDocumentation/_1zk11imac.htm"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;examples&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; for every supported component embedded in the MSDN help, under each component topic (called ‘Example Source Code’). &lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;You can download the library, as well as download instructions for installing the library on the &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/pc-16-5-serializer-net-robot-controller.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Serializer page&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;, under the Docs/How-To/Library tab.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;You will also need to install the &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;amp;displaylang=en"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;.NET 2.0 Framework&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; on your computer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;To use the Serializer Services for MSRS, you can go &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/t-microsoftroboticsstudio.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;here&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; for info.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;This is pretty advanced, and I would suggest starting w/ the .NET library first.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;Programming Environment:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;If you plan on developing an application under Linux, then you’re sort of on your own.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;We will be adding support for Linux/FreeBSD/OSX apps later this year.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;While we don’t offer support, it is still pretty simple to interface the Serializer under Linux, as you only need to open a serial port, and send commands/handle responses (e.g. point 1 above).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;However, if you plan on developing an application under Windows, then you’re in luck.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;You can download one/or both of the &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/express/aa974184.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Visual Studio Express Editions&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; for free:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Tahoma&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;         &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/express/aa700756.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Visual C# Express Edition&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo4"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Tahoma&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;         &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/express/aa718406.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Visual Basic Express Edition&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Currently, our examples are in C#, so I would suggest starting out programming with C#.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;Serial Connection:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;There are four ways to physically connect your Serializer to your PC/Laptop/PC104 to communicate with it:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo3"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;RS-232 serial connection/cable&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo3"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;USB connection/cable&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo3"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Bluetooth/wireless&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo3"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;XBEE/wireless&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;No matter which physical connection you choose, your application sees these devices as serial ports, and thus you can simply send the same command to all four interfaces w/o a code change (except for changing the COM port that the OS has assigned to that specific serial port). &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;The life of a command:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;So, let’s say you decide to use the Serializer .NET library…How exactly does that work?&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Well, I’m going hide most of the details, but give you enough to fully understand what happens in the life of a command:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Let’s say you create a &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/libraries/MSDNDocumentation/_1zk1bk9hx.htm"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;GP2D120 object&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt; using the .NET Library.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Once you do, you’ll want to set a few properties regarding the Analog input line that it is connected to on the Serializer, as well as the frequency for which you want to query the sensor.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Here’s a sample application to create a Sharp GP2D120 sensor connected to Analog Pin 1, and query it every 50msec.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;The app also specifies a threshold of 0.5, which means that you don’t want the .NET library to notify you that the value of the sensor has changed, unless it has changed by a value of more that 0.5.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;The app also signs up to hear an event, called ‘DistanceChanged’, which will occur if the value changes by more than the specified threshold amount.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;using RoboticsConnection.Serializer;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;using RoboticsConnection.Serializer.Ids;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;using RoboticsConnection.Serializer.Sensors;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;using RoboticsConnection.Serializer.Components;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;using RoboticsConnection.Serializer.Controllers;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;using System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT color=#000080&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;namespace test&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 1"&gt;        &lt;/SPAN&gt;class Program&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 1"&gt;        &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;static Serializer serializer;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;static GP2D120 irSensor;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT color=#000080&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;static void Main(string[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;serializer = new Serializer();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT color=#000080&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;irSensor = new GP2D120(serializer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;irSensor.Pin = AnalogPinId.Pin1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;irSensor.UpdateFrequency = 50;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;irSensor.DistanceChangedThreshold = 0.5;&lt;SPAN style="mso-spacerun: yes"&gt;      &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;irSensor.DistanceChanged += new SerializerComponentEventHandler(irSensor_DistanceChanged);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT color=#000080&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;serializer.Run();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT color=#000080&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;static void irSensor_DistanceChanged(SerializerComponent sender)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                       &lt;/SPAN&gt;Console.WriteLine("new gp2d120 distance: {0}", irSensor.Distance);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 2"&gt;               &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="BACKGROUND: whitesmoke; MARGIN: 0in 0in 0pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="mso-tab-count: 1"&gt;        &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#000080&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'"&gt;}&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;You will also see that there is a method called irSensor_DistanceChanged(), which is basically an event handler, to catch the DistanceChanged event as it occurs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Once the event occurs, this method will be executed, and in this instance, we’re just printing the distance that the sensor is reading.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Of course, you could make decisions to slow down the motors, turn the robot, or whatever.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;So, if you run this application, and have the GP2D120 sensor connected to the Serializer (and it is powered up), you will be able to move your hand in front of the sensor, and see the line “new gp2d120 distance: XXX” printed to the screen. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;How does this happen???&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Well, to begin with, when you create a GP2D120 object in the .NET library, the .NET library knows that it needs to send a ‘sensor &amp;lt;id&amp;gt;’ command to the Serializer via the serial port specified, where the &amp;lt;id&amp;gt; is the specified Analog input pin id (since the GP2D120 has an analog interface).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Once you invoke Serializer.Run() (or you can call &lt;A href="http://www.roboticsconnection.com/userForums/Topic4-6-1.aspx"&gt;Serializer.PumpEvents()&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma&gt; from a while loop), the library is sending that command down to the Serializer at the frequency we specified above, and it waits to hear the response.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Once it receives the response from the Serializer, it stores the translated sensor value into the &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/libraries/MSDNDocumentation/_1zk1bk9hx.htm"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;GP2D120s Distance property&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;FONT face=Tahoma&gt;, which you are free to use at any point. &lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;It also stores the raw analog value in the Value property, in case you want to do something with it.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Thus, your .NET application doesn’t have to block (although it can) to wait on the round-trip query to/from the Serializer for sensors.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;The same exact thing happens for all sensors and components within the .NET library.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;Thus, all communication to/from the Serializer is handled for you, and you’re just left to read the properties of the .NET objects you’ve created.&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;It just doesn’t get any easier than this…&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;This frees your app up to perform useful work, such as navigation, mapping, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT face=Tahoma&gt;Summary:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;So, after all of this rambling, to use your Serializer, just:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Download and install the &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;amp;displaylang=en"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;.NET 2.0 Framework&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Download and install &lt;/FONT&gt;&lt;A href="http://msdn2.microsoft.com/en-us/express/aa700756.aspx"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Visual C# Express Edition&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Download and follow the &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/docs/SerializerLibInstallationGuide_v1.1.pdf"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Serializer .NET Library QuickStart Guide&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Peruse through our examples in the &lt;/FONT&gt;&lt;A href="http://www.roboticsconnection.com/multimedia/libraries/MSDNDocumentation/_1zk11imac.htm"&gt;&lt;U&gt;&lt;FONT face=Tahoma color=#800080&gt;Serializer .NET Library Documentation&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5"&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;5.)&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;    &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Modify our existing sample apps to make your own.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;So, hopefully, this has explained the usefulness of the Serializer, and given you a good starting point for getting an application up and running.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Tahoma&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;I’m sure I’ve missed something, and I’ll be glad to answer any questions that you may have.&lt;/FONT&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;&lt;/FONT&gt; &lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Tahoma&gt;Best Regards,&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;</description><pubDate>Sat, 19 Jan 2008 19:09:18 GMT</pubDate><dc:creator>jsummerour</dc:creator></item></channel></rss>