我有固件升级程序,可通过串行连接更新设备上的软件。这将发送给将执行升级的客户。在测试中,我发现可以选择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);
答案 0 :(得分:0)
在2000年代中期,我与一家编程GPS设备的公司合作。我们通过USB编程到串行通信,因为我们必须一次编程大量设备。设备本身有一种发送请求/响应类型消息的方法,因此我们可以看到哪些端口连接到设备。我会看一下你正在编程的设备,看看它是否有这个概念。如果是这样,您可以迭代机器上的任何串行端口,通知用户有哪些设备。
如果用户可以使用USB转串口设备,它会变得有点棘手,因为USB设备每次启动都不会以相同的顺序发现。我们的解决方案是检查连接到USB端口的设备,寻求USB转串口设备。这有点粗糙,因为您检查设备信息以确定它是USB到串行然后迭代串行端口。我们使用多个连接到USB的8个,后来的16个端口设备。
希望这有帮助。