Seite 1 von 3

CFW Programmierungsproblem

Verfasst: 08 Apr 2017, 14:33
von Techniker
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

Re: CFW Programmierungsproblem

Verfasst: 08 Apr 2017, 16:39
von Techniker
Leider bekomme ich auf der Seite immer einen 404 Fehler, auch dutzendfaches Neuladen hat nicht geholfen.

Re: CFW Programmierungsproblem

Verfasst: 08 Apr 2017, 16:48
von ski7777
Den Applog gibt es meines Wissens nach erst ab der 0.9.3. Guck dir mal Das Kapitel App Debugging an.

Raphael

Re: CFW Programmierungsproblem

Verfasst: 08 Apr 2017, 18:02
von Techniker
Leider kann ich das nicht finden.
Wo befindet das sich? Im github-Wiki?
Wenn ja, wo genau?

Re: CFW Programmierungsproblem

Verfasst: 08 Apr 2017, 18:05
von ski7777

Re: CFW Programmierungsproblem

Verfasst: 08 Apr 2017, 18:26
von Techniker
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?

Re: CFW Programmierungsproblem

Verfasst: 08 Apr 2017, 18:33
von ski7777
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

Re: CFW Programmierungsproblem

Verfasst: 09 Apr 2017, 12:58
von Techniker
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?!

Re: CFW Programmierungsproblem

Verfasst: 09 Apr 2017, 14:05
von ski7777
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

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 12:46
von Techniker
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?

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 12:47
von ski7777
Um Himmels willen. :P

Nimm Atom: https://atom.io/

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:11
von Techniker
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?

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:13
von ski7777
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

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:34
von Techniker
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?

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:35
von ski7777
Geanu. Das wort Txt Kannst du immer durch Touch ersetzen

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:42
von Techniker
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

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:44
von ski7777
Kannst du mir mal deinen Code zeigen? Das klingt danach, dass du ein TouchWindow ohne TouchApplication machst

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:45
von Techniker
#! /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)

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 13:57
von ski7777
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.

Re: CFW Programmierungsproblem

Verfasst: 17 Apr 2017, 14:02
von Techniker
Leider bekomme ich immernoch den selben Fehler. :(