我有两个功能,一个运行一个数字递增一个,另一个运行每5秒捕获一次运行第一个函数的数字,因此当我捕获第一个数字为0时,第二个为10 ,下一个是15,依此类推...这是模拟第一个传感器功能。我的代码如下:
import time
import threading
from threading import Thread
def numero(i=0):
while True:
i = i + 1
time.sleep(1)
#print i
def capturar():
while True:
posicion = numero()
time.sleep(5)
print posicion
if __name__ == '__main__':
Thread(target = capturar()).start()
Thread(target = numero()).start()
运行此代码时,它保留在第一个函数中,如何才能正确运行此代码并每5秒获取一系列数字的捕获?
答案 0 :(得分:1)
您的代码中有几个错误:
undefined
不在it(‘check component is a button’,() => {
const wrapper = shallow(FormSearch);
let mockCategories = { // mock category data }
wrapper.$parent = {
categories: mockCategories
}
expect(wrapper.contains(‘button’)).toBe(true);
});
的范围内i
和capturar
而不是将函数本身交给capturar
numero
呼叫Thread
,该电话再也不会返回,因此numero
甚至无法进行一个完整的循环。要帮助第一个,最简单的解决方案是将函数包装到一个类中,并将capturar
设置为实例状态(作为属性)。第二个仅要求您删除多余的括号。第三个问题由第一个解决,因为不再需要函数调用来获取计数器状态。
这应该做您想要的:
capturar
答案 1 :(得分:0)
谢谢阿玛丹(Amadan),您所分享的声音效果很好,但是当我尝试将其拉入真实传感器(GPS)时,我得到的只是“ 0”
import gps
import itertools
import json
import os
import portdetect
import time
import serial
from threading import Thread
(puerto1, puerto2) = portdetect.detectar_puerto()
print puerto1, puerto2
port = serial.Serial(puerto1, 115200, timeout=1)
os.system('sudo systemctl stop gpsd.socket')
time.sleep(2)
os.system('sudo systemctl disable gpsd.socket')
time.sleep(2)
comando = 'sudo gpsd ' + puerto2 + ' -F /var/run/gpsd.sock'
os.system(str(comando))
#print str(comando)
# Listen on port 2947 (gpsd) of localhost
session = gps.gps("localhost", "2947")
session.stream(gps.WATCH_ENABLE | gps.WATCH_NEWSTYLE)
class Contador:
def __init__(self, comienzo = 0):
self.raw_datos = comienzo
def leergps(self):
while True:
try:
report = session.next()
# Wait for a 'TPV' report and display the current time
# To see all report data, uncomment the line below
# print report
if report['class'] == 'TPV':
if hasattr(report, 'time') or hasattr(report, 'lat') or hasattr(report, 'lon') or hasattr(report,
'speed'):
datos = [report.time, report.lat, report.lon, report.speed]
clave = ['tiempo', 'lat', 'lon', 'speed']
diccionario = dict(itertools.izip(clave, datos))
self.raw_datos = (json.dumps(diccionario))
# print raw_datos
return self.raw_datos
else:
return report['class']
except:
print "Error de coordenadas"
def capturar(self):
while True:
posicion = self.raw_datos
time.sleep(5)
print posicion
if __name__ == '__main__':
c = Contador()
Thread(target = c.capturar).start()
Thread(target = c.leergps()).start()
我仅尝试提取“每5秒获得的原始数据,但我没有实现”