V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
tinydebian
V2EX  ›  Linux

请小伙伴有偿在 Linux 下用 C++开发串口通讯的例子程序

  •  
  •   tinydebian · 2020-07-02 12:18:14 +08:00 · 3070 次点击
    这是一个创建于 1634 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,

    一台 Linux 电脑有 2 个串口,现在我们有 Python 程序,可以实现这 2 个串口之间的通讯。

    为了加快处理,希望这个程序用 C++来实现。请问有小伙伴愿意有偿实现吗?

    有意的小伙伴,请邮件: [email protected]
    第 1 条附言  ·  2020-07-03 21:37:58 +08:00
    需要实现个简单的协议,包括 CRC 校验等。

    另外,在实现串口通讯后,可能开 100ms 实时线程,在实时线程里面读串口。
    26 条回复    2021-02-28 20:31:21 +08:00
    lloovve
        1
    lloovve  
       2020-07-02 12:19:47 +08:00 via iPhone
    应该很简单吧
    tinydebian
        2
    tinydebian  
    OP
       2020-07-02 12:25:26 +08:00
    @lloovve 是不复杂啦,你有时间有偿帮助吗?
    azenk
        3
    azenk  
       2020-07-02 12:29:50 +08:00 via Android
    这种程序在 github 上多的是吧,看看我的 https://github.com/AzenkChina/VirtualMeter/blob/master/Devices/buses/Src/vuart1.c 不合适你就自己搜别人的也行啊。
    tinydebian
        4
    tinydebian  
    OP
       2020-07-02 12:34:55 +08:00
    @azenk 谢谢,你愿意邮件联系吗?
    azenk
        5
    azenk  
       2020-07-02 12:51:01 +08:00 via Android
    @tinydebian 邮件联系你了,我有一些用过的程序,因为不是很完整所以没开源,合适的话我可以直接发给你,需要开发的话我未必有时间,最近比较忙。
    koebehshian
        6
    koebehshian  
       2020-07-02 12:53:43 +08:00
    用 go 语言可以吗
    xyjincan
        7
    xyjincan  
       2020-07-02 13:05:55 +08:00
    python 都跑不过串口速度了?
    AngryPanda
        8
    AngryPanda  
       2020-07-02 13:26:35 +08:00 via Android
    go 写过。
    ungrown
        9
    ungrown  
       2020-07-02 14:08:25 +08:00   ❤️ 1
    如果只是数据交换,那么瓶颈应该是串口而不是 python 。
    当然也可能数据处理部分也是 python 写的,而这部分需要提高性能。
    为什么不试试 cython 呢?
    tinydebian
        10
    tinydebian  
    OP
       2020-07-02 14:24:35 +08:00
    @ungrown 你说得很对,是因为其他的数据处理的部分希望用到 C++。cython 不好,希望用 C++。
    opiviqo
        11
    opiviqo  
       2020-07-02 14:26:21 +08:00 via Android
    直接用 minicom
    ungrown
        12
    ungrown  
       2020-07-02 14:27:07 +08:00
    @tinydebian #10
    cython 性能不差的,把类型改成静态的,可以逼近 C,可以只差几倍性能
    shaopu
        13
    shaopu  
       2020-07-02 14:27:25 +08:00
    go 不是飞一样的速度~
    tinydebian
        14
    tinydebian  
    OP
       2020-07-02 15:00:34 +08:00
    @ungrown 还有别的原因,选择 C++。
    niubee1
        15
    niubee1  
       2020-07-02 15:01:01 +08:00
    我有例子
    tinydebian
        16
    tinydebian  
    OP
       2020-07-02 15:06:17 +08:00
    @shaopu 还有其他的原因,选择 C++。例如:在老版本的不同 Linux 环境下(例如:2015 年的),go 的编译器 稳定可靠吗?
    tinydebian
        17
    tinydebian  
    OP
       2020-07-02 15:07:36 +08:00
    @niubee1 你能邮件你的联系方式吗? [email protected]
    Chenamy2017
        18
    Chenamy2017  
       2020-07-02 17:27:21 +08:00
    C++直接使用 Linux 的系统调用接口,操作串口设备文件就可以了。Linux 编程书上都有例子的。
    Chenamy2017
        19
    Chenamy2017  
       2020-07-02 17:28:18 +08:00
    说说预算多少,看看有没有时间和兴趣
    circleee
        21
    circleee  
       2020-07-02 17:46:16 +08:00
    @Chenamy2017 哪个书可以说一下吗?
    tinydebian
        22
    tinydebian  
    OP
       2020-07-02 17:54:47 +08:00
    @Chenamy2017 在这个支持串口之后,还希望支持别的东西。如果你有兴趣,请把你的联系方式邮件给我?
    koebehshian
        23
    koebehshian  
       2020-07-03 09:20:32 +08:00
    @tinydebian go 的编译器直接编译成机器码,设下环境变量 GOOS 和 GOARCH 就行了,如有问题,再设一下 GOARM
    galenzhao
        24
    galenzhao  
       2020-07-06 16:02:33 +08:00
    sniffer ? hook
    tinydebian
        25
    tinydebian  
    OP
       2020-07-07 14:56:26 +08:00
    @galenzhao 你想多了。似乎你是高手。
    commoccoom
        26
    commoccoom  
       2021-02-28 20:31:21 +08:00
    遇到了差不多同样的需求了,不过我们是 RS485 通信,也是用的 Python,但是传感器多了之后,速度有点慢了。不过我想找 C 语言,不会 C++😂。刚找了 https://sigrok.org/wiki/Libserialport 打算研究下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1679 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:23 · PVG 00:23 · LAX 08:23 · JFK 11:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.