处理在升级软件中选择错误的串口

时间:2017-08-31 18:03:22

标签: c# validation serialization input serial-port

我有固件升级程序,可通过串行连接更新设备上的软件。这将发送给将执行升级的客户。在测试中,我发现可以选择COM1,即使没有连接串行电缆也可以打开。 有代码可以检查连接是否打开以及捕获异常,但是由于COM1打开,程序只是继续,但没有连接到设备。

如何处理选择错误COM端口的客户端?

会提供说明,但我会觉得应用程序处理此问题更安全。

这是我的串口开放代码:

// Create a new SerialPort object.
        SerialPort _serialPort;
        _serialPort = new SerialPort(comPort, 115200, Parity.Even, 8, StopBits.One);

        // for state machine
        bool _continue = true;

        do
        {
            try
            {
                _serialPort.Open();

                if (_serialPort.IsOpen)
                {
                    Console.WriteLine("");
                    Console.WriteLine("Serial Port is Open");
                    Console.WriteLine("");
                }
                else
                {
                    MessageBox.Show("Serial Port is not open. Choose another port.");
                }
            }
            catch (UnauthorizedAccessException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (InvalidOperationException ex)
            {
                MessageBox.Show(ex.Message);
            }

        } while (!_serialPort.IsOpen);

1 个答案:

答案 0 :(得分:0)

在2000年代中期,我与一家编程GPS设备的公司合作。我们通过USB编程到串行通信,因为我们必须一次编程大量设备。设备本身有一种发送请求/响应类型消息的方法,因此我们可以看到哪些端口连接到设备。我会看一下你正在编程的设备,看看它是否有这个概念。如果是这样,您可以迭代机器上的任何串行端口,通知用户有哪些设备。

如果用户可以使用USB转串口设备,它会变得有点棘手,因为USB设备每次启动都不会以相同的顺序发现。我们的解决方案是检查连接到USB端口的设备,寻求USB转串口设备。这有点粗糙,因为您检查设备信息以确定它是USB到串行然后迭代串行端口。我们使用多个连接到USB的8个,后来的16个端口设备。

希望这有帮助。