python - 如何在不停止整个脚本的情况下停止数据测量

标签 python linux matplotlib mouse

我正在使用这里的一些代码从我的 Linux 笔记本电脑上的 USB 鼠标获取 x, y 增量。这是一个获取增量并使用 matplotlib 绘制它的脚本。但主要问题是,我无法在不杀死整个脚本的情况下停止测量。我在编程方面仍然是初学者,所以任何帮助都会很好。

我的代码:

import struct
import matplotlib.pyplot as plt
import numpy as np
import time
from drawnow import * 

file = open( "/dev/input/mouse2", "rb" );
test = []
plt.ion()

def makeFig():
 plt.plot(test)
 #plt.show()

def getMouseEvent():
  buf = file.read(3);
  button = ord( buf[0] );
  bLeft = button & 0x1;
  x,y = struct.unpack( "bb", buf[1:] )  
  print ("x: %d, y: %d\n" % (x, y) )  
  return x,y


while True:
 test.append(getMouseEvent())
 drawnow(makeFig)

file.close();

最佳答案

您必须决定希望脚本在什么条件下停止。例如,这将在 5 秒后停止:

start_time = time.time()
elapsed = 0
while elapsed < 5:
    elapsed = time.time() - start_time:
    test.append(getMouseEvent())

drawnow(makeFig)

如果您希望它在 100 次测量后停止:

count = 0
while count < 100:
    count += 1
    test.append(getMouseEvent())
    time.sleep(1)  # <--  optional

drawnow(makeFig)

关于python - 如何在不停止整个脚本的情况下停止数据测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27796266/

相关文章:

python - matplotlib imshow 子图 sharey 打破了 x 限制

python - 是否可以创建一个函数,该函数返回创建时生成的静态值,而不是调用该函数时生成的静态值?

c - ARM linux 用户空间 gpio 操作使用 mmap/dev/mem 方法(能够写入 GPIO 寄存器,但无法从中读取)

android - HTC Sensation 在 Linux 中无法识别以进行调试

python - 为什么在 Anaconda 环境下尝试在 PyCharm 中加载 matplotlib 时会出现错误列表?

python - 如何将颜色条添加到直方图?

python - 将函数转为字段的装饰器是什么?

python - Ipython 笔记本 : Open & Edit Files

python - 不能在 Python 3.1 中使用 unichr

mysql - (MYSQL) 我不断收到错误 2013-查询期间丢失连接