<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">#region Coad&amp;#39;s Code</title><subtitle type="html">Noah Coad, Microsoft Program Manager&lt;br /&gt;Visual Studio Platform, Former C# MVP</subtitle><id>http://msmvps.com/blogs/coad/atom.aspx</id><link rel="alternate" type="text/html" href="http://msmvps.com/blogs/coad/default.aspx" /><link rel="self" type="application/atom+xml" href="http://msmvps.com/blogs/coad/atom.aspx" /><generator uri="http://communityserver.org" version="4.0.30619.63">Community Server</generator><updated>2005-02-20T00:39:00Z</updated><entry><title>My Blog Has Moved to blogs.msdn.com</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2006/01/04/My-Blog-Has-Moved-to-blogs.msdn.com.aspx" /><id>/blogs/coad/archive/2006/01/04/My-Blog-Has-Moved-to-blogs.msdn.com.aspx</id><published>2006-01-05T06:34:00Z</published><updated>2006-01-05T06:34:00Z</updated><content type="html">We&amp;#39;ll, after being at MS for over a year now, with the encouragement of friends, I&amp;#39;ve made the move to blogs.msdn.com.&amp;nbsp; My new blog site is:&lt;br /&gt; &lt;div style="border-right:black 1px solid;padding-right:6px;border-top:black 1px solid;padding-left:6px;background:beige;padding-bottom:6px;margin:10px;border-left:black 1px solid;padding-top:6px;border-bottom:black 1px solid;"&gt;Blog moved to:&lt;br /&gt;&lt;span style="font-size:12pt;font-family:arial;"&gt;&lt;a href="http://coadblog.com/"&gt;&lt;strong&gt;http://coadblog.com&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;Which redirects to http://blogs.msdn.com/noahc. Please update your readers. Cheers!&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=80319" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author></entry><entry><title>VSTS MSDN Chat</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/11/15/Team-System-Dev-_2600_-Test-Tools-MSDN-Chat-Wed-16th-_4000_-10am.aspx" /><id>/blogs/coad/archive/2005/11/15/Team-System-Dev-_2600_-Test-Tools-MSDN-Chat-Wed-16th-_4000_-10am.aspx</id><published>2005-11-15T22:46:00Z</published><updated>2005-11-15T22:46:00Z</updated><content type="html">&lt;p&gt;&lt;strong class="head"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;Team System MSDN Public Chat&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Visual Studio Team Edition for Software Developer &amp;amp;&lt;br /&gt;Visual Studio Team Edition for Software Testers&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;When:&lt;/u&gt; Wednesday, November 16th @ 10am PST&lt;br /&gt;&lt;u&gt;What:&lt;/u&gt; Join us to discuss the Profiler, Test Tools (Unit, Generic, Manual), Web &amp;amp; Load Testing, and Code Analysis (FxCop &amp;amp; PREFast). We have questions for you, will answer questions from you, and will chat about the exciting new technology.&lt;br /&gt;&lt;u&gt;Where:&lt;/u&gt;&lt;a href="http://msdn.microsoft.com/chats"&gt;http://msdn.microsoft.com/chats&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=75702" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="VSTS" scheme="http://msmvps.com/blogs/coad/archive/tags/VSTS/default.aspx" /></entry><entry><title>VS05 Express Free for a Limited Time</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/11/07/74629.aspx" /><id>/blogs/coad/archive/2005/11/07/74629.aspx</id><published>2005-11-07T17:37:00Z</published><updated>2005-11-07T17:37:00Z</updated><content type="html">&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/"&gt;Visual Studio 2005 Express&lt;/a&gt; editions (WebDev, C#, VB, C++, J#) are officially &lt;a href="http://msdn.microsoft.com/vstudio/express/support/faq/default.aspx#pricing"&gt;&lt;b&gt;Free!&lt;/b&gt; for 1 year&lt;/a&gt; (expires 11/6/2006).&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="border: 1px solid gray; background: white; padding: 6px;"&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/"&gt;&lt;img border="0" src="http://coad.net/blog/Images/VSExpressEditions.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;I just watched Steve Balmer give the keynote at the first and official kickoff launch event and he talked about the great &lt;a href="http://msdn.microsoft.com/vstudio/express/vwd/starterkit/default.aspx"&gt;Web Developer Starter Kits&lt;/a&gt; w/ a demo that was real cool.  Want to start up a website &lt;i&gt;fast&lt;/i&gt;?  This is the way to get started and experience the awesome power of ASP.NET 2.0!&lt;/p&gt;&lt;p&gt;Please be sure to register your free download so we know how popular these are.  My guess is that the more people we have register, the better the chance these will be free (or as inexpensive as possible) longer.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=74629" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /><category term="VSTS" scheme="http://msmvps.com/blogs/coad/archive/tags/VSTS/default.aspx" /></entry><entry><title>Visual Studio 2005 Launched</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/11/07/74628.aspx" /><id>/blogs/coad/archive/2005/11/07/74628.aspx</id><published>2005-11-07T17:18:00Z</published><updated>2005-11-07T17:18:00Z</updated><content type="html">&lt;p&gt;As of today, Visual Studio 2005 has officially launched!  This is a fantastic product that we have all been long awaiting!&lt;/p&gt;&lt;p&gt;There are a number of launch events being held in cities around the world the next month.  Check out if one is in &lt;a href="http://www.microsoft.com/events/2005launchevents/default.mspx"&gt;your city&lt;/a&gt; soon.  I'll be at the &lt;a href="http://msevents.microsoft.com/cui/eventdetail.aspx?culture=en-US&amp;amp;eventid=1032281569"&gt;Dallas Launch&lt;/a&gt; on November 30th.  If you're going to be there, `let me know`|`mailto:noah@coad.net?subject=Dallas Launch Event`.&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/subscriptions/"&gt;MSDN Subscribers &lt;/a&gt; can download Virtual Server/PC images with Team Suite installed for evaluation.  This gets you up and running quickly on Team System without having to worry about installing Team Foundation Server.  There are a number of other ways you can &lt;a href="http://msdn.microsoft.com/vstudio/products/trial/"&gt;Evaluation Visual Studio&lt;/a&gt;.&lt;/p&gt;&lt;ul style="margin-top: 0px;"&gt;&lt;li&gt;&lt;a href="http://www.infoworld.com/article/05/11/04/HNvsarrives_1.html"&gt;InfoWorld Article on the Launch&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/windowsserversystem/applicationplatform/launch2005/default.mspx"&gt;Official MSDN 2005 Launch Site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/teamsystem/default.aspx"&gt;Visual Studio 2005 Team System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/"&gt;Visual Studio 2005 Official Stite&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/"&gt;Visual Studio 2005 Express Editions (free!)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=74628" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /><category term="VSTS" scheme="http://msmvps.com/blogs/coad/archive/tags/VSTS/default.aspx" /></entry><entry><title>New! Team System MVPs</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/10/10/New_2100_-Team-System-MVPs.aspx" /><id>/blogs/coad/archive/2005/10/10/New_2100_-Team-System-MVPs.aspx</id><published>2005-10-11T03:02:00Z</published><updated>2005-10-11T03:02:00Z</updated><content type="html">&lt;span style="font:bold 13pt verdana;color:firebrick;"&gt;We have new Visual Studio Team System MVPs!&lt;/span&gt; &lt;p&gt;An MVP competency for Team System was just created. You can see the full list of our new &lt;a href="https://mvp.support.microsoft.com/communities/mvplist.aspx?Product=Visual+Developer+-+VSTS"&gt;Team System MVPs&lt;/a&gt; on the &lt;a href="http://mvp.support.microsoft.com/"&gt;Microsoft MVP Site&lt;/a&gt; or read &lt;a href="http://mvp.support.microsoft.com/mvpintro"&gt;what an MVP is&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We have 9 Team System MVPs who are truly rock stars in the community. It is exciting to have such stellar people as our MVPs! Welcome to the team ... Team System MVPs!&lt;/p&gt;&lt;p&gt;Here are some of their blogs (in no particular order): &lt;/p&gt;&lt;ul style="margin-top:0px;"&gt;&lt;li&gt;&lt;a href="http://garagiste.blogspot.com"&gt;Boon Tiong Lim&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/cmenegay/"&gt;Chris Menegay&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://teamsystemrocks.com/blogs/chris_menegays_weblog/"&gt;Chris Menegay #2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/dmckinstry/"&gt;David McKinstry&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/jld/"&gt;Jean-Luc David&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://teamsystemrocks.com/blogs/jldavid/"&gt;Jean-Luc David #2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jsango.blogspot.com"&gt;Joe Sango&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mark.michaelis.net/Blog/"&gt;Mark Michaelis&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://vstsrocks.com/blogs/mickey_gousset/"&gt;Mickey Gousset&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.hundhausen.com/"&gt;Richard Hundhausen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.accentient.com/"&gt;Steven Borg&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dotnet.org.za/willy/"&gt;Willy-Peter Schaub&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dotnet.org.za/bbdmtu/"&gt;Willy-Peter Schaub #2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;table class="Photo" style="font:10pt verdana;border:black 1px solid;padding:4px;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img height="480" src="http://coad.net/blog/Images/DSC05044%20(Small).JPG" width="640" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Rick LaPlante (General Manager, top VSTS dude) with some of the Team System MVPs&lt;br /&gt;From left to right: &lt;a href="https://mvp.support.microsoft.com/profile=4a18bd28-41fd-4f61-8e88-8dcd49a3d45e"&gt;Guy Barrette&lt;/a&gt; (an ASP.NET MVP), &lt;a href="https://mvp.support.microsoft.com/profile=de7b4143-6370-4cdf-a15f-49548a3bbdf1"&gt;Chris Menegay&lt;/a&gt;, Rick LaPlante, &lt;a href="https://mvp.support.microsoft.com/profile=7d91419f-a9b1-4ada-9413-31d137591c35"&gt;Jean-Luc David&lt;/a&gt;, &lt;a href="https://mvp.support.microsoft.com/profile=9fc763e6-8bcf-4d8d-99a2-e3eca1b15877"&gt;David McKinstry&lt;/a&gt;, &lt;a href="https://mvp.support.microsoft.com/profile=b372dfbd-e9d8-4751-a4c5-37177f89a305"&gt;Etienne Tremblay&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=70027" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="VSTS" scheme="http://msmvps.com/blogs/coad/archive/tags/VSTS/default.aspx" /></entry><entry><title>Wedding &amp; Honeymoon Photos</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/07/26/59646.aspx" /><id>/blogs/coad/archive/2005/07/26/59646.aspx</id><published>2005-07-26T05:50:00Z</published><updated>2005-07-26T05:50:00Z</updated><content type="html">&lt;p&gt;They're here!  The much requested photos from our &lt;b&gt;&lt;a href="http://spaces.msn.com/members/noahcoad/PersonalSpace.aspx?_c11_PhotoAlbum_spaHandler=TWljcm9zb2Z0LlNwYWNlcy5XZWIuUGFydHMuUGhvdG9BbGJ1bS5GdWxsTW9kZUNvbnRyb2xsZXI%24&amp;amp;_c11_PhotoAlbum_spaFolderID=cns!1pkyMgBfO-bOr2O3tGfVogYA!105&amp;amp;_c=PhotoAlbum&amp;amp;_c02_owner=1"&gt;Texas Wedding&lt;/a&gt;&lt;/b&gt; &amp;amp; &lt;b&gt;&lt;a href="http://spaces.msn.com/members/noahcoad/PersonalSpace.aspx?_c11_PhotoAlbum_spaHandler=TWljcm9zb2Z0LlNwYWNlcy5XZWIuUGFydHMuUGhvdG9BbGJ1bS5GdWxsTW9kZUNvbnRyb2xsZXI%24&amp;amp;_c11_PhotoAlbum_spaFolderID=cns!1pkyMgBfO-bOr2O3tGfVogYA!117&amp;amp;_c=PhotoAlbum&amp;amp;_c02_owner=1"&gt;Maui Honeymoon&lt;/a&gt;&lt;/b&gt;.  Just click the links to see the full online photo album.  Here are two sneak preview pics.&lt;/p&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/DSC02749 (Large) (Medium).JPG" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Just married!&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/DSC03891 (Large) (Small).JPG" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Enjoing Maui to the fullest!&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;I'm giving this &lt;a href="http://spaces.msn.com/members/noahcoad/"&gt;MSN Spaces&lt;/a&gt; thing a try since it was quick and easy to create the online photo album.  When I get my new website up and running, I'll be able to add a lot more photos.&lt;/p&gt;&lt;p&gt;Previous wedding related blog posts:&lt;br /&gt;&lt;a href="http://msmvps.com/coad/archive/2005/04/30/45173.aspx"&gt;Getting Married Today!&lt;/a&gt;, &lt;a href="http://msmvps.com/coad/archive/2005/04/24/44236.aspx"&gt;Countdown to My Wedding&lt;/a&gt;, &lt;a href="http://msmvps.com/coad/archive/2005/04/16/43059.aspx"&gt;14 Days to I Do&lt;/a&gt; &amp;amp; &lt;a href="http://msmvps.com/coad/archive/2004/10/10/15399.aspx"&gt;Engaged to an Angel&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=59646" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="Personal" scheme="http://msmvps.com/blogs/coad/archive/tags/Personal/default.aspx" /></entry><entry><title>New Living Room w Couches</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/07/15/57484.aspx" /><id>/blogs/coad/archive/2005/07/15/57484.aspx</id><published>2005-07-15T19:02:00Z</published><updated>2005-07-15T19:02:00Z</updated><content type="html">&lt;p&gt;For the last several years, I've dreamt of having a real leather couch!  My living room at my Redmond (Seattle) apartment has been completely bare since I moved in (a year ago) with the occasional influx of moving boxes (from when I moved in then Dawn moved up).  Occasionally I'd just sit on the floor in the middle of the completely bare living room dreaming of the day I'd be able to come home to a comfy couch, have guests over, and making it feel like a real home.&lt;/p&gt;&lt;p&gt;Now that I'm married (to the wonderful &lt;a href="http://msmvps.com/coad/archive/2005/04/30/45173.aspx"&gt;Dawn Coad&lt;/a&gt;) I'm out of the college / bachelor scene (Ikea like furniture) and have entered the realm of 'real' furniture. &lt;img style="position: relative; top: 2px;" src="http://coad.net/blog/images/SmileDot.gif" /&gt;  Dawn and my first big purchase as a married couple, one month after getting married, was a couch, love seat, chair, ottoman, coffee table, and end table from &lt;a href="http://www.morfurniture.com"&gt;Mor Furniture&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;We've waited a &lt;i&gt;long&lt;/i&gt; six weeks for delivery and as of last night, it all arrived!  It is very exciting!  What am I doing this weekend?  Hanging out in my living room! &lt;img style="position: relative; top: 2px;" src="http://coad.net/blog/images/SmileDot.gif" /&gt;&lt;/p&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/DSC04564 (Small).JPG" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Before - Just an empty living room for the last year.&lt;br /&gt;Imagine me just sitting here on the floor Indian style, yup, sad.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/DSC04574 (Small).JPG" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;After - A whole new experience!  Now it actually looks like a home,&lt;br /&gt;a place to hang and invite friends over.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;For those of you that blog, have you noticed how much easier and faster it is to get a blog post out when you're excited about a new thing?  That's what this is, I'm excited, here working at Microsoft on a Friday wishing I was hanging out on my couches, so what do I do?  Blog about them! &lt;img style="position: relative; top: 2px;" src="http://coad.net/blog/images/SmileDot.gif" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=57484" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="Personal" scheme="http://msmvps.com/blogs/coad/archive/tags/Personal/default.aspx" /></entry><entry><title>C# Resources</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/05/20/c-resources.aspx" /><id>/blogs/coad/archive/2005/05/20/c-resources.aspx</id><published>2005-05-20T19:24:00Z</published><updated>2005-05-20T19:24:00Z</updated><content type="html">&lt;a name="introduction"&gt;&lt;/a&gt;&lt;b class="head"&gt;Introduction&lt;/b&gt;  &lt;p&gt;Here is my base collection of resources on C#. I'm putting this together so when I write articles or reply to e-mails, I have one central place to point people. This is a live post, which means I'll be updating it as needed. Feel free to make your own additions (in the &lt;a href="http://msmvps.com/coad/archive/2005/05/20/48209.aspx#feedback"&gt;feedback&lt;/a&gt;)!&lt;/p&gt;&lt;a name="get"&gt;&lt;/a&gt;&lt;b class="head"&gt;Get C#&lt;/b&gt;  &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;&lt;a href="http://lab.msdn.microsoft.com/express/vcsharp/"&gt;Visual Studio 2005 C# Express&lt;/a&gt;&lt;br&gt;Currently free for the first year (till 11/06), then it will be $50. While not quite free (in the long term), it is a very moderate and reasonable price for the power you get.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/vwd/"&gt;Visual Web Developer 2005 Express&lt;/a&gt;&lt;br&gt;If your primary target is the web (with C# or any other .NET language), use this SKU. You can install both this and C# Express side-by-side. C# Express is geared toward Windows Application and this is for web sites, both support C#.  &lt;li&gt;&lt;a href="http://lab.msdn.microsoft.com/vs2005/get/"&gt;Visual Studio 2005&lt;/a&gt;&lt;br&gt;Again, currently free while in beta, and will be about $800/$560 when released.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/howtobuy/subscribers/"&gt;MSDN Subscription&lt;/a&gt;&lt;br&gt;Various levels of access to all of Microsoft's operating systems and development tools for a year. &lt;a href="http://msdn.microsoft.com/vstudio/products/subscriptions/"&gt;MSDN Premium&lt;/a&gt; costs $1100 to $3200 per year and includes one of the Visual Studio 2005 Team System editions.&lt;/li&gt;&lt;/ul&gt;&lt;a name="learning"&gt;&lt;/a&gt;&lt;b class="head"&gt;Learning C#&lt;/b&gt;  &lt;p&gt;So you're starting out and would like my secret to success in C#? You've come to the right place! With you're passion, this is a sure-fire way to success in .NET:&lt;/p&gt; &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;Get C#&lt;br&gt;You can start with the free &lt;a href="http://lab.msdn.microsoft.com/express/vcsharp/"&gt;C# Express&lt;/a&gt; (for Windows Applications) or &lt;a href="http://msdn.microsoft.com/vstudio/express/vwd/"&gt;Web Dev Express&lt;/a&gt; (for Web Sites, Web Services, etc). Both contain the C# language. These contain great resources when you start them up on learning the language. Go through the tutorials and resources they present on the start screen.  &lt;li&gt;Study Books&lt;br&gt;Particularly the first two or three I &lt;a&gt;list below&lt;/a&gt;. Dig into these. Everyone I know who has grasped this content has done well. They teach solid fundamentals, as well as practical application, from which all else stems.  &lt;li&gt;Subscribe to Blogs&lt;br&gt;Start reading on a daily basis the blogs I &lt;a&gt;list below&lt;/a&gt; and find others that tickle your fancy. Using an aggregate reader like &lt;a href="http://www.rssbandit.org/"&gt;RSS Bandit&lt;/a&gt; is practically a must. Consider &lt;a href="http://www.blogger.com/start"&gt;starting your own blog&lt;/a&gt; where you can post tidbits you learn. Doesn't matter how newbie you may be, others will learn from you. Some of the simplest blog posts are the most useful.  &lt;li&gt;Use Forums&lt;br&gt;Browse through &lt;a&gt;issues other devs are encountering&lt;/a&gt;, ask you own questions, and look for questions that you may be able to answer. The more you do so, the better you'll be able to articulate what you're doing, understand it yourself, and learn to help other. This is how I obtained my MVP award.  &lt;li&gt;Play Around&lt;br&gt;The #1 way to really learn is to get in there and do it. Try creating your own projects. Think of cool little things to make and just do it on your own time, a photo slide show, an MP3 tag editor, a way to track friend's birthdays, your own contact's list, a personal website, a database of scrapbooking supplies. Come up with an easy idea, make it, then make it better. A passion of getting in and doing it is the #1 anyone learns (myself included).&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Armed with a passion to learn, just by following these 5 steps, you too will quickly become a C# developer.&lt;/p&gt;&lt;a name="online"&gt;&lt;/a&gt;&lt;b class="head"&gt;Online Centers&lt;/b&gt;  &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;&lt;a href="http://msdn.microsoft.com"&gt;MSDN&lt;/a&gt;&lt;br&gt;Microsoft Developer's Network. The #1 dev resource for anything Microsoft.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vcsharp/"&gt;Visual C# Dev Center&lt;/a&gt;&lt;br&gt;The official C# home site.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/cpref_start.asp"&gt;.NET Class Library&lt;/a&gt;&lt;br&gt;The entire .NET framework class library reference.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/netframework/"&gt;.NET Framework Developer Center&lt;/a&gt;&lt;br&gt;Microsoft's official development center for everything .NET.  &lt;li&gt;&lt;a href="http://www.franklins.net/calldotnetrocks/"&gt;.NET Rocks!&lt;/a&gt; Internet Audio Talk Show&lt;br&gt;This is the greatest online weekly talk show where everything .NET is discussed.&lt;/li&gt;&lt;/ul&gt;&lt;a name="sample"&gt;&lt;/a&gt;&lt;b class="head"&gt;Sample Code &amp;amp; Tools&lt;/b&gt;  &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3a1c93fa-7462-47d0-8e56-8dd34c6292f0&amp;amp;displaylang=en"&gt;Shared Source CLI&lt;/a&gt;&lt;br&gt;This is the entire ECMA standard Common Language Infrastructure in C# source code. These are all the Base Class Libraries (BCL) that make up .NET in plain code. See how System, string, XmlDocument, etc is implemented. Extremely valuable educational resource!  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/vcsharp/downloads/"&gt;C# Team Downloads&lt;/a&gt;&lt;br&gt;Many .NET code samples, tools, powertoys, etc from the C# team.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/netframework/downloads/"&gt;.NET Downloads&lt;/a&gt;&lt;br&gt;SDKs, Tools, Utilities, Sample Code all on .NET from MS&lt;/li&gt;&lt;/ul&gt;&lt;a name="books"&gt;&lt;/a&gt;&lt;b class="head"&gt;&lt;/a&gt;Books &amp;amp; Periodicals&lt;/b&gt;  &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;Book: &lt;a href="http://www.microsoft.com/MSPress/books/6703.asp"&gt;Visual C# .NET Step by Step&lt;/a&gt;&lt;br&gt;A great place to start learning C# for both Windows and Web Apps. This is my first recommendation to new programmers.  &lt;li&gt;Book: &lt;a href="http://www.microsoft.com/MSPress/books/5861.asp"&gt;Inside C#&lt;/a&gt;&lt;br&gt;Quicker paced and more indepth, this book describes the insides of the language and class libarary more. Another must have.  &lt;li&gt;Book: &lt;a href="http://www.microsoft.com/MSPress/books/5029.asp"&gt;Visual C# .NET (Core Reference)&lt;/a&gt;&lt;br&gt;Various topics in C#, a great book once you understand the basics.  &lt;li&gt;Book: &lt;a href="http://www.amazon.com/gp/reader/1893115623/ref=sib_dp_pt/104-4800881-2511938#reader-link"&gt;A Programmer's Introduction to C# (Second Edition)&lt;/a&gt;&lt;br&gt;Written by Eric Gunnerson, a developer on the C# team.  &lt;li&gt;Magazine: &lt;a href="http://msdn.microsoft.com/msdnmag/"&gt;MSDN Magazine&lt;/a&gt;&lt;br&gt;The best periodical on .NET technologies. $35/year to &lt;a href="http://msdn.microsoft.com/msdnmag/Subscribe.aspx"&gt;subscribe&lt;/a&gt; to in the US.&lt;/li&gt;&lt;/ul&gt;&lt;a name="blogs"&gt;&lt;/a&gt;&lt;b class="head"&gt;Blogs&lt;/b&gt;&lt;br&gt;Subscribe to these blogs using &lt;a href="http://www.rssbandit.org/"&gt;RSS Bandit&lt;/a&gt; (&lt;a href="http://www.rssbandit.org/ow.asp?DownLoad"&gt;download&lt;/a&gt;) (&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=96589&amp;amp;package_id=103276"&gt;open source&lt;/a&gt; in C#).  &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/csharpfaq/"&gt;C# Team FAQ&lt;/a&gt;&lt;br&gt;The official C# team spoutlet. Once can learn a lot of interesting things here.  &lt;li&gt;&lt;a href="http://msmvps.com/coad/category/304.aspx"&gt;C# on #region Coad's Code&lt;/a&gt;&lt;br&gt;C# posts on my blog. &lt;img style="position:relative;top:2px;" src="http://coad.net/blog/images/SmileDot.gif"&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/cyrusn/"&gt;Cyrus' Blather&lt;/a&gt;&lt;br&gt;Cyrus is a very vocal dev on the C# team and has some of the most lively C# discussions online.  &lt;li&gt;&lt;a href="http://blogs.msdn.com/ericgu/"&gt;Eric Gunnerson's C# Compendium&lt;/a&gt;&lt;br&gt;Eric is a developer on the C# team and one of the most knowledgeable people in the world on C#.  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jaybaz_ms/"&gt;jaybaz [MS] WebLog&lt;/a&gt;&lt;br&gt;Jay is a lead developer on the C# team, and another of the most all knowing C# dudes.&lt;/li&gt;&lt;/ul&gt;&lt;a name="forums"&gt;&lt;/a&gt;&lt;b class="head"&gt;Forums, Newsgroups, and Usergroups&lt;/b&gt;&lt;br&gt;These are some of the best places to go for help.  &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;&lt;a href="http://forums.microsoft.com/msdn/default.aspx?ForumGroupID=9"&gt;C# Forums&lt;/a&gt;&lt;br&gt;Microsoft's official support outlet for C# developers. These forums will eventually replace the newsgroups all together.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.dotnet.languages.csharp&amp;amp;lang=en&amp;amp;cr=US"&gt;C# Newsgroup&lt;/a&gt;&lt;br&gt;This is the old C# support newsgroup that will be replaced by the C# forum (above).  &lt;li&gt;&lt;a href="http://www.ineta.org/DesktopDefault.aspx?tabindex=1&amp;amp;tabid=20"&gt;.NET Usersgroups&lt;/a&gt;&lt;br&gt;Find a local .NET support group in your area. They tyically consist of like minded developers, presentations, meetings, prizes, special events, and are a great way to meet other .NET developers face to face.  &lt;li&gt;&lt;a href="http://www.gotdotnet.com/"&gt;GotDotNet&lt;/a&gt;&lt;br&gt;A community run .NET site sponsored by Microsoft.&lt;/li&gt;&lt;/ul&gt;&lt;a name="support"&gt;&lt;/a&gt;&lt;b class="head"&gt;Support, Getting Help&lt;/b&gt;  &lt;p&gt;#1 place to go, the &lt;a href="http://forums.microsoft.com/msdn/default.aspx?ForumGroupID=9"&gt;C# Forums&lt;/a&gt;.&lt;/p&gt;&lt;a name="domain"&gt;&lt;/a&gt;&lt;b class="head"&gt;Domain Specific Resources&lt;/b&gt;&lt;br&gt;Coming when I have the time to add them.  &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;Team System  &lt;li&gt;ASP.NET  &lt;li&gt;General Web Development  &lt;li&gt;ADO.NET  &lt;li&gt;XML  &lt;li&gt;SQL  &lt;li&gt;Windows Forms  &lt;li&gt;Serial &amp;amp; USB Communications&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=48209" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author></entry><entry><title>Getting Married Today!</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/04/30/45173.aspx" /><id>/blogs/coad/archive/2005/04/30/45173.aspx</id><published>2005-04-30T15:32:00Z</published><updated>2005-04-30T15:32:00Z</updated><content type="html">&lt;p&gt;&lt;div style="font:bold italic 18pt Monotype Corsiva, Times New Roman; color: firebrick;"&gt;In just three hours I'll be waiting for my beautiful blushing bride at the alter!!&lt;/div&gt;&lt;/p&gt;&lt;p&gt;I'm in the hotel with my Best Man with half a tux on getting ready to head over to the church.  Friends and family are pouring in from around Texas and even the nation for this &lt;i&gt;special&lt;/i&gt; occasion.  I can hardly wait!&lt;/p&gt;&lt;p&gt;At 3am my Best Man and I dropped off a "Happy 0th Anniversary" card and long stem rose in front of Dawn's parent's house for her to find this morning.  That's it, I'm trademarking the "0th Anniversary" theme, very appropriate since the start of arrays is usually a 0 index (defiantly in C#), and this is the start of our new life together.&lt;/p&gt;&lt;p&gt;Other "Getting Married" Posts:&lt;br /&gt;&lt;a href="http://msmvps.com/coad/archive/2005/04/24/44236.aspx"&gt;Countdown to My Wedding&lt;/a&gt;, &lt;a href="http://msmvps.com/coad/archive/2005/04/16/43059.aspx"&gt;14 Days to I Do&lt;/a&gt; &amp;amp; &lt;a href="http://msmvps.com/coad/archive/2004/10/10/15399.aspx"&gt;Engaged to an Angel&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=45173" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="Personal" scheme="http://msmvps.com/blogs/coad/archive/tags/Personal/default.aspx" /></entry><entry><title>Countdown to My Wedding</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/04/24/44236.aspx" /><id>/blogs/coad/archive/2005/04/24/44236.aspx</id><published>2005-04-24T09:40:00Z</published><updated>2005-04-24T09:40:00Z</updated><content type="html">&lt;p&gt;My wedding is rapidly approaching!  Here is how much time is left until my wedding on Saturday April 30th 2005 @ 1:30 PM CST.  If it is after that date, the time is counting how long I've been married. &lt;img style="position: relative; top: 2px;" src="http://coad.net/blog/images/SmileDot.gif" /&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe src="http://coad.net/Blog/WeddingClock.html" frameborder="1" scrolling="no" height="26" width="340"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;Here are two other posts about my upcoming wedding.&lt;br /&gt;&lt;a href="http://msmvps.com/coad/archive/2005/04/16/43059.aspx"&gt;14 Days to I Do&lt;/a&gt; &amp;amp; &lt;a href="http://msmvps.com/coad/archive/2004/10/10/15399.aspx"&gt;Engaged to an Angel&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Note: RSS Bandit, other RSS feed viewers, and some browsers will not display the timer.  Please view &lt;a href="http://msmvps.com/coad/archive/2005/04/24/44236.aspx"&gt;this blog post&lt;/a&gt; in IE for best results.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=44236" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="Personal" scheme="http://msmvps.com/blogs/coad/archive/tags/Personal/default.aspx" /></entry><entry><title>New MSDN Forums Replace Newsgroups</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/04/22/43984.aspx" /><id>/blogs/coad/archive/2005/04/22/43984.aspx</id><published>2005-04-23T00:57:00Z</published><updated>2005-04-23T00:57:00Z</updated><content type="html">&lt;p&gt;MSDN has moved to using cool new &lt;a href="http://msdn.microsoft.com/forums"&gt;web forums&lt;/a&gt; to replace the old &lt;a href="http://communities.microsoft.com/newsgroups/ICP/whidbey/us/welcomePage.htm"&gt;Whidbey newsgroups&lt;/a&gt;.  The new forums have tons of features!  There are RSS feeds, alerts, a nice UI, easier moderation, and much more.&lt;/p&gt;&lt;p&gt;One good feature is that we on the product team recieve daily e-mails of unanswered questions.  This means a quick response to your posts.&lt;/p&gt;&lt;p&gt;Please give them a try.  What do you think?&lt;/p&gt;&lt;ul style="margin-top: 0px;"&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/forums"&gt;All MSDN Forums&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://forums.microsoft.com/msdn/default.aspx?ForumGroupID=5"&gt;All Team System Forums&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=18"&gt;Visual Studio Team Edition for Software Developers&lt;/a&gt; (&lt;a href="http://forums.microsoft.com/msdn/rss.aspx?ForumID=18&amp;amp;Mode=0"&gt;RSS&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=19"&gt;Visual Studio Team Edition for Software Testers&lt;/a&gt; (&lt;a href="http://forums.microsoft.com/msdn/rss.aspx?ForumID=19&amp;amp;Mode=0"&gt;RSS&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=43984" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="VSTS" scheme="http://msmvps.com/blogs/coad/archive/tags/VSTS/default.aspx" /></entry><entry><title>Visual Studio 2005 (Whidbey) Beta2 is Here!</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/04/18/43500.aspx" /><id>/blogs/coad/archive/2005/04/18/43500.aspx</id><published>2005-04-19T01:16:00Z</published><updated>2005-04-19T01:16:00Z</updated><content type="html">&lt;p&gt;&lt;b&gt;Whidbey Beta2 is Released!&lt;/b&gt;  We all (you &amp;amp; MS) have been waiting long for this build!  Wow, it is a substantial improvement over Beta1 and the client bits even have a Go Live License.  I'm excited!  How about you? &lt;img style="position: relative; top: 2px;" src="http://coad.net/blog/images/SmileDot.gif" /&gt;&lt;/p&gt;&lt;p&gt;If you have a &lt;a href="http://msdn.microsoft.com/howtobuy/vs2005/"&gt;MSDN Subscription&lt;/a&gt;, you can &lt;a href="http://msdn.microsoft.com/getthebetas/"&gt;Get the Beta&lt;/a&gt; for the cost of S/H or download &lt;a href="http://msdn.microsoft.com/vs2005"&gt;Visual Studio 2005&lt;/a&gt; - &lt;a href="http://msdn.microsoft.com/teamsystem"&gt;Team System&lt;/a&gt; (aka VSTS).  There is a &lt;a href="http://lab.msdn.microsoft.com/vs2005/golive/"&gt;Go-Live License&lt;/a&gt; which permits "production deployments of customer applications".&lt;/p&gt;&lt;p&gt;For the free (&lt;a href="http://www.microsoft.com/presspass/press/2005/mar05/03-21VS2005PR.asp"&gt;for now&lt;/a&gt;)
&lt;a href="http://lab.msdn.microsoft.com/express/"&gt;Express SKUs&lt;/a&gt;:
&lt;a href="http://download.microsoft.com/download/c/0/7/c07e9e42-0d34-45d7-890f-810964216a62/vcssetup.exe"&gt;C#&lt;/a&gt;,
&lt;a href="http://download.microsoft.com/download/e/1/c/e1c75061-a229-49ea-bd0c-d0a7a22e8ba4/vbsetup.exe"&gt;VB&lt;/a&gt;,
&lt;a href="http://download.microsoft.com/download/1/c/3/1c3ccc8e-0fcf-400f-bd5c-56c4d65961e9/vcsetup.exe"&gt;VC++&lt;/a&gt;,
&lt;a href="http://download.microsoft.com/download/6/3/8/638c4a4a-8343-4360-9fe8-78ae03037057/vjssetup.exe"&gt;J#&lt;/a&gt;,
&lt;a href="http://download.microsoft.com/download/3/a/0/3a017815-b515-4807-87e5-f2dc57191c97/vwdsetup.exe"&gt;Web Dev&lt;/a&gt;,
&lt;a href="http://download.microsoft.com/download/3/b/2/3b23d152-96cd-4d4b-a136-f8dc8b63cbb0/SQLEXPR.EXE"&gt;SQL Srv&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=43500" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="C#" scheme="http://msmvps.com/blogs/coad/archive/tags/C_2300_/default.aspx" /><category term="VSTS" scheme="http://msmvps.com/blogs/coad/archive/tags/VSTS/default.aspx" /></entry><entry><title>14 Days to I Do</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/04/16/43059.aspx" /><id>/blogs/coad/archive/2005/04/16/43059.aspx</id><published>2005-04-17T02:21:00Z</published><updated>2005-04-17T02:21:00Z</updated><content type="html">&lt;p&gt;&lt;b&gt;In just two weeks from &lt;i&gt;today&lt;/i&gt;, I'll be waiting at the alter for my fiance to walk down the isle to receive her hand in marriage. I'm very excited!&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Dawn is aggresively packing up her appartment in Bryan, TX to be moved out by next week.  Next week is also her last week teaching orchestra for two middle schools in &lt;a href="http://bryanisd.org"&gt;Bryan ISD&lt;/a&gt;.  We are both working fast &amp;amp; furious on finishing up wedding details.&lt;/p&gt;&lt;p&gt;The wedding is Saturday, April 30th in Houston, Texas @ &lt;a href="http://lakewoodumc.org"&gt;Lakewood United Methodist Church&lt;/a&gt;, our reception is being hosted at &lt;a href="http://www.raveneaux.com"&gt;Raveneaux Country Club&lt;/a&gt;, and we are headed to &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=maui"&gt;Maui&lt;/a&gt;, Hawaii for our honeymoon.  We both have large families so it is going to be a big event!&lt;/p&gt;&lt;p&gt;We have a &lt;a href="http://weddings.theknot.com/pwp/view/co_main.aspx?coupleid=3228965929093920"&gt;Wedding Site&lt;/a&gt; and here is my post about getting &lt;a href="http://msmvps.com/coad/archive/2004/10/10/15399.aspx"&gt;Engaged to an Angel&lt;/a&gt;.&lt;/p&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/Engagement Proof (Small) (2).jpg" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Our 'official' engagement photo (from a scanned proof).&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/PICT0377 (Small).jpg" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Dawn recieves her engagement ring at Chritopher's World Grill (August 2004).&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/DSC00363 - 4x6 (Small).jpg" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;On the &lt;a href="http://www.victoriaclipper.com/"&gt;Victoria Clipper&lt;/a&gt; on our way to &lt;a href="http://www.city.victoria.bc.ca/"&gt;Victoria B.C.&lt;/a&gt; Canada.&lt;br /&gt;We had a wonderful time in beautiful Victoria!&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=43059" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="Personal" scheme="http://msmvps.com/blogs/coad/archive/tags/Personal/default.aspx" /></entry><entry><title>Favorite Web Design Links</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/04/09/favorite-web-design-links.aspx" /><id>/blogs/coad/archive/2005/04/09/favorite-web-design-links.aspx</id><published>2005-04-10T04:43:00Z</published><updated>2005-04-10T04:43:00Z</updated><content type="html">&lt;p&gt;These are some of my core reference links that I consistently refer back to while working on the web (mostly from &lt;a href="http://msdn.microsoft.com/"&gt;MSDN&lt;/a&gt;). I also use them with &lt;i&gt;many&lt;/i&gt; other projects, but most frequently with web/html/scripting/xml apps. The main links have been listed on my IE Links toolbar for awhile and now I can replace them all with a single link here. &lt;img style="position:relative;top:2px;" src="http://coad.net/blog/images/SmileDot.gif" alt="" /&gt;&lt;/p&gt; &lt;p&gt;I&amp;#39;ll be updating this as I come across more. If you have any recommendations of reference links you use frequently, please leave a comment and I&amp;#39;ll add them.&lt;/p&gt; &lt;p&gt;&lt;a class="" title="MainReferences" name="MainReferences"&gt;&lt;/a&gt;&lt;b class="head"&gt;Main References&lt;/b&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms531207(VS.85).aspx"&gt;CSS&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms531197.aspx"&gt;Color&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms533054.aspx"&gt;DHTML&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms536473.aspx"&gt;HTA&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/1400241x.aspx"&gt;Regex&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/yek4tbz0.aspx"&gt;JScript&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/98591fh7.aspx"&gt;WSH&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms532853(VS.85).aspx"&gt;Filters&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/bstcxhf7"&gt;Script Runtime&lt;/a&gt;, &lt;a class="" href="http://msdn2.microsoft.com/en-us/library/aa299742(SQL.80).aspx"&gt;SQL&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a class="" title="eXtensibleMarkupLanguage" name="eXtensibleMarkupLanguage"&gt;&lt;/a&gt;&lt;b class="head"&gt;eXtensible Markup Language&lt;/b&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms256177.aspx"&gt;XML&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms256058.aspx"&gt;XSLT&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms256086.aspx"&gt;XPath&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms764730(VS.85).aspx"&gt;DOM&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms761386.aspx"&gt;Node&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms535918(VS.85).aspx"&gt;DHTML&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/system.xml.xmlnode.aspx"&gt;XmlNode,&lt;/a&gt;&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.xml.linq.xnode.aspx"&gt;XNode&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a class="" title="SecondaryLinks" name="SecondaryLinks"&gt;&lt;/a&gt;&lt;b class="head"&gt;Secondary Links&lt;/b&gt;&lt;br /&gt; &lt;ul style="margin-top:0px;"&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms531385.aspx"&gt;HTML Data Binding&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms536496.aspx"&gt;HTML Applications (HTA) Intro&lt;/a&gt;  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms532847.aspx"&gt;Introduction to IE Filters and Transitions&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.discountasp.net/"&gt;DiscountASP.NET Web Hosting&lt;/a&gt; (my &lt;a href="http://coad.net/"&gt;coad.net&lt;/a&gt; provider)&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=41468" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="Scripting" scheme="http://msmvps.com/blogs/coad/archive/tags/Scripting/default.aspx" /><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /></entry><entry><title>SerialPort (RS-232 Serial COM Port) in C# .NET</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx" /><id>/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx</id><published>2005-03-24T02:28:00Z</published><updated>2005-03-24T02:28:00Z</updated><content type="html">&lt;p&gt;This article is about communicating through the PC&amp;#39;s Serial COM RS-232 port using Microsoft .NET 2.0 or later by using the System.IO.Ports.SerialPort class.&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;Way in the Past...&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Back in my early (pre C# MVP) days, I had written an article on &lt;a href="http://devhood.com/"&gt;DevHood&lt;/a&gt; titled &lt;a href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320"&gt;Serial COM Simply in C#&lt;/a&gt;. It became quite popular and is (currently) the top Google search for &amp;quot;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=serial+c%23"&gt;serial c#&lt;/a&gt;&amp;quot;. Now every week I get several e-mails with people asking questions and it is high time for some serious updating.&lt;/p&gt;  &lt;p&gt;The article was (originally) written soon after .NET was introduced to the world, and other .NET serial port controls had not yet been written. So at the time, this was an easy solution. Just use the MSComm.ocx control from VS6 which most Devs had at the time. Now however, there are many easier and preferred methods than dealing with the complexities of interoping with an old legacy (non-.NET) ActiveX OCX control.&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;A Bright Future is Here!&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Today, the primary solution is to use the new &lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;q=SerialPort+site%3Amsdn.microsoft.com"&gt;SerialPort&lt;/a&gt; control that is part of .NET 2.0 and is &lt;em&gt;freely&lt;/em&gt; available in &lt;a href="http://msdn.microsoft.com/express"&gt;C# Express on MSDN&lt;/a&gt;. It is &lt;em&gt;considerably&lt;/em&gt; easier to use and is a true .NET component.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://coad.net/Blog/Resources/SerialPortTerminal.zip"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;margin:5px 5px 5px 0px;border-right-width:0px;" height="50" alt="Download Button - Small" src="http://coad.net/Blog/Images/SerialPortRS232SerialCOMPortinC.NET_A04E/DownloadButtonSmall.png" width="146" align="left" border="0" /&gt;&lt;/a&gt; For loyal fans of the tutorial, I&amp;#39;ve written a sample code application, &lt;a href="http://coad.net/Blog/Resources/SerialPortTerminal.zip"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;SerialPortTerminal.zip&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;, which you can try out to see how the new SerialPort control is used. Requires Visual Studio 2005 &amp;amp; .NET 2.0 or later to compile &amp;amp; run.&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;Continued Support&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Due to the high volume of e-mail I&amp;#39;ve been receiving on serial port communication in general, I&amp;#39;ve wrote this post and added an &lt;a href="http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx#faq"&gt;FAQ section&lt;/a&gt; to the bottom of the post.&amp;#160; Check this first if you have questions.&amp;#160; If you post a question as a comment that hasn&amp;#39;t been answered in the post, I&amp;#39;ll add it to the FAQ section. &lt;img style="position:relative;top:2px;" height="14" src="http://coad.net/blog/images/SmileDot.gif" width="14" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;For those of you who I&amp;#39;ve directed to this blog post, please understand that I&amp;#39;m just another guy working away at a full time job (helping manage the release of &lt;a href="http://msdn.microsoft.com/teamsystem"&gt;Team System&lt;/a&gt;) who has worked with serial RS-232 ports in the past (moving on to USB now). I like to help people, hence I wrote the original article, this sample code, and the FAQ, but do not have the resources to answer additional serial port communication questions. Please check out the &lt;a href="http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx#faq"&gt;SerialCom FAQ&lt;/a&gt; for other .NET COM Port solutions and technical support options.&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;&lt;strong class="head"&gt;&lt;/strong&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;&lt;strong class="head"&gt;Get Connected Up&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can obtain &lt;a href="http://store.yahoo.com/buyextras/setousbco.html"&gt;USB to Serial&lt;/a&gt; adapters (from &lt;a href="http://www.newegg.com/app/ViewProductDesc.asp?description=12-156-003&amp;amp;depa=0"&gt;NewEgg&lt;/a&gt;, search using &lt;a href="http://froogle.google.com/froogle?num=10&amp;amp;price=between&amp;amp;price1=&amp;amp;price2=&amp;amp;cat=0&amp;amp;tiled=0&amp;amp;safe=active&amp;amp;q=usb+serial+db9&amp;amp;scoring=p"&gt;Froogle&lt;/a&gt;) and have just about as many ports on your PC as you like. I carry around two adapters with a &lt;a href="http://www.buyextras.com/numoaddb9fef.html"&gt;null modem&lt;/a&gt; (&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=null+modem"&gt;what is it?&lt;/a&gt;, search &lt;a href="http://froogle.google.com/froogle?hl=en&amp;amp;lr=&amp;amp;tab=wf&amp;amp;scoring=p&amp;amp;q=null+modem+db9"&gt;Froogle&lt;/a&gt;) between them so I can create a loopback to send &amp;amp; receive through to separate ports on most any computer. I&amp;#39;d recommend doing the same for when writing code for the serial port.&lt;/p&gt;  &lt;p&gt;If you&amp;#39;d like to quickly and easily create your own external devices to communicate with the PC, I recommend starting with the &lt;a href="http://www.basicstamp.com"&gt;Parallax BASIC Stamp&lt;/a&gt; modules. Parallax has lots of easy &lt;a href="http://www.parallax.com/Store/Accessories/tabid/84/Default.aspx"&gt;accessories&lt;/a&gt; (such as LCDs, RF, Sounds, AD &amp;amp; DA, etc) for their modules. After that you could migrate to an &lt;a href="http://www.atmel.com"&gt;Atmel Microcontroller&lt;/a&gt; (recommended) or &lt;a href="http://www.microchip.com"&gt;Microchip PIC&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong class="head"&gt;Let&amp;#39;s Have the Code&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Here is an example of how easy it is to use the new SerialPort control.&lt;/p&gt;  &lt;p&gt;Very simply, here is how you can send a bit of data out the port.&lt;/p&gt;  &lt;p&gt;&lt;code&gt;     &lt;table style="border-right:black 1px solid;border-top:black 1px solid;background:white;border-left:black 1px solid;border-bottom:black 1px solid;" cellpadding="6"&gt;         &lt;tr&gt;           &lt;td&gt;             &lt;pre style="display:inline;"&gt;&lt;div&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; This is a new namespace in .NET 2.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#008000;"&gt;// that contains the SerialPort class&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.IO.Ports;

&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; SendSampleData()
{
  &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Instantiate the communications&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#008000;"&gt;  // port with some basic settings&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;  SerialPort port &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPort(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;    &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;COM1&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#000000;"&gt;9600&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Parity.None, &lt;/span&gt;&lt;span style="color:#000000;"&gt;8&lt;/span&gt;&lt;span style="color:#000000;"&gt;, StopBits.One);
  
  &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Open the port for communications&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;  port.Open();
  
  &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Write a string&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;  port.Write(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Hello World&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);
  
  &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Write a set of bytes&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;  port.Write(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;&lt;span style="color:#000000;"&gt;[] {&lt;/span&gt;&lt;span style="color:#000000;"&gt;0x0A&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#000000;"&gt;0xE2&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#000000;"&gt;0xFF&lt;/span&gt;&lt;span style="color:#000000;"&gt;}, &lt;/span&gt;&lt;span style="color:#000000;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#000000;"&gt;3&lt;/span&gt;&lt;span style="color:#000000;"&gt;);
  
  &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Close the port&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;  port.Close();
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/code&gt;&lt;/p&gt;

&lt;br /&gt;

&lt;p&gt;Now let&amp;#39;s take a look at what it takes to read data in from the communications port. This demonstrates reading text; for an example of reading binary data, see my &lt;a href="http://coad.net/Blog/Resources/SerialPortTerminal.zip"&gt;SerialPortTerminal.zip&lt;/a&gt; sample app. &lt;/p&gt;

&lt;ol style="margin-top:0px;"&gt;
  &lt;li&gt;Create a new &amp;quot;Console Application&amp;quot; and replace all the default class code with this code &lt;/li&gt;

  &lt;li&gt;Add a reference to &amp;quot;System.Windows.Forms&amp;quot; to the project &lt;/li&gt;

  &lt;li&gt;Run w/ F5, to exit the app, press Ctrl-Break. &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msmvps.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=161&amp;amp;postid=39466#GetConnectedUp"&gt;Get Connected Up&lt;/a&gt; with two USB to Serial adapters and a null modem &lt;/li&gt;

  &lt;li&gt;Use another app, the code above, or the &lt;a href="http://coad.net/Blog/Resources/SerialPortTerminal.zip"&gt;SerialPortTerminal.zip&lt;/a&gt; example to send data and watch it come in with this code &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
    &lt;table style="border-right:black 1px solid;border-top:black 1px solid;background:white;border-left:black 1px solid;border-bottom:black 1px solid;" cellpadding="6"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre style="display:inline;"&gt;&lt;div&gt;&lt;span style="color:#0000ff;"&gt;#region&lt;/span&gt;&lt;span style="color:#000000;"&gt; Namespace Inclusions&lt;/span&gt;&lt;span style="color:#000000;"&gt;
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; System;
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.IO.Ports;
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.Windows.Forms;
&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#endregion&lt;/span&gt;&lt;span style="color:#000000;"&gt;

&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPortExample
{
  &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPortProgram
  {
    &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Create the serial port with basic settings&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPort port &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPort(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;COM1&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;      9600&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Parity.None, &lt;/span&gt;&lt;span style="color:#000000;"&gt;8&lt;/span&gt;&lt;span style="color:#000000;"&gt;, StopBits.One);

    [STAThread]
    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Main(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt;[] args)
    { 
      &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Instatiate this class&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;      &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPortProgram();
    }

    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPortProgram()
    {
      Console.WriteLine(&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Incoming Data:&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);

      &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Attach a method to be called when there&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#008000;"&gt;      // is data waiting in the port&amp;#39;s buffer&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;      port.DataReceived &lt;/span&gt;&lt;span style="color:#000000;"&gt;+=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;        SerialDataReceivedEventHandler(port_DataReceived);

      &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Begin communications&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;      port.Open();
      
      &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Enter an application loop to keep this thread alive&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;      Application.Run();
    }

    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; port_DataReceived(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;"&gt; sender,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;      SerialDataReceivedEventArgs e)
    {
      &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; Show all the incoming data in the port&amp;#39;s buffer&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;      Console.WriteLine(port.ReadExisting());
    }
  }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/code&gt;&lt;/p&gt;

&lt;br /&gt;

&lt;p&gt;One of the (several) new methods that is supported, and one I&amp;#39;m very glad is finally here, is the ability to obtain a list of the COM ports installed on the computer (ex: COM1, COM2, COM4). This is definately helpful when you want to present the list of ports avalible for the user to select from (as in the &lt;a href="http://coad.net/Blog/Resources/SerialPortTerminal.zip"&gt;SerialPortTerminal.zip&lt;/a&gt; Win App example).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
    &lt;table style="border-right:black 1px solid;border-top:black 1px solid;background:white;border-left:black 1px solid;border-bottom:black 1px solid;" cellpadding="6"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre style="display:inline;"&gt;&lt;div&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; s &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; SerialPort.GetPortNames())
  System.Diagnostics.Trace.WriteLine(s);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/code&gt;&lt;/p&gt;

&lt;br /&gt;

&lt;p&gt;Here are two helpful little methods for sending files through the serial port. Of course, these are the bare essentials and as always, you should check to make sure the port is open first (port.IsOpen) and use try/catch around trying to open a file, but you get the gist with this code. The binary sending routine is limited to about 2GB (the size of an int), but this should be okay for most uses. &lt;img style="position:relative;top:2px;" height="14" src="http://coad.net/blog/images/SmileDot.gif" width="14" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
    &lt;table style="border-right:black 1px solid;border-top:black 1px solid;background:white;border-left:black 1px solid;border-bottom:black 1px solid;" cellpadding="6"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre style="display:inline;"&gt;&lt;div&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.IO;

&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; SendTextFile(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;  SerialPort port, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; FileName)
{ port.Write(File.OpenText(FileName).ReadToEnd()); }

&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; SendBinaryFile(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;  SerialPort port, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; FileName)
{
  &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; (FileStream fs &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; File.OpenRead(FileName))
    port.Write((&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; BinaryReader(fs)).ReadBytes(&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;      (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt;)fs.Length), &lt;/span&gt;&lt;span style="color:#000000;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;, (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt;)fs.Length);
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;a id="ProjectPhotos"&gt;&lt;/a&gt;&lt;strong class="head"&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong class="head"&gt;RS-232 Project Photos&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Each of these involve RS-232 serial port communications. 
  &lt;table class="Photo" style="border-right:black 1px solid;padding-right:4px;border-top:black 1px solid;padding-left:4px;padding-bottom:4px;font:10pt verdana;border-left:black 1px solid;padding-top:4px;border-bottom:black 1px solid;"&gt;
      &lt;tr&gt;
        &lt;td align="center"&gt;&lt;img height="351" src="http://coad.net/blog/images/SerialPortRS232SerialCOMPortinC.NET_EE09/SerialComBASICStamp4.jpg" width="436" alt="" /&gt; &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td align="center"&gt;Just what&amp;#39;s needed to get started with microcontrollers, 
          &lt;br /&gt;a Basic Stamp, mini LCD display, power, and RS-232 port.&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;

  &lt;br /&gt;

  &lt;table class="Photo" style="border-right:black 1px solid;padding-right:4px;border-top:black 1px solid;padding-left:4px;padding-bottom:4px;font:10pt verdana;border-left:black 1px solid;padding-top:4px;border-bottom:black 1px solid;"&gt;
      &lt;tr&gt;
        &lt;td align="center"&gt;&lt;img height="263" src="http://coad.net/blog/images/SerialPortRS232SerialCOMPortinC.NET_EE09/SerialComNullModem4.jpg" width="415" alt="" /&gt; &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td align="center"&gt;Two USB to Serial adapters with a null modem 
          &lt;br /&gt;to loopback and test your serial software.&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;

  &lt;br /&gt;

  &lt;table class="Photo" style="border-right:black 1px solid;padding-right:4px;border-top:black 1px solid;padding-left:4px;padding-bottom:4px;font:10pt verdana;border-left:black 1px solid;padding-top:4px;border-bottom:black 1px solid;"&gt;
      &lt;tr&gt;
        &lt;td align="center"&gt;&lt;img height="274" src="http://coad.net/blog/images/SerialPortRS232SerialCOMPortinC.NET_EE09/SerialComSerialProject4.jpg" width="470" alt="" /&gt; &lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td align="center"&gt;The brains to a mini automated radio station that let me 
          &lt;br /&gt;control my PC &amp;amp; home using my HAM radio from around town.&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;strong class="head"&gt;Port Wiring Notes&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;DB9 Male (Pin Side)                   DB9 Female (Pin Side)
DB9 Female (Solder Side)              DB9 Male (Solder Side)
    -------------                          -------------
    \ 1 2 3 4 5 /                          \ 5 4 3 2 1 /
     \ 6 7 8 9 /                            \ 9 8 7 6 /
      ---------                              ---------

DB9 Female to DB9 Female Null-Modem Wiring
 2 |  3 |  7 |  8 | 6&amp;amp;1|  5 |  4
---- ---- ---- ---- ---- ---- ---- 
 3 |  2 |  8 |  7 |  4 |  5 | 6&amp;amp;1

9-pin   25-pin  Assignment                 From PC
------  ------  -------------------------  ------------
Sheild  1       Case Ground                Gnd
1       8       DCD (Data Carrier Detect)  Input
2       3       RX  (Receive Data)         Input
3       2       TX  (Transmit Data)        Output
4       20      DTR (Data Terminal Ready)  Output
5       7       GND (Signal Ground)        Gnd
6       6       DSR (Data Set Ready)       Input
7       4       RTS (Request To Send)      Output
8       5       CTS (Clear To Send)        Input
9       22      RI  (Ring Indicator)       Input

- RTS &amp;amp; DTR are binary outputs that can be manually set and held
- DCD, DSR, CTS, and RI are binary inputs that can be read
- RX &amp;amp; TX can not be set manually and are controlled by the UART
- maximum voltages are between -15 volts and +15 volts
- binary outputs are between +5 to +15 volts and -5 to -15 volts
- binary inputs are between +3 to +15 volts and -3 to -15 volts
- input voltages between -3 to +3 are undefined while output voltages
  between -5 and +5 are undefined
- positive voltages indicate ON or SPACE, negative voltages indicate
  OFF or MARK&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;strong class="head"&gt;Other Resources&lt;/strong&gt; 

&lt;p&gt;Here are some additional sites, libraries, tutorials, etc. These are links that I just found around the net and am providing for convenience (they are not endorsed).&lt;/p&gt;

&lt;ul style="margin-top:0px;"&gt;
  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/library/30swa673(en-us,vs.80).aspx"&gt;SerialPort on MSDN&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Search on Google &lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;q=SerialPort+C%23"&gt;#1&lt;/a&gt;, &lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;q=serialport+.net"&gt;#2&lt;/a&gt;, &lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;q=.net+serial+port"&gt;#3&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://ourworld.compuserve.com/homepages/richard_grier/CFSerial.htm"&gt;CFSerialIO&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://www.opennetcf.org/SourceBrowse/browse.aspx?f=d:/sites/OpenNETCF/InetPub/wwwroot/Source/OpenNETCF/IO/Serial"&gt;OpenNETCF Port&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where CF = Compact Framework&lt;/p&gt;

&lt;p&gt;&lt;strong class="head"&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong class="head"&gt;The Final Say (aka Conclusion)&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;The new SerialPort class in .NET 2.0 rocks! It is much easier to use than getting the old MSComm.ocx control going in a .NET app, contains new functionality, is a &amp;#39;native&amp;#39; .NET control, has docs built into the MSDN Library, and is easy to use.&lt;/p&gt;

&lt;h3&gt;&lt;strong class="head"&gt;&lt;a title="FAQ" name="FAQ"&gt;&lt;/a&gt;&lt;font color="#800000"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;#160;&lt;/h3&gt;

&lt;h3&gt;&lt;strong class="head"&gt;&lt;font color="#800000"&gt;Frequently Asked Questions (FAQ)&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;I&amp;#39;m adding this section (as of 8/10/06) to address the common questions I get on this post and through e-mail.&amp;#160; Chances are, if you ask a good question in the comments here, I&amp;#39;ll post it here for others to see easily. &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Q: When updating a control (like a text box) while in the DataRecieved event, I get an error. 
      &lt;br /&gt;&lt;/strong&gt;A: The SerialPort class raises events on a separate thread than the main form was create on.&amp;#160; Windows Forms controls must be modified only on their original thread.&amp;#160; Thankfully there is an easy way to do this.&amp;#160; Each Windows control has a &amp;quot;Invoke&amp;quot; method which will run code on the control&amp;#39;s original thread.&amp;#160; So to put the recently received data into a text box (txtLog), this would do it:&amp;#160;&amp;#160; txtLog.Invoke(new EventHandler(delegate { txtLog.Text += comport.ReadExisting(); });&amp;#160;&amp;#160; You can see this more in action in the &amp;quot;Log&amp;quot; event of &amp;quot;Terminal.cs&amp;quot; my sample code project, &lt;a href="http://coad.net/Blog/Resources/SerialPortTerminal.zip"&gt;SerialPortTerminal.zip&lt;/a&gt;. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: I can&amp;#39;t find the System.IO.Ports namespace. 
      &lt;br /&gt;&lt;/strong&gt;A: Using Visual Studio 2003?&amp;#160; The new namespace, and SerialPort class, is part of .NET 2.0 and Visual Studio 2005.&amp;#160; It is not included in .NET 1.x (and Visual Studio 2003).&amp;#160; Even if you have .NET 2.0 or Visual Studio 2005 installed, you can not access the class from within Visual Studio 2003. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: I only have .NET 1.1, what can I do? 
      &lt;br /&gt;&lt;/strong&gt;A: Upgrade to .NET 2.0.&amp;#160; Seriously, it&amp;#39;s free.&amp;#160; In fact, you can get the great C# and VB Visual Studio Interactive Development Environment (IDE) editors for FREE now with &lt;a href="http://msdn.microsoft.com/vstudio/express/visualcsharp/"&gt;C# Express&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/vstudio/express/vb/"&gt;VB Express&lt;/a&gt;.&amp;#160; The &lt;a href="http://msdn.microsoft.com/netframework/downloads/updates/"&gt;.NET 2.0 Software Development Kit (SDK)&lt;/a&gt; for command-line development is also free.&amp;#160; If you really must stay in .NET 1.1, you can use the technique I talk about in &lt;a href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320"&gt;Serial COM Simply in C#&lt;/a&gt; or a 3rd party library. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: I&amp;#39;m sending data to my device, but it is not responding.&lt;/strong&gt; 

    &lt;br /&gt;A: First make sure the device will respond using a standard app like Hyperterminal.&amp;#160; Check the settings (baud rate, data bits, stop bits, etc) and make sure they match with your code.&amp;#160; Try sending binary data via binary arrays.&amp;#160; Many devices expect a carriage return at the end of a command, so be sure to send 0x0D or \n.&amp;#160; String data can be easily converted to a binary array using: 

    &lt;br /&gt;byte[] data = System.Text.ASCIIEncoding.Default.GetBytes(&amp;quot;Hello World\n&amp;quot;); 

    &lt;br /&gt;com.Write(data, 0, data.Length); 

    &lt;br /&gt;Many devices require several carriage returns first to sync baud rates, so send several, like: com.Output(&amp;quot;&amp;quot;.PadLeft(9, &amp;#39;\n&amp;#39;));&amp;#160; It you&amp;#39;re communicating with a modem, make sure Echo Back is turned on.&amp;#160; Send &amp;quot;ATE1\n&amp;quot;.&amp;#160; Other than this, just keep trying and playing around with it.&amp;#160; It can be hard because you don&amp;#39;t see the response from the device as easily as you would with a terminal app. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: When I put received data to a text box or rich text box, I get a strange symbols. 
      &lt;br /&gt;&lt;/strong&gt;A: The default font of text boxes is designed only to show standard characters.&amp;#160; Try using &amp;quot;CharMap&amp;quot; (a free tool in WinXP, click &amp;quot;Start&amp;quot;, &amp;quot;Run&amp;quot;, type &amp;quot;CharMap&amp;quot;, enter).&amp;#160; &amp;quot;Terminal&amp;quot; is a font designed to show classic ASCII characters and is what most terminal apps (like my sample code and Hyperterminal) use.&amp;#160; There are also many ASCII codes that won&amp;#39;t display correctly.&amp;#160; This is why I choose to show the hex data instead of an ASCII string a lot of the time.&amp;#160; System.Convert.ToString(mybyte, 16) will convert a byte to a string hex code, for example: byte b = 13; string s = Convert.ToStrong(b, 16).PadLeft(2, &amp;#39;0&amp;#39;), then s will contain &amp;quot;0D&amp;quot;.&amp;#160; See the &amp;quot;ByteArrayToHexString&amp;quot; and &amp;quot;HexStringToByteArray&amp;quot; methods in my sample app, &lt;a href="http://coad.net/Blog/Resources/SerialPortTerminal.zip"&gt;SerialPortTerminal.zip&lt;/a&gt;. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: What about USB communications?&amp;#160; How can I do USB?&lt;/strong&gt; 

    &lt;br /&gt;This post isn&amp;#39;t about USB.&amp;#160; Believe me, I wish the .NET framework supported USB natively, and I&amp;#39;m doing what I can here at Microsoft to see USB get into the framework in the future.&amp;#160; For now, you can use a &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=USB+Serial+Adapter"&gt;USB to Serial adapter&lt;/a&gt;.&amp;#160; I use a lot of these.&amp;#160; They plug into the USB port, then appear just as a SerialPort to the PC.&amp;#160; Microcontroller vendors such as &lt;a href="http://www.microchip.com/"&gt;Microchip&lt;/a&gt;, &lt;a href="http://www.atmel.com/"&gt;Atmel&lt;/a&gt;, and &lt;a href="http://www.ti.com/"&gt;TI&lt;/a&gt; make chips that do this for projects.&amp;#160; There is a lot of info on &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=usb+C%23"&gt;USB and C#&lt;/a&gt; out there too (such as this &lt;a href="http://www.vsj.co.uk/articles/display.asp?id=600"&gt;great article&lt;/a&gt;). 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: Can I use the sample code here in my own projects (commercial or not)?&lt;/strong&gt; 

    &lt;br /&gt;Yes!&amp;#160; All sample code on my blog is free public domain material.&amp;#160; I&amp;#39;m not a legal guy so I don&amp;#39;t know the exact words to use, but I&amp;#39;ll try...&amp;#160; I&amp;#39;m not responsible for any problems!&amp;#160; Use at your own rick etc.&amp;#160; However, have at it, if it helps you out, fantastic, that&amp;#39;s what it&amp;#39;s here for. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: When using SerialPort.Open() (or SerialPort.PortOpen = true) I get the exception &amp;quot;UnauthorizedAccessException&amp;quot; or &lt;strong&gt;the error &amp;quot;An unhandled exception of type &amp;#39;System.Runtime.InteropServices.COMException&amp;#39; occurred in axinterop.mscommlib.dll&amp;quot;&lt;/strong&gt;&lt;/strong&gt; 

    &lt;br /&gt;It may be one of a few factors: 

    &lt;br /&gt;

    &lt;ul style="margin-top:0px;"&gt;
      &lt;li&gt;It may require Administrative privileges to use the port. &lt;/li&gt;

      &lt;li&gt;The port may already be open by another program, only one app can use a port at a time. &lt;/li&gt;

      &lt;li&gt;The port may not exist on the computer (this happens a lot).&amp;#160; Verify the port you&amp;#39;re trying to open is listed in the Device Manager (FAQ #9). &lt;/li&gt;

      &lt;li&gt;The name being provided is not exactly correct. 
        &lt;br /&gt;Use the full name of the port when opening, like &amp;quot;COM1&amp;quot; (not &amp;quot;1&amp;quot;) &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: How do I know what COM ports are on my PC?&lt;/strong&gt; 

    &lt;br /&gt;Use the Device Manager (&amp;quot;Start&amp;quot;, &amp;quot;Run&amp;quot;, &amp;quot;devmgmt.msc&amp;quot;) and look for the &amp;quot;Ports&amp;quot; node (see below).&amp;#160; If you &lt;u&gt;don&amp;#39;t see a Ports node&lt;/u&gt;, it&amp;#39;s because there are no Serial or Parallel ports installed in the PC.&amp;#160; You can also use System.IO.Ports.SerialPort.GetPortNames() to return the list of available ports.&amp;#160; Many laptops these day&amp;#39;s don&amp;#39;t have a serial port.&amp;#160; You can get more serial ports very easily today with &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=USB+Serial+Adapter"&gt;USB to Serial adapters&lt;/a&gt;. 

    &lt;br /&gt;

    &lt;br /&gt;&lt;img height="519" src="http://msmvps.com/blogs/coad/WindowsLiveWriter/SerialPortRS232SerialCOMPortinC.NET_9269/DeviceManagerforPorts5.png" width="274" alt="" /&gt; 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: How do I communicate with my specific device?&amp;#160; Modem, Mobile Phone, LED/LCD Display, Scanner, etc 
      &lt;br /&gt;&lt;/strong&gt;This post is specific to general, device independent, serial port communications.&amp;#160; You will need to find information about the protocol used for your specific device elsewhere.&amp;#160; Comments that ask about specific devices will be deleted (to reduce spam).&amp;#160; I&amp;#39;d recommend looking on the manufacture&amp;#39;s website, writing/calling the manufacture, or searching online for your specific device, like &amp;quot;Motorola Razor Serial Protocol&amp;quot;. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: What pins can I use for powering devices, a high signal, or for boolean input &amp;amp; output? 
      &lt;br /&gt;&lt;/strong&gt;The TX &amp;amp; RX pins carry the standard serial signal, but the other pins can be used as high/low input/output pins.&amp;#160; The output pins (4 DTR or 8 CTS), supply 5 to 15 volts (15v is proper RS-232 standard) when high and 0 to -15 volts when low.&amp;#160; They only supply flea current so they&amp;#39;re not meant to be used for powering any devices (like USB is designed for).&amp;#160; However, they can be used as a reference voltage or for switching to one of the input pins for a high or low signal.&amp;#160; The input pins (1 DCD, 6 DSR, 8 CTS, and 9 RI) can be used to detect a high or low signal.&amp;#160; Proper RS-232 signal levels are -15v for a low and +15v for a high (compared to ground, pin 5).&amp;#160; A &lt;a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&amp;amp;storeId=10001&amp;amp;catalogId=10001&amp;amp;productId=698576"&gt;MAX232&lt;/a&gt; or similar chip takes a TTL 0-5v input and produces the -15v to +15v levels.&amp;#160; However, most PC RS-232 COM ports will accept a 0v for low and 5v for high, but it is not guaranteed and alters from PC to PC.&amp;#160; If you want a simple &amp;quot;toggle high&amp;quot;, just hold pin 4 DTR high, and switch it to pin 1 DCD.&amp;#160; The .NET SerialPort class has easy to use properties for switching the output pins high or low and for detecting the current level of the input pins.&amp;#160; I have been able to use pin 4 DTR for a very low current (20ma max) PIC processors, but not reliably.&amp;#160; I prefer to always supply external power and use pin 4 as a signal to turn on or off my device.&amp;#160; I&amp;#39;ll attach pin 4 to a transistor that switches my power source to my PIC to turn it on or off. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: What about ‘packets’?&amp;#160; Does RS-232 support any commands or data segregation?&amp;#160; OR&amp;#160; Data comes in at seemingly random times? 
      &lt;br /&gt;&lt;/strong&gt;Serial data flow through RS-232 has nothing to do with ‘packets’.&amp;#160; It’s just a stream of bytes in and out.&amp;#160; There is no guarantee that data arrives together. 

    &lt;br /&gt;

    &lt;br /&gt;&lt;strong&gt;Packet Protocols 
      &lt;br /&gt;&lt;/strong&gt;Any notion of data compartmentalization (packets) would have to be coded by you for your unique use.&amp;#160; Much of my time working with serial has been spent on defining useful packet like protocols, that usually include some type of header, command structure, and CRC check.&amp;#160; For example, the first two bytes are the packet length, the next two bytes is the command, next two bytes are parameters, and the last byte is a CRC.&amp;#160; Then my apps would buffer incoming data and look in the buffer for valid packets.&amp;#160; Of course it differs depending on the device you’re working with and your specific needs.&amp;#160; USB does have specific communications protocol defined, one of them being command based, like the little packet just mentioned.&amp;#160; But with USB, you’re able to get the whole command and parameter together at once, with serial you have to create the protocol yourself, buffer, and parse the data.&amp;#160; My &lt;a href="http://www.devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=320"&gt;previous serial post&lt;/a&gt; has more info under the header “Protocol Development”. 

    &lt;br /&gt;

    &lt;br /&gt;&lt;strong&gt;Buffering Incoming Data&lt;/strong&gt; 

    &lt;br /&gt;Since bytes may come in at any time, buffering incoming data is critical.&amp;#160; For example, you may send a command out to your device, and the response back to the PC could trigger a single DataReceived event with all the 30 bytes of response data in the receive buffer.&amp;#160; Or more likely, it could be any number of separate triggers of the DataReceived (up to the number of bytes received), like 4 triggers, first with 2 bytes, then 15 bytes, then 1 byte, then 12 bytes.&amp;#160; Don’t look for a complete response in a single DataReceived call, instead: 

    &lt;br /&gt;1. buffer the incoming data 

    &lt;br /&gt;2. then scan your buffer to find complete data 

    &lt;br /&gt;3. remove the used data from the buffer 

    &lt;br /&gt;

    &lt;br /&gt;To buffer incoming data, use a coding pattern like this: 

    &lt;br /&gt;(download the code &lt;a href="http://coad.net/blog/resources/SerialComBuffering.zip"&gt;SerialComBuffering.zip&lt;/a&gt;) 

    &lt;br /&gt;

    &lt;div style="border-right:black 1px solid;padding-right:0.75em;border-top:black 1px solid;padding-left:0.75em;font-size:10pt;background:white;padding-bottom:0.75em;border-left:black 1px solid;color:black;padding-top:0.75em;border-bottom:black 1px solid;font-family:consolas;"&gt;
      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; &lt;span style="color:purple;"&gt;System&lt;/span&gt;;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; &lt;span style="color:purple;"&gt;System&lt;/span&gt;.&lt;span style="color:purple;"&gt;IO&lt;/span&gt;.&lt;span style="color:purple;"&gt;Ports&lt;/span&gt;;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; &lt;span style="color:purple;"&gt;System&lt;/span&gt;.&lt;span style="color:purple;"&gt;Collections&lt;/span&gt;.&lt;span style="color:purple;"&gt;Generic&lt;/span&gt;;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; &lt;span style="color:purple;"&gt;SerialComBuffering&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;{&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Program&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160; {&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;SerialPort&lt;/span&gt; &lt;span style="color:purple;"&gt;com&lt;/span&gt; = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SerialPort&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;SerialPort&lt;/span&gt;.&lt;span style="color:purple;"&gt;GetPortNames&lt;/span&gt;()[0], &lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 9600, &lt;span style="color:#2b91af;"&gt;Parity&lt;/span&gt;.&lt;span style="color:purple;"&gt;None&lt;/span&gt;, 8, &lt;span style="color:#2b91af;"&gt;StopBits&lt;/span&gt;.&lt;span style="color:purple;"&gt;One&lt;/span&gt;);&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;&amp;gt; &lt;span style="color:purple;"&gt;bBuffer&lt;/span&gt; = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;&amp;gt;();&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; &lt;span style="color:purple;"&gt;sBuffer&lt;/span&gt; = &lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.&lt;span style="color:purple;"&gt;Empty&lt;/span&gt;;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; &lt;span style="color:purple;"&gt;Main&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] &lt;span style="color:purple;"&gt;args&lt;/span&gt;)&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Program&lt;/span&gt;(); }&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:purple;"&gt;Program&lt;/span&gt;()&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:purple;"&gt;com&lt;/span&gt;.&lt;span style="color:purple;"&gt;DataReceived&lt;/span&gt; += &lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;SerialDataReceivedEventHandler&lt;/span&gt;(&lt;span style="color:purple;"&gt;com_DataReceived&lt;/span&gt;);&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:purple;"&gt;com&lt;/span&gt;.&lt;span style="color:purple;"&gt;Open&lt;/span&gt;();&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.&lt;span style="color:purple;"&gt;WriteLine&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Waiting for incoming data...&amp;quot;&lt;/span&gt;);&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.&lt;span style="color:purple;"&gt;ReadKey&lt;/span&gt;();&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;void&lt;/span&gt; &lt;span style="color:purple;"&gt;com_DataReceived&lt;/span&gt;(&lt;span style="color:blue;"&gt;object&lt;/span&gt; &lt;span style="color:purple;"&gt;sender&lt;/span&gt;, &lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;SerialDataReceivedEventArgs&lt;/span&gt; &lt;span style="color:purple;"&gt;e&lt;/span&gt;)&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Use either the binary OR the string technique (but not both)&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Buffer and process binary data&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;while&lt;/span&gt; (&lt;span style="color:purple;"&gt;com&lt;/span&gt;.&lt;span style="color:purple;"&gt;BytesToRead&lt;/span&gt; &amp;gt; 0) &lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:purple;"&gt;bBuffer&lt;/span&gt;.&lt;span style="color:purple;"&gt;Add&lt;/span&gt;((&lt;span style="color:blue;"&gt;byte&lt;/span&gt;)&lt;span style="color:purple;"&gt;com&lt;/span&gt;.&lt;span style="color:purple;"&gt;ReadByte&lt;/span&gt;());&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:purple;"&gt;ProcessBuffer&lt;/span&gt;(&lt;span style="color:purple;"&gt;bBuffer&lt;/span&gt;);&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Buffer string data&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:purple;"&gt;sBuffer&lt;/span&gt; += &lt;span style="color:purple;"&gt;com&lt;/span&gt;.&lt;span style="color:purple;"&gt;ReadExisting&lt;/span&gt;();&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:purple;"&gt;ProcessBuffer&lt;/span&gt;(&lt;span style="color:purple;"&gt;sBuffer&lt;/span&gt;);&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; &lt;span style="color:purple;"&gt;ProcessBuffer&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt; &lt;span style="color:purple;"&gt;sBuffer&lt;/span&gt;)&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Look in the string for useful information&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// then remove the useful data from the buffer&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; &lt;span style="color:purple;"&gt;ProcessBuffer&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;&amp;gt; &lt;span style="color:purple;"&gt;bBuffer&lt;/span&gt;)&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Look in the byte array for useful information&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// then remove the useful data from the buffer&lt;/span&gt;&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;&amp;#160; }&lt;/p&gt;

      &lt;p style="margin:0px;"&gt;}&lt;/p&gt;
    &lt;/div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: How do you detect when a device is connected or disconnected? 
      &lt;br /&gt;&lt;/strong&gt;Simply put, the device usually start or stop sending data.&amp;#160; There is no built in events on a connect or disconnect.&amp;#160; But there are a few tricks you can do, if you’re creating the serial device you have more options.&amp;#160; I’ve had my devices (and PC apps) send a constant “are you there” set of bytes, like 00 00 11 11 00 00 hex (I’d use a ‘are you there’ custom ‘packet’ as in Q12 above) till a device on the other end responds.&amp;#160; You could also use hardware, that’s what some of the other signals lines are for (CDC, DSR, RTS, CTS, RI), you can tie one of these high and then catch an event when the line goes high you know there’s a device there, when it goes low the device is gone. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Q: How can I get more support?&amp;#160; What are my support options?&lt;/strong&gt; &lt;/li&gt;

  &lt;ul&gt;
    &lt;li&gt;Read this FAQ section!&amp;#160; :)&amp;#160; &lt;/li&gt;

    &lt;li&gt;You can try leaving a comment below.&amp;#160; Perhaps someone knows the answer &lt;/li&gt;

    &lt;li&gt;Try doing a search and look for other content.&amp;#160; &amp;quot;&lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;q=SerialPort+C%23"&gt;SerialPort C#&lt;/a&gt;&amp;quot;, &amp;quot;&lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;q=Serial+com+C%23"&gt;Serial Com C#&lt;/a&gt;&amp;quot;, &amp;quot;&lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;q=serial+port+.net"&gt;serial port .net&lt;/a&gt;&amp;quot; &lt;/li&gt;

    &lt;li&gt;Post a question in the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=39&amp;amp;SiteID=1"&gt;.NET Base Class Library&lt;/a&gt; in MSDN Forums&lt;/li&gt;
  &lt;/ul&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=39466" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="C#" scheme="http://msmvps.com/blogs/coad/archive/tags/C_2300_/default.aspx" /></entry><entry><title>Define 'Axiom Postulate Theorem Corollary Hypothesis'</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/03/21/39194.aspx" /><id>/blogs/coad/archive/2005/03/21/39194.aspx</id><published>2005-03-21T20:43:00Z</published><updated>2005-03-21T20:43:00Z</updated><content type="html">&lt;p&gt;When explaining to a friend of mine some of the fundamentals of mathematics, I found myself giving definitions of these base terms.  A quick search with Google returned this great excerpt that efficiently and eloquently defines the words and relations, and merits posting here.&lt;/p&gt;&lt;p&gt;The words axiom and postulate are synonymous in mathematics. They are statements that are accepted as true in order to study the consequences that follow from them. Suppose that you were studying a deductive system called Jabbermetry and the words toves and mome appeared in the statement For every two toves P and Q there is a unique mome PQ that contains both P and Q. Given no other information, you would be unable to prove that this statement is true. In fact, this statement defines an important relationship between toves and momes; it is an axiom or postulate of Jabbermetry. Notice that if you are informed that Jabbermetry actually means Geometry, toves means points, and mome means line, the statement becomes more familiar: axiom 1: For every two points P and Q there is a unique line PQ that contains both P and Q. Do not be misled by your familiarity with points and lines, however. It remains that this statement cannot be proven since you are given no other information and is thus an axiom or postulate.&lt;/p&gt;&lt;p&gt;Three other terms that occur in the hierarchy of deductive reasoning are theorem, corollary, and hypothesis. A theorem is a statement that is a logical consequence of axioms and other theorems. A theorem, unlike an axiom or postulate, exists only if a proof can be given for the statement. For example, if you allow the additional axioms axiom 2: There exist three points not all in one line, and axiom 3: Two lines L and M are parallel if they do not intersect or if L = M, then you can show that the statement Two distinct lines intersect in at most one point is a consequence of axioms 13; the proven statement is a theorem. A corollary is a trivial theorem, that is, a theorem that so closely follows another axiom or theorem that it practically does not require a proof. For example, a corollary of axiom 3 above is If L is a line, then L is parallel to itself. The proof of this corollary is the definition of equals: L = L. Finally, a hypothesis is a statement that has not been proven but is expected to be capable of proof. For example, you may hypothesize If point B is between points A and C, then point C is not between points A and B. This is equivalent to a conjecture. If this statement does not follow from your present system of axioms, you may wish to include an additional axiom or make the hypothesis an axiom itself and see where it leads you. For the hypothesis given above, you may want to introduce an axiom that establishes a coordinate system.&lt;/p&gt;&lt;p&gt;Thus, axioms and postulates form the roots of a particular deductive system; theorems and corollaries are the logical consequences that fill out the deductive system; hypotheses drive theoretical development forward.&lt;/p&gt;&lt;p&gt;From: &lt;a href="http://www.bartleby.com/64/C004/009.html"&gt;The American Heritage Book of English Usage&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=39194" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /></entry><entry><title>Ballmer Dancing Developers Conference Video</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/03/19/38999.aspx" /><id>/blogs/coad/archive/2005/03/19/38999.aspx</id><published>2005-03-19T12:39:00Z</published><updated>2005-03-19T12:39:00Z</updated><content type="html">&lt;p&gt;At one of the developer conferences (late 90s, early 2000s?), &lt;a href="http://www.microsoft.com/presspass/exec/steve"&gt;Steve Ballmer&lt;/a&gt;, CEO of Microsoft, came out on stage saying 'Developers' over 15 times before his voice went out.  Being a developer myself, I think this is cool.  At the Microsoft company meeting that followed, I remember talk among us employees whether he was going to come out on stage saying another word repeatedly (he didn't that time).  Here they are...&lt;/p&gt;&lt;p&gt;&lt;table style="font-size: 10pt"&gt;&lt;tr&gt;&lt;td&gt;&lt;ul style="margin-top: 0px;"&gt;&lt;li&gt;&lt;a href="http://www.ntk.net/media/developers.mpg"&gt;Ballmer Saying 'Developers' Repeatedly&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ntk.net/media/dancemonkeyboy.mpg"&gt;Ballmer Excited at Another Conference&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tarmo.fi/arc/ballmer.avi"&gt;Remix of the Two Video Clips w/ Music&lt;/a&gt;&lt;br /&gt;This is really cool! In a geeky way... &lt;img style="position: relative; top: 2px;" src="http://coad.net/blog/images/SmileDot.gif" /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td&gt;&lt;div style="width:30px;"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign="center"&gt;&lt;div style="border: 1px solid gray; background: white; padding: 6px;"&gt;&lt;a href="http://www.microsoft.com/presspass/exec/steve"&gt;&lt;img border="0" src="http://coad.net/blog/Images/SteveBallmerFace.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;!-- &lt;div class="PicFrame"&gt;&lt;a href="http://www.microsoft.com/presspass/exec/steve"&gt;&lt;img border="0" src="http://coad.net/blog/images/SteveBallmerFace.gif"/&gt;&lt;/a&gt;&lt;/div&gt; --&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=38999" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /></entry><entry><title>Ballmer Sells Windows v1.0 TV Video Ad</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/03/19/38998.aspx" /><id>/blogs/coad/archive/2005/03/19/38998.aspx</id><published>2005-03-19T12:30:00Z</published><updated>2005-03-19T12:30:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.microsoft.com/presspass/exec/steve"&gt;Steve Ballmer&lt;/a&gt;, CEO of Microsoft, can be &lt;a href="http://media.ebaumsworld.com/ballmerwindows.wmv"&gt;seen here&lt;/a&gt; in an early days of Microsoft in this TV ad selling Windows v1.0.  It is a facinating, and entertaining, video.&lt;/p&gt;&lt;p&gt;Get a load of the 286 computer w/ IBM EGA monitor!  Wow, that brings back memories...  The 'card filer' could use some sample data, it isn't clear what it does here.  Looks like the control panel was a bit small in those days.  Hehe, I actually remember trying out Reversi. :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=38998" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /></entry><entry><title>Congrats to Jeffrey Palermo, MCAD</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/02/20/36501.aspx" /><id>/blogs/coad/archive/2005/02/20/36501.aspx</id><published>2005-02-20T08:50:00Z</published><updated>2005-02-20T08:50:00Z</updated><content type="html">&lt;p&gt;Congratulations to my friend &lt;a href="http://dotnetjunkies.com/WebLog/jpalermo/"&gt;Jeffrey Palermo&lt;/a&gt; on becoming a Microsoft Certified Application Developer (&lt;a href="http://www.microsoft.com/learning/mcp/mcad"&gt;MCAD&lt;/a&gt;)!&lt;/p&gt;&lt;p&gt;Jeff's making great progress on his MS certifications and is headed towards a &lt;a href="http://www.microsoft.com/learning/mcp/mcsd/default.asp"&gt;MCSD&lt;/a&gt; &amp;amp; &lt;a href="http://www.microsoft.com/learning/mcp/mct/default.asp"&gt;MCT&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=36501" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /></entry><entry><title>US Patent Plaque</title><link rel="alternate" type="text/html" href="/blogs/coad/archive/2005/02/20/36483.aspx" /><id>/blogs/coad/archive/2005/02/20/36483.aspx</id><published>2005-02-20T06:39:00Z</published><updated>2005-02-20T06:39:00Z</updated><content type="html">&lt;p&gt;Between high school and college (at &lt;a href="http://www.tamu.edu"&gt;Texas A&amp;amp;M Univ.&lt;/a&gt;), I spent a year in &lt;a href="http://www.sandpoint.com/"&gt;Sandpoint, Idaho&lt;/a&gt;, working on a national biomedical smart card system.  My Dad was working for a sister company at the same time on a portable home cholesterol monitor which interfaced with the smart card.  The company, &lt;a href="http://www.lifestreamtech.com/"&gt;Lifestream&lt;/a&gt;, filed for a &lt;a href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PALL&amp;amp;p=1&amp;amp;u=/netahtml/srchnum.htm&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=6602469.WKU.&amp;amp;OS=PN/6602469&amp;amp;RS=PN/6602469"&gt;US Patent&lt;/a&gt; on the cholestoral monitor and medical tracking system and it was granted.&lt;/p&gt;&lt;p&gt;It was a great experience working with smart cards and creating a medical record tracking system.  Smart cards at the time were desined for financial purposes, so it was a fun challange to create a flexible system on the cards for medical data.  The smart card inserts into portable medical devices, like the cholesterol meter, glucose monitors, blood pressure cuffs, etc.  Requiring the user's PIN, the medical device gets data from the smart card, saves its results to the card, then the user puts the card into a PC to save and analyse the data.&lt;/p&gt;&lt;p&gt;My Dad recently gave me this plaque to commemorate the patent being issued.  Thanks Dad!&lt;/p&gt;&lt;table class="Photo" style="border: solid 1px black; padding: 4px; font: 10pt verdana;"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;img src="http://coad.net/blog/Images/Noah US Patent Photo (Small).jpg" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;The plaque my Dad sent me to memorialize our accomplishment.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=36483" width="1" height="1"&gt;</content><author><name>coad</name><uri>http://msmvps.com/members/coad/default.aspx</uri></author><category term="General" scheme="http://msmvps.com/blogs/coad/archive/tags/General/default.aspx" /></entry></feed>