在Python中异步监视两(2)个串行端口

时间:2016-01-21 23:57:46

标签: serial-port python-multithreading python-multiprocessing

我有两个串口将数据输入Python。 一个是送GPS串(每秒约4行) 和来自气体监测器的其他进料数据串(每秒约1行)

我想同时监控gps和气体输入,并实时组合数据。我只需要从串口接收数据。

我的问题是我似乎无法弄清楚如何让两个python函数同时运行。

我在Python 2.7中安装了线程模块和多处理模块。

有关组合序列信息的好方法的任何想法?这是我的第三个Python程序,所以请温柔地对我说: - )

这里是代码:

import threading
import multiprocessing

def readGas():
    global GAScount
    global GASline
    while GAScount<15:
        GASline = gas.readline()
        GasString = GASline.startswith('$')
        if GasString is True:
            print GASline
        GAScount = GAScount+1

def readGPS():
    global GPScount
    global GPSline
    while GPScount<50:
        GPSline = gps.readline()
        GPSstring = GPSline.startswith('$')
        if GPSstring is True:
            print GPSline
        GPScount = GPScount+1

openGPS()
openGas()

1 个答案:

答案 0 :(得分:0)

我认为线程在你的情况下是一个不错的选择,因为你不期望非常高的频率。它将比多处理简单得多,因为内存仍然在线程之间共享,您不必担心。 唯一剩下的问题是你的收购不会完全同时,而是一个接一个。如果您确实需要同步数据,则需要进行多处理。

用于线程化:

ionic.Platform.ready(function() {
  if (window.StatusBar) {
    // org.apache.cordova.statusbar required
    StatusBar.styleDefault();
  }
});

现在你有2个采集线程正在运行。由于python的全局解释锁定,这不是同时正确,但将在2个线程之间交替。

有关线程的更多信息:https://pymotw.com/2/threading/ 有关GIL的更多信息:https://wiki.python.org/moin/GlobalInterpreterLock