Linux用户空间中的串行通信(非阻塞)

时间:2014-05-07 20:24:58

标签: python linux serial-port multiprocessing beagleboneblack

我正在尝试让一个arduino板与使用UART运行Ubuntu的beaglebone(BB)白色通信。我已经读过BB uart驱动程序已经被中断驱动了。

我想将所有传入的数据存储到一种缓冲区中,我可以在需要时读取,类似于在微控制器中完成的方式。但我试图避免内核编程,所以我将无法使用驱动程序的数据结构。我正在寻找一个完整的用户空间解决方案。

我打算使用两个python进程,一个用于写入所有传入数据(到共享列表),另一个用于根据需要读取它,以便读取无阻塞。

我有两个问题:

  1. 这是正确的做法吗?如果是,请建议一个简单的进程间通信方法就足够了。

  2. 实施此方法的正确方法是什么?

  3. 注意:我正在使用PyBBIO库直接读取/写入/ dev / mem特殊文件。

1 个答案:

答案 0 :(得分:2)

您可能希望使用pyserial,它使用内核接口(我不知道PyBBIO的作用)。它提供自动输入缓冲 - 因此您不需要额外的过程。如果您确实希望有更多进程使用multiprocessing。一个更简单的选择是threading,它可以为您节省通信部分。对于具有网络支持的多处理,请使用Ipython's cluster