【问题标题】:Using usb COM port in mono on a mac在 Mac 上以单声道方式使用 USB COM 端口
【发布时间】:2018-08-16 22:43:19
【问题描述】:

我为我的项目编写了一个 Windows 应用程序,它有助于使用虚拟 COM 端口与微控制器进行串行通信。这非常简单 - 芯片制造商 (atmel) 提供 USB 驱动程序(Windows 10 甚至不需要,只有较低版本)并且访问端口是一些基本代码。

但是我希望它也可以在其他系统上运行,主要是 osx。我刚刚发现了 mono,通过 mono 迁移分析器运行了我的应用程序,令我高兴的是,除了几次调用之外,该应用程序相对较好(我认为只有几个问题我可以解决)。

还有两个大问题:

  1. 如何使用单声道访问 mac com 端口?根据this 的说法,这并不容易。
  2. 即使我能得到正确的串口,我该如何与之通信? Atmel 只提供 Windows 驱动程序,所以恐怕根本行不通。

我已就 avr 论坛上的第二个问题向similar question 提问,一位乐于助人的用户回复了这个:

可能就像将 macOS 的 USB 设备文件系统“以某种方式”链接到 Mono 的运行时一样简单。

我必须可耻地说我不确定这意味着什么以及我是否完全可以实现 - 以我有限的编程知识并且基本上没有使用 osx 的经验。所以恐怕像 Class Compliance 这样的解决方案是我无法企及的。

提前致谢!

【问题讨论】:

  • 到目前为止你尝试过什么? (具体来说,如果您在链接的线程中向下滚动到this,您是否尝试过所暗示的答案?)祝您好运,欢迎来到 Stack Overflow!
  • 好吧,我会的……我设法以某种方式移植了我的应用程序,至少可以在朋友的 macbook Air 上运行(尽管我花了比预期更长的时间,尽管 monoanalyzer 告诉我我的应用程序100% 准备就绪),似乎我能够使用基本的 SerialPort.GetPortNames() 列出所有端口(并且有很多!)其中一个似乎是我的设备 - 尽管为什么它被称为 usbmodem1421 我不知道。尽管如此,在使用名称连接到它之后,它似乎在没有任何驱动程序的情况下工作!现在我需要找出如何识别正确的 COM 端口,最好通过 VID/PID。

标签: c# mono


【解决方案1】:

回答我自己的问题:

  1. 我设法使用 SerialPort.GetPortNames() 访问了这些端口 - 其中有很多(列出了几十个),但是它确实有效,并且连接我的设备的端口有一个不同的名称。仍然有几个问题需要解决,主要是识别端口是否真的处于活动状态(即使在我关闭设备而不拔掉 USB 电缆后它仍然列出),但使用名称连接到串行端口是可行的。
  2. 与我的 xmega mcu 的通信不需要驱动程序,开箱即用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多