2017-05-10 16 views
0

私はqtクリエイターGUIのqlcdnumberウィジェットにラズベリーpi入力ピンの電圧を部分的に表示するコードをいくつか作成しました(このサイトからたくさんのリサーチ質問をありがとう)。コードは完全に実行され、guiがポップアップし、ピン電圧が端末に出力され(一時的に)、ボタンはgui内で機能し、他のピンはハイとローになります。私はエラーはありませんが、問題はGUIのLCDに信号が表示されないことです。私は成功することができるすべてを研究して、私は今それを推測しているように感じる。私はどんな入力と指示も感謝します。私はたくさんのことを学んだことがありますが、まだ遠くにあるので、どんな助けも素晴らしいでしょう。私はここでlcdnumber信号とスロット

3.2.1は、全体のコードで、再び任意の命令をありがとうRaspbianとQt4を/ Qtの創造主を使用しています:別の記事で

import sys 
import RPi.GPIO as GPIO 
import time 
import re 
from PyQt4 import QtGui, uic, QtCore 
import spidev 

GPIO.setmode(GPIO.BCM) 
GPIO.setwarnings(False) 

o2zero = 26 
o2span = 19 
cozero = 13 
cospan = 6 
co2zero = 5 
co2span = 21 

status = "nil" 

o2_channel = 0 
o2_temp_channel = 1 
spi = spidev.SpiDev() 
spi.open(0,0) 

class MyWindow(QtGui.QMainWindow): 
def __init__(self): 
    super(MyWindow, self).__init__() 
    uic.loadUi('mainwindow.ui', self) 

    self.o2_zero_up.clicked.connect(self.o2zeroup) 
    self.o2_zero_down.clicked.connect(self.o2zerodown) 
    self.o2_span_up.clicked.connect(self.o2spanup) 
    self.o2_span_down.clicked.connect(self.o2spandown) 
    self.co_zero_up.clicked.connect(self.cozeroup) 
    self.co_zero_down.clicked.connect(self.cozerodown) 
    self.co_span_up.clicked.connect(self.cospanup) 
    self.co_span_down.clicked.connect(self.cospandown) 
    self.co2_zero_up.clicked.connect(self.co2zeroup) 
    self.co2_zero_down.clicked.connect(self.co2zerodown) 
    self.co2_span_up.clicked.connect(self.co2spanup) 
    self.co2_span_down.clicked.connect(self.co2spandown) 
    self.close_button.clicked.connect(self.gpiocleanup) 

    self.thread = O2_Channel() 
    self.thread.o2_concentration.connect(self.onChangeValue) 
    self.thread.start() 

    self.show() 

def onChangeValue(self, values): 
    o2_volts = values 


def o2zeroup(self): 
    GPIO.setup(o2zero, GPIO.OUT) 
    GPIO.output(o2zero, 1) 
def o2zerodown(self): 
    GPIO.setup(o2zero, GPIO.OUT) 
    GPIO.output(o2zero, 0) 

def o2spanup(self): 
    GPIO.setup(o2span, GPIO.OUT) 
    GPIO.output(o2span, 1) 
def o2spandown(self): 
    GPIO.setup(o2span, GPIO.OUT) 
    GPIO.output(o2span, 0) 

def cozeroup(self): 
    GPIO.setup(cozero, GPIO.OUT) 
    GPIO.output(cozero, 1) 
def cozerodown(self): 
    GPIO.setup(cozero, GPIO.OUT) 
    GPIO.output(cozero, 0) 

def cospanup(self): 
    GPIO.setup(cospan, GPIO.OUT) 
    GPIO.output(cospan, 1) 
def cospandown(self): 
    GPIO.setup(cospan, GPIO.OUT) 
    GPIO.output(cospan, 0) 

def co2zeroup(self): 
    GPIO.setup(co2zero, GPIO.OUT) 
    GPIO.output(co2zero, 1) 
def co2zerodown(self): 
    GPIO.setup(co2zero, GPIO.OUT) 
    GPIO.output(co2zero, 0) 

def co2spanup(self): 
    GPIO.setup(co2span, GPIO.OUT) 
    GPIO.output(co2span, 1) 
def co2spandown(self): 
    GPIO.setup(co2span, GPIO.OUT) 
    GPIO.output(co2span, 0) 

def gpiocleanup(self): 
    GPIO.cleanup() 

def closeEvent(self, event): 
    self.thread.stop() 
    self.thread.quit() 
    self.thread.wait() 
    self.thread.deleteLater() 
    print ("GPIO CleanUP") 
    GPIO.cleanup() 
    event.accept() 

def ReadChannel(channel): 
    adc = spi.xfer2([1,(8+channel)<<4,0]) 
    data = ((adc[1]&3) << 8) + adc[2] 
    return data 

def ConvertVolts(data, places): 
    volts = (data * 3.3)/float(1023) 
    volts = round(volts,places) 
    return volts  

class O2_Channel(QtCore.QThread): 

o2_concentration = QtCore.pyqtSignal(int) 

def __init__(self): 
    QtCore.QThread.__init__(self) 
    self.mRunning = True 

def run(self): 
    while self.mRunning: 

     o2_level = ReadChannel(o2_channel) 
     o2_volts = ConvertVolts(o2_level,2) 

     print("{}".format(o2_volts)) 
     self.o2_concentration.emit(o2_volts) 
     delay = .2       
     time.sleep(delay) 

def stop(self): 
    self.mRunning = False 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    window = MyWindow() 
    sys.exit(app.exec_()) 

答えて

0

、eyllanesc信号で私を設定し、 slot私はgui lcdに信号を表示する必要があったが、彼が何をしたのかを知るには十分理解できなかった。私はここ数日を読んでこれについて読んで、最後に彼が何をしたかを見てきました。私はそれが欲しいのと同じようにすべてが機能し、動作します。ここで私が持っていた同じ混乱があるかもしれない人のため

、私の主な問題だった:

def onChangeValue(self, values): 
o2_volts = values 

私は私が実際の場所で私の指定された値を入れるために必要な実現しなかったこと、この時とても新しいです上記のコードの "values"という単語の私は少し恥ずかしいが、学習の一部と思う。私はそれを認識していなかった

o2_concentration = QtCore.pyqtSignal(int) 

が、私は、「値」に固定した後、LCDは働いていたが、0を読んでいたと私はそれが働いていなかったと仮定:その他の問題がここにありました。光電池を使って電圧を得るには、端末に印刷するときは.25、液晶には0を得ていました。もう一度新しくなって、私は私が望んだものが正しいとは思っていませんでした。それを変更して(浮動)問題を解決しました。すべて素晴らしいです。

私のスクリプトは元の投稿以来成長していますが、誰かがそれを見たいと思うなら私はそれを投稿して嬉しいです。

これはすばらしいサイトです。すべてありがとう。

関連する問題