<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Working_with_Serial_Ports_in_Dot.NET</id>
	<title>Working with Serial Ports in Dot.NET - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Working_with_Serial_Ports_in_Dot.NET"/>
	<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Working_with_Serial_Ports_in_Dot.NET&amp;action=history"/>
	<updated>2026-05-18T13:54:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Working_with_Serial_Ports_in_Dot.NET&amp;diff=3361&amp;oldid=prev</id>
		<title>PeterHarding: Created page with &#039;See:  * http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx  &lt;pre&gt; using System; using System.IO.Ports; using System.Threading;  public class PortChat {     s...&#039;</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Working_with_Serial_Ports_in_Dot.NET&amp;diff=3361&amp;oldid=prev"/>
		<updated>2011-01-30T08:06:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;See:  * http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx  &amp;lt;pre&amp;gt; using System; using System.IO.Ports; using System.Threading;  public class PortChat {     s...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;See:&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.IO.Ports;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
&lt;br /&gt;
public class PortChat&lt;br /&gt;
{&lt;br /&gt;
    static bool _continue;&lt;br /&gt;
    static SerialPort _serialPort;&lt;br /&gt;
&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        string name;&lt;br /&gt;
        string message;&lt;br /&gt;
        StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;&lt;br /&gt;
        Thread readThread = new Thread(Read);&lt;br /&gt;
&lt;br /&gt;
        // Create a new SerialPort object with default settings.&lt;br /&gt;
        _serialPort = new SerialPort();&lt;br /&gt;
&lt;br /&gt;
        // Allow the user to set the appropriate properties.&lt;br /&gt;
        _serialPort.PortName = SetPortName(_serialPort.PortName);&lt;br /&gt;
        _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);&lt;br /&gt;
        _serialPort.Parity = SetPortParity(_serialPort.Parity);&lt;br /&gt;
        _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);&lt;br /&gt;
        _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);&lt;br /&gt;
        _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);&lt;br /&gt;
&lt;br /&gt;
        // Set the read/write timeouts&lt;br /&gt;
        _serialPort.ReadTimeout = 500;&lt;br /&gt;
        _serialPort.WriteTimeout = 500;&lt;br /&gt;
&lt;br /&gt;
        _serialPort.Open();&lt;br /&gt;
        _continue = true;&lt;br /&gt;
        readThread.Start();&lt;br /&gt;
&lt;br /&gt;
        Console.Write(&amp;quot;Name: &amp;quot;);&lt;br /&gt;
        name = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(&amp;quot;Type QUIT to exit&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        while (_continue)&lt;br /&gt;
        {&lt;br /&gt;
            message = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
            if (stringComparer.Equals(&amp;quot;quit&amp;quot;, message))&lt;br /&gt;
            {&lt;br /&gt;
                _continue = false;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                _serialPort.WriteLine(&lt;br /&gt;
                    String.Format(&amp;quot;&amp;lt;{0}&amp;gt;: {1}&amp;quot;, name, message) );&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        readThread.Join();&lt;br /&gt;
        _serialPort.Close();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void Read()&lt;br /&gt;
    {&lt;br /&gt;
        while (_continue)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                string message = _serialPort.ReadLine();&lt;br /&gt;
                Console.WriteLine(message);&lt;br /&gt;
            }&lt;br /&gt;
            catch (TimeoutException) { }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static string SetPortName(string defaultPortName)&lt;br /&gt;
    {&lt;br /&gt;
        string portName;&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(&amp;quot;Available Ports:&amp;quot;);&lt;br /&gt;
        foreach (string s in SerialPort.GetPortNames())&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;   {0}&amp;quot;, s);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        Console.Write(&amp;quot;COM port({0}): &amp;quot;, defaultPortName);&lt;br /&gt;
        portName = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        if (portName == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            portName = defaultPortName;&lt;br /&gt;
        }&lt;br /&gt;
        return portName;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static int SetPortBaudRate(int defaultPortBaudRate)&lt;br /&gt;
    {&lt;br /&gt;
        string baudRate;&lt;br /&gt;
&lt;br /&gt;
        Console.Write(&amp;quot;Baud Rate({0}): &amp;quot;, defaultPortBaudRate);&lt;br /&gt;
        baudRate = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        if (baudRate == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            baudRate = defaultPortBaudRate.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return int.Parse(baudRate);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static Parity SetPortParity(Parity defaultPortParity)&lt;br /&gt;
    {&lt;br /&gt;
        string parity;&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(&amp;quot;Available Parity options:&amp;quot;);&lt;br /&gt;
        foreach (string s in Enum.GetNames(typeof(Parity)))&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;   {0}&amp;quot;, s);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        Console.Write(&amp;quot;Parity({0}):&amp;quot;, defaultPortParity.ToString());&lt;br /&gt;
        parity = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        if (parity == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            parity = defaultPortParity.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return (Parity)Enum.Parse(typeof(Parity), parity);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static int SetPortDataBits(int defaultPortDataBits)&lt;br /&gt;
    {&lt;br /&gt;
        string dataBits;&lt;br /&gt;
&lt;br /&gt;
        Console.Write(&amp;quot;Data Bits({0}): &amp;quot;, defaultPortDataBits);&lt;br /&gt;
        dataBits = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        if (dataBits == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            dataBits = defaultPortDataBits.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return int.Parse(dataBits);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static StopBits SetPortStopBits(StopBits defaultPortStopBits)&lt;br /&gt;
    {&lt;br /&gt;
        string stopBits;&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(&amp;quot;Available Stop Bits options:&amp;quot;);&lt;br /&gt;
        foreach (string s in Enum.GetNames(typeof(StopBits)))&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;   {0}&amp;quot;, s);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        Console.Write(&amp;quot;Stop Bits({0}):&amp;quot;, defaultPortStopBits.ToString());&lt;br /&gt;
        stopBits = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        if (stopBits == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            stopBits = defaultPortStopBits.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return (StopBits)Enum.Parse(typeof(StopBits), stopBits);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static Handshake SetPortHandshake(Handshake defaultPortHandshake)&lt;br /&gt;
    {&lt;br /&gt;
        string handshake;&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(&amp;quot;Available Handshake options:&amp;quot;);&lt;br /&gt;
        foreach (string s in Enum.GetNames(typeof(Handshake)))&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;   {0}&amp;quot;, s);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        Console.Write(&amp;quot;Handshake({0}):&amp;quot;, defaultPortHandshake.ToString());&lt;br /&gt;
        handshake = Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        if (handshake == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            handshake = defaultPortHandshake.ToString();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return (Handshake)Enum.Parse(typeof(Handshake), handshake);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Dot.NET]]&lt;br /&gt;
[[Category:Microsoft]]&lt;/div&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
</feed>