Hallo ich habe einige Anfänger Fragen zu ftrobopy:
1. Verbindung aufnehmen:
Wenn ich mit der Python IDE auf dem PC Programme testen möchte und diese später auf den TXT übertragen möchte wie ist die Richtige Verbindung?
-------------------
a) Geht auf dem TXT aber nicht im Online (WLAN) Betrieb:
txt_ip = os.environ.get('TXT_IP') # IP Adresse aus Umgebungsvariablen in txt_ip speichern.
if txt_ip == None: txt_ip = "localhost" # Wenn keine IP verwende localhost
try:
txt = ftrobopy.ftrobopy(txt_ip, 65000) # Versuche Verbindung aufzubauen und txt zuweisen
except:
txt = None
--------------------
b) Geht im Online Betrieb aber nicht auf dem TXT:
txt=ftrobopy.ftrobopy('192.168.5.80', 65000) # WLAN
--------------------
2. Online Betrieb
Wann sollen die Funktionen startOnline() und stopOnline() verwendet werden?
a) Nur wenn das Programm mit der Python IDE gestartet wird.
b) Wenn das Programm Online gestartet wird und wenn das Programm mit der Python IDE gestartet wird.
txt.startOnline() # Onlinebetrieb starten
txt.stopOnline() # Onlinebetrieb stoppen
--------------------
3. Programm beenden
Gibt es eine Funktion die man am Ende aufruft?
--------------------
4. Kamera
Ich habe die Kamera mit txt.startCameraOnline() gestartet.
Wenn ich im Browser iP:65001 aufrufe, erhalte ich kein Bild.
--------------------
5. Version
Gibt es eine Funktion um die Version von ftrobopy abzufragen?
Gruß Grau
ftrobopy Anfänger Fragen
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
-
- Administrator
- Beiträge: 583
- Registriert: 26 Dez 2015, 23:49
- Wohnort: Rhein-Main-Gebiet
Re: ftrobopy Anfänger Fragen
Hallo,
Wie genau Du eine Environment-Variable für ein Python-Programm setzen kannst, hängt von Deinem Betriebssystem (auf dem PC) bzw (wenn Du das Programm direkt aus der IDE startest) von der verwendeten IDE ab.
Wenn Du das ganze Programm beendest, kannst Du Dir das aber auch sparen und einfach Python für dich "aufräumen" lassen.
Das sollte eigentlich sowohl auf dem TXT als auch Online funktionieren. Allerdings musst Du dafür im Online-Betrieb auch die Environment-Variable "TXT_IP" auf den passenden Wert (nach Deinem anderen Beispiel bei dir wohl '192.168.5.80') setzen, sonst wird automatisch 'localhost' versucht, und das klappt natürlich nur, wenn das Programm auch direkt auf dem TXT läuft.Grau hat geschrieben: 1. Verbindung aufnehmen:
Wenn ich mit der Python IDE auf dem PC Programme testen möchte und diese später auf den TXT übertragen möchte wie ist die Richtige Verbindung?
-------------------
a) Geht auf dem TXT aber nicht im Online (WLAN) Betrieb:
txt_ip = os.environ.get('TXT_IP') # IP Adresse aus Umgebungsvariablen in txt_ip speichern.
if txt_ip == None: txt_ip = "localhost" # Wenn keine IP verwende localhost
try:
txt = ftrobopy.ftrobopy(txt_ip, 65000) # Versuche Verbindung aufzubauen und txt zuweisen
except:
txt = None
--------------------
Wie genau Du eine Environment-Variable für ein Python-Programm setzen kannst, hängt von Deinem Betriebssystem (auf dem PC) bzw (wenn Du das Programm direkt aus der IDE startest) von der verwendeten IDE ab.
Die beiden Funktionen brauchst Du im Normalfall nicht selbst aufrufen, das macht ftrobopy.ftrobopy() (für startOnline()) bzw. der Destruktor des entsprechenden Objekts (für stopOnline()) für Dich.Grau hat geschrieben: 2. Online Betrieb
Wann sollen die Funktionen startOnline() und stopOnline() verwendet werden?
a) Nur wenn das Programm mit der Python IDE gestartet wird.
b) Wenn das Programm Online gestartet wird und wenn das Programm mit der Python IDE gestartet wird.
txt.startOnline() # Onlinebetrieb starten
txt.stopOnline() # Onlinebetrieb stoppen
Das kommt drauf an, wie endgültig das "Ende" ist. Wenn Du mit dem txt-Objekt fertig bist, aber Dein Programm ansonsten noch weiterlaufen soll, dann kannst Du mit "del txt" die belegten Resourcen (d.h. im wesentlichen die Verbindung mit dem TXT) wieder freigeben. Beispiel:Grau hat geschrieben: 3. Programm beenden
Gibt es eine Funktion die man am Ende aufruft?
Code: Alles auswählen
import ftrobopy
txt_ip = os.environ.get('TXT_IP') # IP Adresse aus Umgebungsvariablen in txt_ip speichern.
if txt_ip == None: txt_ip = "localhost" # Wenn keine IP verwende localhost
txt = ftrobopy.ftrobopy(txt_ip, 65000) # Versuche Verbindung aufzubauen und txt zuweisen
# ... Dein Code, der txt verwendet
del txt
Re: ftrobopy Anfänger Fragen
Hallo Grau,
Damit wird der ftrobopy-Kommunikations-Prozess (der die Daten zwischen PC und TXT oder zwischen TXT-Linux und TXT-Motorplatine hin- und her schickt) ordentlich beendet und noch einen kurzen Moment geartet. Es kann sonst manchmal passieren, das zuerst das Hauptprogramm beendet wird und dann erst der Kommunikations-Prozess von Python "aufgeräumt" wird. In diesem Fall erhält man dann eine unschöne Fehlermeldung (die man nicht weiter beachten muss), weil der Kommunikations-Prozess nicht mehr auf die Daten des Hauptprogramms zugreifen kann.
Viele Grüße
Torsten
seit Version 1.56 kennt ftrobopy den 'auto'-Modus, bei dem automatisch die richtige Verbindungseinstellung gewählt wird. Ausserdem gibt es den (optionalen) Zusatzparameter "special_connection", der die IP-Adresse eines TXT im lokalen Netzwerk enthält (die 'special_connection'-IP wird nur im OnlineModus "ausprobiert"):Grau hat geschrieben:Wenn ich mit der Python IDE auf dem PC Programme testen möchte und diese später auf den TXT übertragen möchte wie ist die Richtige Verbindung?
Code: Alles auswählen
import ftrobopy
txt=ftrobopy.ftrobopy('auto', special_connection='192.168.5.80')
Die "startOnline()"-Funktion wird innerhalb des Konstruktors von ftrobopy.ftrobopy automatisch aufgerufen und muss nicht "von Hand" aufgerufen werden.Grau hat geschrieben:2. Online Betrieb
Wann sollen die Funktionen startOnline() und stopOnline() verwendet werden?
a) Nur wenn das Programm mit der Python IDE gestartet wird.
b) Wenn das Programm Online gestartet wird und wenn das Programm mit der Python IDE gestartet wird.
txt.startOnline() # Onlinebetrieb starten
txt.stopOnline() # Onlinebetrieb stoppen
Python räumt automatisch am Ende alles wieder auf. Im Prinzip muss man deshalb am Ende selbst keine spezielle Funktion mehr aufrufen. Allerdings ist es empfehlenswert, am Ende eines ftrobopy-Programmes die folgenden Befehle abzusetzen:Grau hat geschrieben: 3. Programm beenden
Gibt es eine Funktion die man am Ende aufruft?
Code: Alles auswählen
txt.stopOnline()
time.sleep(0.1)
Nachdem der startCameraOnline-Prozess gestartet wurde, werden die JPEG-Bilder der Kamera direkt hintereinander auf den Port 65001 geschickt (ohne HTML-Code dazwischen). Man kann die Bilder nicht direkt mit einem Webbrowser anschauen, sondern sollte sie unter Python (mit txt.getCameraFrame()) abfragen und dann weiterverarbeiten. Das Kamera-Bild kann z.B. folgendermassen in eine Datei gespeichert werden:Grau hat geschrieben: 4. Kamera
Ich habe die Kamera mit txt.startCameraOnline() gestartet.
Wenn ich im Browser iP:65001 aufrufe, erhalte ich kein Bild.
Code: Alles auswählen
txt.startCameraOnline()
time.sleep(2.5) # es kann bis zu 2.5 Sekunden dauern, bis die Kamera anfängt ordentliche Bilder zu senden
jpegBild = txt.getCameraFrame()
with open('TXTBild1.jpg', 'wb') as f:
f.write(bytearray(jpegBild))
Die ftrobopy-Versionsnummer kann mit folgendem Befehl abgefragt werden:Grau hat geschrieben:5. Version
Gibt es eine Funktion um die Version von ftrobopy abzufragen?
Code: Alles auswählen
print("ftrobopy-Version: ", ftrobopy.version())
Torsten
Re: ftrobopy Anfänger Fragen
Hallo,
danke für die schnellen Antworten.
Wenn ich die Befehle probiere bekomme ich immer die angehängte Fehlermeldung.
Ich habe es mit der Version 1.62 probiert.
import ftrobopy
txt=ftrobopy.ftrobopy('auto', special_connection='192.168.5.80')
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
=============== RESTART: C:\_FT_PYTHON\_APPS_PYTHON\Lampe3.py ===============
Programm startet!
Traceback (most recent call last):
File "C:\_FT_PYTHON\_APPS_PYTHON\Lampe3.py", line 14, in <module>
txt=ftrobopy.ftrobopy('auto', special_connection='192.168.5.80') # Versuche Verbindung auzubauen und txt zuweisen
AttributeError: module 'ftrobopy' has no attribute 'ftrobopy'
>>>
-------------------------------------------------------------------
Mit der Version geht die alte Methode auch nicht.
import ftrobopy
txt=ftrobopy.ftrobopy('192.168.5.80', 65000)
Traceback (most recent call last):
File "C:\_FT_PYTHON\_APPS_PYTHON\Lampe3.py", line 10, in <module>
txt=ftrobopy.ftrobopy('192.168.5.80', 65000) # WLAN
AttributeError: module 'ftrobopy' has no attribute 'ftrobopy'
Gruß Grau
danke für die schnellen Antworten.
Wenn ich die Befehle probiere bekomme ich immer die angehängte Fehlermeldung.
Ich habe es mit der Version 1.62 probiert.
import ftrobopy
txt=ftrobopy.ftrobopy('auto', special_connection='192.168.5.80')
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 07:18:10) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
=============== RESTART: C:\_FT_PYTHON\_APPS_PYTHON\Lampe3.py ===============
Programm startet!
Traceback (most recent call last):
File "C:\_FT_PYTHON\_APPS_PYTHON\Lampe3.py", line 14, in <module>
txt=ftrobopy.ftrobopy('auto', special_connection='192.168.5.80') # Versuche Verbindung auzubauen und txt zuweisen
AttributeError: module 'ftrobopy' has no attribute 'ftrobopy'
>>>
-------------------------------------------------------------------
Mit der Version geht die alte Methode auch nicht.
import ftrobopy
txt=ftrobopy.ftrobopy('192.168.5.80', 65000)
Traceback (most recent call last):
File "C:\_FT_PYTHON\_APPS_PYTHON\Lampe3.py", line 10, in <module>
txt=ftrobopy.ftrobopy('192.168.5.80', 65000) # WLAN
AttributeError: module 'ftrobopy' has no attribute 'ftrobopy'
Gruß Grau
Re: ftrobopy Anfänger Fragen
Hallo Grau,
vielen Dank für die Rückmeldung.
Viele Grüße
Torsten
vielen Dank für die Rückmeldung.
Dies war tatsächlich noch ein Problem, das immer dann auftrat, wenn ftrobopy in einem Unterverzeichnis installiert war. Die neue (gefixte) Version auf github ist jetzt die 1.63.Grau hat geschrieben:import ftrobopy
txt=ftrobopy.ftrobopy('auto', special_connection='192.168.5.80')
[...]
AttributeError: module 'ftrobopy' has no attribute 'ftrobopy'
Viele Grüße
Torsten