我有以下代码,它将在PyQt中单击“开始”按钮后启动:
def Start(self):
import time
import os
import RPi.GPIO as GPIO
import datetime
GPIO.setmode(GPIO.BCM)
DEBUG = 1
os.system('clear')
# SPI port on GPIO
SPICLK = 18
SPIMISO = 23
SPICS = 25
# set up the SPI interface pins
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)
GPIO.output(SPICS, True)
GPIO.output(SPICS, False) # bring CS low
while True:
adcout = 0
read_adc = 0
#s=time.clock()
for i in range(25):
GPIO.output(SPICLK, True)
GPIO.output(SPICLK, False)
adcout <<= 1
if (GPIO.input(SPIMISO)==1):
adcout |= 0x1
time.sleep(0.085)
if (GPIO.input(SPIMISO)==0):
read_adc = adcout
millivolts = read_adc * ( 2500.0 /(pow(2,22)))
read_adc = "%d" % read_adc
millivolts = "%d" % millivolts
if DEBUG:
print millivolts, "mV (ADC)"
上述程序是用于ADC读取的,它会在点击名为“开始”的按钮后启动,如下所示:
self.pushButton.clicked.connect( self.Start)
我还有另一个名为pushButton_2
的按钮,称为“停止”,通过单击此按钮,上述进程应该停止。请建议,这样我就可以做到。
processEvents
的这种莫名其妙的“挑剔”,好像QThread
和QTimer
等工具没有它们的局限性(特别是在涉及Python的情况下)。在这个特定的工具箱中有许多工具,没有一个工具能在所有可能的情况下都起作用。所以对我来说,说其中一个应该成为“最后的手段”似乎很愚蠢:相反,应该学会如何使用工具箱中的所有工具,然后选择最适合手头工作的工具。 - ekhumoro