CFW Programmierungsproblem

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

CFW Programmierungsproblem

Beitrag von Techniker » 08 Apr 2017, 14:33

Hallo!

Erstmal danke für die tolle Arbeit an der CFW!
Ich verwende diese selbst schon länger, bisher allerdings nur mit Apps wie IOlyser und Brickly ( sehr tolle Sache).

Jetzt habe ich versucht die App Controlling an Output aus dem Wiki kopiert und die Verbindung zum IO-Controller von localhost zu 127.0.0.1 geändert.
Außerdem habe ich die Beschriftung des Knopfs auf Deutsch geändert.

Nun, ich kann die App hochladen und starten, es öffnet sich kein Fenster und es erscheint kein Kopf!
Ich habe die gesamte .zip-Datei auf Github hochgeladen. ( https://www.dropbox.com/s/8qpoe04ckntmv ... t.zip?dl=0)
Ich hoffe ihr könnt mir hier helfen.

Techniker

nq30
Beiträge: 144
Registriert: 25 Feb 2017, 07:44

Re: CFW Programmierungsproblem

Beitrag von nq30 » 08 Apr 2017, 15:44

Oh!
Ein Fehler!
Gehe mal zu http://ipvontxt/applog.py
ipvontxt soltest du durch die IP ersetzen, die du in NetInfo oder in Network findest.
Dann solange auf Neuladen klicken bis Application log startet erscheint.
Dann App starten und Inhalt der Webseite reinkopieren.
Mit freundlichen Grüssen
nq30

ft:cool :)

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 08 Apr 2017, 16:39

Leider bekomme ich auf der Seite immer einen 404 Fehler, auch dutzendfaches Neuladen hat nicht geholfen.

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 08 Apr 2017, 16:48

Den Applog gibt es meines Wissens nach erst ab der 0.9.3. Guck dir mal Das Kapitel App Debugging an.

Raphael

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 08 Apr 2017, 18:02

Leider kann ich das nicht finden.
Wo befindet das sich? Im github-Wiki?
Wenn ja, wo genau?

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 08 Apr 2017, 18:05


Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 08 Apr 2017, 18:26

Ich habs leider nicht geschafft die Anleitung dort auszuführen. :oops:
Von Anfang an:
Putty, einloggen

export PYTHONPATH=/opt/ftc
/opt/ftc/apps/user/877a8522-206c-468f-b81b-3278b09129e3/test.py
das eingegeben
und dann :
': No such file or directory
:(

Was mache ich hier falsch?

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 08 Apr 2017, 18:33

Du hast die Datei mit dem falschen Lineending abgespeichert. In einem Editor auf Windows kannst du das bestimmt umstellen. Jetzt genügt ein

Code: Alles auswählen

dos2unix pathtofile
Raphael

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 09 Apr 2017, 12:58

Wie sehr man sich doch über eine Fehlermeldung freuen kann!

File "/opt/ftc/apps/user/877a8522-206c-468f-b81b-3278b09129e3/test.py", line 2 0
if not self.txt:
^
TabError: inconsistent use of tabs and spaces in indentation

Was mich etwas verwundert: denn Teil habe ich eigentlich nicht verändert?!

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 09 Apr 2017, 14:05

Das passiert leicht mal beim Kopieren. Dann werden die Tabs und Leerzeichen vermischt und PYthon will nunmal entweder nur Tabs oder nur Spaces. Am besten machst du mal vor allen Zeilen die Tabs und Spaces weg und machst neue Tabs in de benötigten Menge rein. Dann sollte es laufen.

Raphael

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 17 Apr 2017, 12:46

Hallo,

nach einigen Tagen Pause über Ostern bin ich nun wieder hier.
Was für einen Editor soll ich da hernehmen? Den ganz normalen von Windows?

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 17 Apr 2017, 12:47

Um Himmels willen. :P

Nimm Atom: https://atom.io/

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 17 Apr 2017, 13:11

Die Antworten kommen ja schneller als die Polizei erlaubt!
Hab mich in Atom ein wenig durch die Einstellungen geklickt.
Ich habe allerdings nichts gefunden, wo Lineending dransteht, weshalb ich denke das ich falsch suche.
Wo kann man das ändern?

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 17 Apr 2017, 13:13

Wenn du eine Datei editierst, steht ganz unten in der Leiste normal CRLF und da klickst du einfach einmal drauf und wählst LF.

Raphael

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 17 Apr 2017, 13:34

So, hab die Fehlermeldungen zum Laufen gebracht.
Die Sache mit den Leerzeichen und Tabs habe ich gelöst.
Dann TxtApplication: Ich habe in einem anderen Thread gelesen, dass das nicht mehr aktuell ist und man es mit TouchApplication ersetzt.
Jetzt bekomme ich den Fehler TxtWindow is not defined. Muss ich das zu TouchWindow machen?

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 17 Apr 2017, 13:35

Geanu. Das wort Txt Kannst du immer durch Touch ersetzen

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 17 Apr 2017, 13:42

Jetzt bekomme ich eine Fehlermeldung, aus der ich absolut nicht erkennen kann was ich machen soll:

QWidget: Must construct a QApplication before a QPaintDevice
Aborted

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 17 Apr 2017, 13:44

Kannst du mir mal deinen Code zeigen? Das klingt danach, dass du ein TouchWindow ohne TouchApplication machst

Techniker
Beiträge: 102
Registriert: 09 Mai 2015, 13:06

Re: CFW Programmierungsproblem

Beitrag von Techniker » 17 Apr 2017, 13:45

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
#
import sys
import ftrobopy # Import the ftrobopy module
from TouchStyle import *

class FtcGuiApplication(TouchApplication):
def __init__(self, args):
TouchApplication.__init__(self, args)

# create the empty main window
w = TouchWindow("Tut_3c")

try:
self.txt = ftrobopy.ftrobopy("127.0.0.1", 65000) # connect to TXT's IO controller
except:
self.txt = None # set TXT to "None" of connection failed

if not self.txt:
# display error of TXT could no be connected
# error messages is centered and may span
# over several lines
err_msg = QLabel("Error connecting IO server") # create the error message label
err_msg.setWordWrap(True) # allow it to wrap over several lines
err_msg.setAlignment(Qt.AlignCenter) # center it horizontally
w.setCentralWidget(err_msg) # attach it to the main output area
else:
# initialization went fine. So the main gui
# is being drawn
button = QPushButton("Toggle 01") # create a button labeled "Toggle O1"
button.clicked.connect(self.on_button_clicked) # connect button to event handler
w.setCentralWidget(button) # attach it to the main output area

# configure all TXT outputs to normal mode
M = [ self.txt.C_OUTPUT, self.txt.C_OUTPUT, self.txt.C_OUTPUT, self.txt.C_OUTPUT ]
I = [ (self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ) ]
self.txt.setConfig(M, I)
self.txt.updateConfig()

# initially switch light on
self.light_on = False # remember that the light is out
self.txt.setPwm(0) # set PWm to 0 (aus)

w.show()
self.exec_()

# an event handler for our button (called a "slot" in qt)
# it will be called whenever the user clicks the button
def on_button_clicked(self):
self.light_on = not self.light_on # change state
if self.light_on: # set output accordingly
self.txt.setPwm(0,512) # PWN=512 means full on
else:
self.txt.setPwm(0,0) # PWM=0 means off

if __name__ == "__main__":
FtcGuiApplication(sys.argv)

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: CFW Programmierungsproblem

Beitrag von ski7777 » 17 Apr 2017, 13:57

Ich habe den Code etwas angepasst (Tabs richtig gesetzt und eine VBox genutzt):

Code: Alles auswählen

import sys
import ftrobopy  # Import the ftrobopy module
from TouchStyle import *


class FtcGuiApplication(TouchApplication):

    def __init__(self, args):
        TouchApplication.__init__(self, args)

        # create the empty main window
        self.w = TouchWindow("Tut_3c")

        try:
            self.txt = ftrobopy.ftrobopy("127.0.0.1", 65000)  # connect to TXT's IO controller
        except:
            self.txt = None  # set TXT to "None" of connection failed

        if not self.txt:
            # display error of TXT could no be connected
            # error messages is centered and may span
            # over several lines
            err_msg = QLabel("Error connecting IO server")  # create the error message label
            err_msg.setWordWrap(True)  # allow it to wrap over several lines
            err_msg.setAlignment(Qt.AlignCenter)  # center it horizontally
            self.w.setCentralWidget(err_msg)  # attach it to the main output area
        else:
            # initialization went fine. So the main gui
            # is being drawn
            layout = QVBoxLayout()
            button = QPushButton("Toggle 01")  # create a button labeled "Toggle O1"
            button.clicked.connect(self.on_button_clicked)  # connect button to event handler
            layout.addStretch()
            layout.addWidget(button)
            layout.addStretch()
            self.w.centralWidget.setLayout(layout)  # attach it to the main output area

            # configure all TXT outputs to normal mode
            M = [self.txt.C_OUTPUT, self.txt.C_OUTPUT, self.txt.C_OUTPUT, self.txt.C_OUTPUT]
            I = [(self.txt.C_SWITCH, self.txt.C_DIGITAL),
                 (self.txt.C_SWITCH, self.txt.C_DIGITAL),
                 (self.txt.C_SWITCH, self.txt.C_DIGITAL),
                 (self.txt.C_SWITCH, self.txt.C_DIGITAL),
                 (self.txt.C_SWITCH, self.txt.C_DIGITAL),
                 (self.txt.C_SWITCH, self.txt.C_DIGITAL),
                 (self.txt.C_SWITCH, self.txt.C_DIGITAL),
                 (self.txt.C_SWITCH, self.txt.C_DIGITAL)]
            self.txt.setConfig(M, I)
            self.txt.updateConfig()

            # initially switch light on
            self.light_on = False  # remember that the light is out
            self.txt.setPwm(0, 0)  # set PWm to 0 (aus)

        self.w.show()
        self.exec_()

        # an event handler for our button (called a "slot" in qt)
        # it will be called whenever the user clicks the button

    def on_button_clicked(self):
        self.light_on = not self.light_on  # change state
        if self.light_on:  # set output accordingly
            self.txt.setPwm(0, 512)  # PWN=512 means full on
        else:
            self.txt.setPwm(0, 0)  # PWM=0 means off

if __name__ == "__main__":
    FtcGuiApplication(sys.argv)
Jetzt sollte alles laufen.

Antworten