Serial.Open()报告可以打开,但会延迟实际打开吗?

罗丹

活跃成员
已加入
2015年4月7日
留言内容
41
编程经验
10+
我在一台PC上遇到了一个奇怪的问题。我的应用程序使用下面的代码打开端口。由于某种原因,程序没有报告任何问题,但是我的写报告报告该端口多次未打开,然后在应用程序锁定之前我看到一个端口打开消息。在我的生产机器上很好。两者都是Windows10。或者也许我缺少一些基本的知识,并且在打开端口失败后代码仍然继续运行?

这是Open()代码
C#:
                try
                {
                    ArduinoPort.Open();
                    AddTextToTerminal("## " + comPort + "@" + baudRate + " opened."); // Display in status textbox
                }
                catch (Exception ex)
                {
                    if (ex is UnauthorizedAccessException)
                    {
                        MessageBox.Show("Can't open " + comPort + " is it in use?",
                            ex.GetType().FullName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else if (ex is IOException)
                    {
                        MessageBox.Show("Can't open " + comPort + "\nPort name or settings invalid.", ex.GetType().FullName,
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        MessageBox.Show("Can't open " + comPort, ex.GetType().FullName,
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    return;
                }

和发送代码

C#:
           if (ArduinoPort.IsOpen)
            {
                try
                {
                    if (value.Length > 0) command += " " + value;
                    command = "%" + command; // All commands from configurator have this first for extra feedback ASCOM can't handle.
                    ArduinoPort.WriteLine(command);
                }
                catch (Exception ex)
                {
                    if (ex is InvalidOperationException)
                    {
                        MessageBox.Show(ArduinoPort.PortName + " not open. is it in use?",
                            ex.GetType().FullName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else if (ex is ArgumentNullException)
                    {
                        MessageBox.Show("Attempt to send null value", ex.GetType().FullName,
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        MessageBox.Show(ArduinoPort.PortName + " error.", ex.GetType().FullName,
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                }
            }
            else
            {
                AddTextToTerminal("Serial port not open. (" + command + ")");
                Disconnect();
                MessageBox.Show(ArduinoPort.PortName + " unexpectedly closed?",
                            "Serial Port Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 

罗丹

活跃成员
已加入
2015年4月7日
留言内容
41
编程经验
10+
实际上,我只是有一个想法,我实际上不知道另一台计算机的运行速度,也许我只是在每次更新请求时以500毫秒的速度打包缓冲区,但它无法处理。尝试慢一点。
 
最佳 底部