c# - 查找串行设备 COM 端口

标签 c# windows winforms serial-port rfid

我有一个 Windows C# 应用程序。该应用程序通过串行端口连接到 RFID 读卡器。虽然我默认给它 COM 端口 3。我遇到了用户端口不可用并且他正在使用的端口与他的 Windows 操作系统不同的情况。

我的应用程序确实为用户提供了更改 COM 端口的能力,但是要找到他们的操作系统正在使用哪个 COM 端口,用户需要转到设备管理器并进行检查,新手可能不太适应。

有没有一种功能或方法可以准确地找到我的 RFID 卡在 Windows 中连接到哪个端口,以便我可以简单地显示如下:

应用程序端口设置为:COM .... 操作系统上的设备连接端口:COM ....

另外我的目标框架是3.5

编辑 1:

尝试使用 SerialPort.GetPortNames() 但它返回一个空字符串:System.String[]..

我的 RFID 设备列在设备管理器下 ===> 端口(COM 和 LPT)作为 Silicon Labs CP210x USB 到 UART 桥接器(COM3)

最佳答案

您好@user3828453 以下内容如何,​​然后您可以,只需使用返回的正确端口号,如果您仍然有一个空端口,则您必须要求用户进入设备管理器并通过您的界面更新端口.

private static string GetRFIDComPort()
{
  string portName = "";

  for ( int i = 1; i <= 20; i++ )
  {
    try
    {
      using ( SerialPort port = new SerialPort( string.Format( "COM{0}", i ) ) )
      {
        // Try to Open the port
        port.Open();

        // Ensure that you're communicating with the correct device (Some logic to test that it's your device)

        // Close the port
        port.Close();
      }

    }
    catch ( Exception ex )
    {
      Console.WriteLine( ex.Message );
    }
  }

  return portName;
}

关于c# - 查找串行设备 COM 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25354513/

相关文章:

c# - 确定 View 是否被渲染为 Partial

c# - 自动布局增加控件数量

c# - TargetInvocationException 未处理 - C#

c# - 从 Windows 窗体运行控制台应用程序

c# - ReportViewer 2010 不刷新异步回发

c# - 异步lambda是否应在异步功能中运行?

c++ - 如何使用 ffmpeg 以便不需要将其 dll 包含在您的应用程序文件夹中?

c++ - 在 MFC CScrollView 的固定位置显示子窗口

windows - 用于在 Windows 上进行符号链接(symbolic link)转换的 Git Hook

c# - 绘制多条徒手折线或曲线图 - 添加撤消功能