2017-05-10 1 views
0

나는이 qt 크리에이터 GUI의 qlcdnumber 위젯에 라즈베리 파이 입력 핀 전압을 부분적으로 표시하는 코드를이 사이트의 많은 연구 질문과 함께 정리했다. 코드가 완벽하게 실행되고 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 

나는 내가 실제로 장소에 내 지정된 값을 넣을 필요가 실현하지 않았다 이것 때문에 새로운 오전 위의 코드에서 "값"이라는 단어를 약간 당황 스럽지만 학습의 일부로 추측됩니다. 나는 그것을 실현하지 않았다

o2_concentration = QtCore.pyqtSignal(int) 

하지만 난 "값을"고정 된 후, LCD는 작동했지만 공을 읽고 있었다 그리고 나는 그것이 작동하지 않는 가정 : 다른 문제는 여기에 있었다. 광전지를 사용하여 전압을 얻었을 때 터미널에 인쇄 할 때 .25, LCD에는 0을 얻고있었습니다. 다시 새로운 것이 었습니다. 나는 내가 원했던 것에 대해 정확하지 않다고 생각하지 않았습니다. 그것을 (부동)로 변경하면 문제가 해결됩니다. 모든 것이 훌륭하게 작동합니다.

내 글은 원래 글 이후로 커졌지 만 누구나보고 싶다면 게시 해 드리겠습니다.

멋진 사이트입니다. 모든 것에 감사드립니다.