【问题标题】:C++ Hardware DevelopmentC++ 硬件开发
【发布时间】:2011-12-21 13:26:30
【问题描述】:

我想知道是否有任何 C++ 类集来与硬件设备交互,我的意思是,I/O 槽端口,如 Serial 或 Parallel 或类似的东西。

我找到了一些信息,但仅限于 C,我希望已经编写了 C++ 类。

【问题讨论】:

  • 为什么如此渴望使用 cpp 而不是 c ?他们是不同的,但他们是相似的,如果你知道一个,你很可能在相当程度上了解另一个。
  • Boost.Asio 支持串口。
  • @ScarletAmaranth:如果有的话,这种暗示只适用于 C++ 到 C —— 反过来更难。
  • @JuanCB:如果 C 代码是用于内核驱动程序的,那么就没有 C++ 代码。
  • 您是在谈论通过 Windows 或 Linux 等操作系统与硬件交互的 C++ 类,还是在谈论深度嵌入式系统中经常发生的“裸机”访问?那里有一个不同的世界 ...(还有一个中间地带 - 例如实时操作系统,但从您问题中列出的设备来看,您似乎在谈论类似于桌面系统)

标签: c++ embedded hardware debian ports


【解决方案1】:

嵌入式硬件通常是专有的,因此任何此类库仍需要某种硬件抽象层(C 和 C++ 都是如此)。 UART 和 GPIO 相对微不足道,但同时又是芯片专用的,而且通常还有特定于应用程序的要求,因此此类库的实用性值得怀疑。

为这些资源定义一些通用抽象接口可能会很有用,这样应用层代码可以在平台之间移植,但是任何可用的通用接口可能会也可能不会满足您的要求。因此,您通常最好实现自己的设计并重用它,而不是受制于其他人的实现。

如果您能找到合适的 C 库,那么最简单的方法就是实现合适的 C++ 包装器。 C 代码与 C++ 完全可互操作。

如果您平台的标准 C 库已被移植以支持 UART 等设备上的 stdio,则标准 C++ iostream 库将起作用,但不提供用于设置帧和波特率的标准低级接口;您可以直接或通过自定义 ioctl() 命令来实现它。如果流 I/O 语义合适,您可以为其他设备和文件系统实现低级驱动程序,以允许通过 iostream 访问。

【讨论】:

    【解决方案2】:

    答案取决于您的目标平台。 http://www.arduino.cc/ 将所有 I/O 封装在 C++ 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2015-10-13
      相关资源
      最近更新 更多