在 Python 中同时异步监控两 (2) 个串行端口



>我有两个串行端口将数据输入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()

我认为线程在您的情况下是一个不错的选择,因为您不希望频率很高。它将比多处理简单得多,因为内存在线程之间保持共享,您无需担心。唯一剩下的问题是,您的收购不会完全在同一时间进行,而是接一个接一个。如果你真的需要同步数据,你需要使用多处理。

对于线程:

import threading
# create your threads:
gps = threading.Thread(target=openGPS)
gas=threading.Thread(target=openGas)
#start your threads:
gps.start()
gas.start()

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

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

相关内容

  • 没有找到相关文章

最新更新