【问题标题】:ArgumentException: The given port name does not start with COM/com or does not resolve to a valid serial portArgumentException:给定的端口名称不以 COM/com 开头或不解析为有效的串行端口
【发布时间】:2019-04-03 08:43:46
【问题描述】:

我正在尝试连接到 u-blox GPS 设备的驱动程序提供的虚拟 COM 端口。

设备正常显示在设备管理器的传感器选项卡下,我可以使用 C# 中的GeoCoordinateWatcher 类真正获取坐标数据。

但我想读取底层 NMEA 数据。 所以在这个过程中,我安装了 U-BLOX 提供的Virtual Com Port 驱动程序,它在设备管理器中生成了一个 u-blox virta com 端口。

使用Putty 连接到那个是可以的,我可以看到所有 NMEA 线路都被转储到那里。

但是当我尝试使用 C# 连接到同一个端口(@98​​7654327@ 显然已关闭之后)时,我得到了标题中提到的异常

给定的端口名称不以 COM/com 开头或不解析为 一个有效的串口

我的代码相当简单(不是我第一次使用 com 端口)并且所有内容都已正确定义(端口名称、停止位、奇偶校验、波特率等)。我什至尝试更改为“错误”的 com 端口名称以查看我将得到的异常,它完全不同(Com 端口不是退出异常)。

那么此时 C# 发生了什么?难道我做错了什么?这是 SerialPort 类中的错误吗? Putty 在连接和流式传输数据方面似乎工作得很好。 我的代码就这么简单

m_port = new SerialPort
{
    PortName = m_portName,
    BaudRate = m_baudRate,
    Parity = m_parityBit,
    DataBits = m_dataBits,
    StopBits = m_stopBit
};

m_port.Open();

我什至尝试对这些值进行硬编码,但仍然遇到同样的异常。 我尝试了许多找到here 的建议解决方案,但没有一个有帮助。 我还尝试从设备管理器高级设置中更改 COM 端口号,这也没有帮助

【问题讨论】:

  • 您是否尝试过重命名 COM 端口并使用新名称而不是旧名称。
  • 是的。忘了提那个。从高级设置
  • 我没有使用过 u-blox.. 但我希望下面的内容对你有用.. forum.u-blox.com/index.php/9380/… 。连接到串行端口似乎存在一些问题,因为它的行为与确切的串行端口不同。
  • @JSR 好吧,他们只是说它不起作用
  • 我们使用称为 NetBurner 的以太网模块。他们有一个非常好的应用程序来设置真正的虚拟 COM 端口。也许试一试,我在连接到使用 C# 应用程序制作的 VCOM 时没有问题。 netburner.com/support/documents/sb70/deployment-tools-9/…

标签: c# serial-port argumentexception virtual-serial-port


【解决方案1】:

事实证明,U-BLOX 虚拟 COM 端口驱动程序不能完全模拟 COM 端口,这会导致 .Net 出现问题。无论是 C#C++ 还是在 .Net 上运行的任何其他语言 唯一的解决方案是要么不使用此设备,要么使用中间软件。

【讨论】:

    【解决方案2】:

    如果您没有任何特殊原因使用 VCP 驱动程序,请改用 CDC 驱动程序。在他们的网站上以“u-blox GNSS Standard Driver for Windows”的形式提供:

    https://www.u-blox.com/en/product-resources/2673The/field_file_category/driver-221/field_file_products%253Afield_product_category/position-time-152

    我遇到了和你一样的问题,但是通过更改设备驱动程序,一切都按预期工作。他们的 VCP 驱动似乎与常规的串口驱动结构不完全兼容。

    【讨论】:

    • 您可能需要重新配置 CDC 驱动程序的端口。使用 u-center 工具启用 NMEA 输出到 USB。
    【解决方案3】:

    我设法解决了这个问题,并认为我会分享我的解决方案。

    我无法使用 CDC 驱动程序,因为我的设备是带有专用 GPS 的 Rugged Windows 设备 - CDC 解决方案可能仅适用于通过 USB 的可移动 gps 设备。必须安装传感器驱动,可以在传感器旁边安装VCP驱动,提供COM口。

    虽然 VCP 驱动程序不能完全模拟 COM 端口,但您可以使用另一个软件来完全模拟 uBlox 虚拟 COM 端口并填补空白。 GPS Gate 对我来说就是那个软件 - https://gpsgate.com/。最终结果是 uBlox Sensor -> uBlox VCP -> GPS Gate VCP。然后,我能够在我的 C# 应用程序中成功使用 GPS Gate VCP,并获得 GPS 数据。

    GPS Gate 还提供了一个 Location API 插件,它可以从等式中删除 uBlox VCP(uBlox Sensor -> GPS Gate VCP through Location API),但我没有太多运气,而且我已经有一个工作解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-09
      • 2013-03-29
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多