Buggfix Plus
Aktuellt datum och tid: 00.26 2018-07-20

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 1 inlägg ] 
Författare Meddelande
InläggPostat: 15.15 2018-04-21 

Blev medlem: 21.14 2018-03-22
Inlägg: 11
Så har jag stött på patrull igen med... (hade tidigare ett liknande problem här i forumet som jag kringgick, men vill gärna förstå vad som inte funkar)

Kör nedanstående kod på min dator och får seriell data från en Arduino. Det fungerar, dvs en graf ritar upp temperaturen "live" efter en knapptryckning på Arduinon.

När jag försöker köra samma kod på en Rasberry Pi så öppnar Tkinter ett fönster för grafen, men inga axlar ritas upp. Seriedatan från Arduinon levereras till Rasberryn som det ska och knapptryckningen registreras. Fönstret får titeln "Figure1" och inte "Temperature" som jag vill.

Utdraget nedan är där datan ska uppdateras och fönstret ska skapas. Längst ned finns koden i sin helhet.

Någon som har någon idé?

Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
 if reading[0] == "Flag":
                        print ('Flag:'), reading[1]
                        if int(reading[1]) == 1:
                            try:
                                print "In flag"
                                print "In flag -> if "
                                l1.set_xdata(np.arange(len(pData)))
                                l1.set_ydata(pData)  # update the data
                                pyplot.ylim([0, 50])
                                pyplot.draw()  # update the plot
                            except:
                                print "In flag except"
                                pyplot.figure
                                pyplot.title('Temperature')                                                         
                                ax1 = pyplot.axes()
                                l1, = pyplot.plot(pData)
                                pyplot.ylim([0, 50])



Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
!/usr/bin/python

# This code is supporting material for the book
# Python Programming for Arduino
# by Pratik Desai
# published by PACKT Publishing


import serial
import sys
import numpy as np
import Tkinter
from matplotlib import pyplot, rcParams

port = serial.Serial('COM5', 9600, timeout=1)

# Tkinter canvas
top = Tkinter.Tk()
top.title("Tkinter + matplotlib")

# Create flag to work with indefinite while loop
flag = Tkinter.BooleanVar(top)
flag.set(True)


def cleanText(data):
    data = data.replace("\r\n", "")
    print ('Data in cleanText function:', data)
    return data


def onStartButtonPress():
    while True:
        if flag.get():
            line = port.readline()
            reading = line.split(':')
            if len(reading) == 2:
                for i in range(1):
                    if reading[0] == "Temperature(C)":
                        TempLabel.config(text=cleanText(reading[1]))
                        TempUnitLabel.config(text="C")
                        TempUnitLabel.update_idletasks()
                        pData.append(float(reading[1]))
                        del pData[0]
                    if reading[0] == "Temperature(F)":                       
                        TempLabel.config(text=cleanText(reading[1]))
                        TempUnitLabel.config(text="F")
                        TempUnitLabel.update_idletasks()
                    if reading[0] == "Light(relative)":                       
                        LighLabel.config(text=cleanText(reading[1]))
                    if reading[0] == "Humidity(%)":                       
                        HumdLabel.config(text=cleanText(reading[1]))                       
                    if reading[0] == "Flag":
                        print ('Flag:'), reading[1]
                        if int(reading[1]) == 1:
                            try:
                                print "In flag"
                                print "In flag -> if "
                                l1.set_xdata(np.arange(len(pData)))
                                l1.set_ydata(pData)  # update the data
                                pyplot.ylim([0, 50])
                                pyplot.draw()  # update the plot
                            except:
                                print "In flag except"
                                pyplot.figure
                                pyplot.title('Temperature')                                                         
                                ax1 = pyplot.axes()
                                l1, = pyplot.plot(pData)
                                pyplot.ylim([0, 50])
                        if int(reading[1]) == 0:
                            try:
                                pyplot.close('all')
                                l1 = None
                            except:
                                continue
            port.flushInput()
            top.update()
        else:
            flag.set(True)
            break


def onExitButtonPress():
    print "Exiting...."
    flag.set(False)
    port.close()
    top.quit()
    top.destroy()
    print "Done."
    sys.exit()

pyplot.ion()
rcParams['toolbar'] = 'None'
pData = [0] * 300

Tkinter.Label(top, text="Temperature").grid(column=1, row=1)
Tkinter.Label(top, text="Humidity").grid(column=1, row=2)
Tkinter.Label(top, text="Light").grid(column=1, row=3)

TempLabel = Tkinter.Label(top, text=" ")
TempLabel.grid(column=2, row=1)
HumdLabel = Tkinter.Label(top, text=" ")
HumdLabel.grid(column=2, row=2)
LighLabel = Tkinter.Label(top, text=" ")
LighLabel.grid(column=2, row=3)

TempUnitLabel = Tkinter.Label(top, text=" ")
TempUnitLabel.grid(column=3, row=1)
HumdUnitLabel = Tkinter.Label(top, text="%")
HumdUnitLabel.grid(column=3, row=2)
LighUnitLabel = Tkinter.Label(top, text="relative")
LighUnitLabel.grid(column=3, row=3)

# Create Start button and associate with onStartButtonPress method
StartButton = Tkinter.Button(top,
                             text="Start",
                             command=onStartButtonPress)
StartButton.grid(column=1, row=4)

# Create Exit button and destroy the window
ExitButton = Tkinter.Button(top,
                            text="Exit",
                            command=onExitButtonPress)
ExitButton.grid(column=2, row=4)

top.mainloop()


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 1 inlägg ] 

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Google [Bot] och 3 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010