【问题标题】:C: cross-platform RS-232 serial library? [closed]C:跨平台RS-232串口库? [关闭]
【发布时间】:2010-06-04 10:50:02
【问题描述】:

我正在寻找一个开源跨平台库,用于在 C 中处理串行端口,类似于很棒的 PySerial 库(不幸的是,我必须为这个应用程序使用 C)。

我只找到了这个:http://www.teuniz.net/RS-232/,而且似乎没有提到 OS X 兼容性。

【问题讨论】:

    标签: c cross-platform serial-port interfacing


    【解决方案1】:

    你会认为串口的跨平台 C 库已经存在了 20 年,但到 2013 年仍然没有,所以我创建了libserialport

    它已在 Windows、Mac OS X、Linux(包括 Android)、BSD 上进行了测试,并且可能还会在其他 Unix 系统上构建。它支持:

    • 端口枚举(获取系统上的串口列表)
    • 打开、关闭和查询端口
    • 设置端口参数(波特率、奇偶校验等)
    • 端口信号操作(调制解调器控制线、中断等)
    • 读取、写入和刷新数据
    • 等待事件
    • 获取错误信息

    Sigrok 项目正在积极使用初始 0.1.0 版本来支持串行硬件,并且已经打包在多个 Linux 发行版中。 git 版本还包括新的 API 调用,用于获取有关 USB 串行适配器(VID/PID 等)的信息。

    【讨论】:

    • 很好,除了 gnu 许可证
    • 许可证是 LGPL。我们专门做出了这个决定,因此它也可以用于闭源项目。
    • LGPLv2 会很棒。 LGPLv3 对嵌入式设备的限制太大。
    【解决方案2】:

    这是一个无耻的插件,但我有一个用于 RS-232 通信的 MIT 许可库,可在此处移植到 Windows、Linux 和 OS X:

    http://wjwwood.io/serial/

    【讨论】:

    • 这似乎是一个 C++ 库,而不是 C 库。我可以在其中看到异常。
    • 是c++,没错。也许,就像@mark-rushakoff 对 Boost ASIO 的回答一样,也许它仍然有用。
    【解决方案3】:

    我知道您说的是 C 而不是 C++,但也许您可以使用 Boost Asio's serial ports 并将其编译到一个库中以与您的 C 应用程序链接。它声称与 POSIX 兼容,而 OS X 是 POSIX。

    【讨论】:

      【解决方案4】:

      我在 MIT 许可下发布了我的:https://github.com/Marzac/rs232

      它是用 C 语言编写的,适用于 Windows、Mac 和 Linux。

      【讨论】:

      • 真的很干净。
      • 是的,漂亮整洁。不过,在 rx 流上偶尔会出现字节重复和遗漏的主要戏剧。在comOpen 中设置c_lflag = 0 神奇地修复了它。
      • 这里有一个带有附加功能的分支:github.com/mrh1997/rs232/tree/add-features
      【解决方案5】:

      OS X 支持标准 POSIX 串行 API,来自 <termios.h><unistd.h>。查找tcsetattr()cfsetspeed()等函数。

      【讨论】:

        【解决方案6】:

        获取一些额外的 OS X 特定的 Objective-C 代码,如 AMSerialPort、goSerial、serialconnect、PolKit 等,并实现 C 源文件的条件编译。

        http://osx.hyperjeff.net/Apps/apps?f=serial

        【讨论】:

        • 感谢您的建议,但我想只保留 C。
        猜你喜欢
        • 1970-01-01
        • 2011-06-05
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多