Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1109785
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T02:17:30+00:00 2026-05-17T02:17:30+00:00

I have a C# code which communicates with three different COM ports. The COM

  • 0

I have a C# code which communicates with three different COM ports. The COM ports are actually three serial port to USB converters.

The code each time switches ‘off’ and ‘on’ the devices to which it is communicating, then initializes the three com ports, tries to send and read data and then closes the com port. This keeps continuing for a pre-defined number of loops.
My problem is that after about 8 or 9 iterations, the COM port communication stops working. Sometime it throws an error saying the port is closed, sometime it does not throw any exception but it is actually not reading or writing anything from the com port. Some point it was only writing but not reading back the data.

What might be the reason and any tips to debug this problem?

EDIT:

The port abruptly closes or stops working even in the middle of the program as shown below:

SerialPort.Write("ss");
SerialPort.Read("ss"); // FAILS!!

Some part of the code I am using

public string Read(string readCommand)
        {
            string str = "";
            _port.WriteLine("\r");
            _port.WriteLine(readCommand + "\r");
            Thread.Sleep(0x3e8);
            str = _port.ReadExisting();
            return str;
        }

public void Write(string command)
        {
            _port.WriteLine(command + "\r");
            Thread.Sleep(100);
            if (_port.ReadExisting() == string.Empty)
            {
                throw new IOException("Error writing to COM");
            }
        }

    public void Initialize()
    {
        if (_port == null)
        {
            _port = new SerialPort(this.PortName.ToString(), this.BaudRate, this.Parity, this.DataBits, this.StopBits);
            _port.Handshake = this.Handshake;
        }
        try
        {
            if (!_port.IsOpen)
            {
                _port.Open();
                if (Read("") == string.Empty)
                {
                    throw new IOException("Device not connected or powered on");
                }

            }
        }
        catch (Exception)
        {
            this.Close();
        }
    }

Thanks…

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T02:17:31+00:00Added an answer on May 17, 2026 at 2:17 am
            _port.WriteLine(command + "\r");
            Thread.Sleep(100);
            if (_port.ReadExisting() == string.Empty)
            {
                throw new IOException("Error writing to COM");
            }
    

    That’s evil code and bound to throw sooner or later. Windows cannot provide a service guarantee like that. Or for that matter the device itself, especially when you power it on and off. Use SerialPort.ReadTimeout, set it to at least 2 seconds. And make a blocking call, like ReadLine().

        catch (Exception)
        {
            this.Close();
        }
    

    That’s tops the previous snippet. You have no idea what’s going wrong when that runs. And your code will try to use a closed port. Just delete the statements, it does nothing but harm.

    Do not close the ports until your program ends. SerialPort uses a background thread to watch for events on the port, that thread needs to shutdown after the Close() call before you can open the port again. How long it takes to shutdown is unpredictable, it could be seconds worst case. There’s no point in closing the port, it isn’t going to be useful to anything else.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have code which works in all sorts of different situations, including when copying
I have some code which takes strings representing hexadecimal numbers - hex colors, actually
I have a code which communicates with external hardware in the system. As per
I have code which has a drop down list. And when a certain option
I have code which needs to do something like this There is a list
I have code which looks like: private static DirectiveNode CreateInstance(Type nodeType, DirectiveInfo info) {
I have code which as been working against an older Active Directory server and
I have code which performs query on Jboss server. It has JNDI based datasource
I already have code which lazy loads scripts on request. My issue now is
Hi I have code which sets up a basic client to server scenario and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.