Mausschieber Geschrieben January 17, 2021 at 19:17 Geschrieben January 17, 2021 at 19:17 Hallo, ich habe ein Problem mit AnalogOutput-Bricklets. Einzeln funktioniert das Programm, aber nicht zusammen. Wo ist das Problem? Es kommt folgende Fehlermeldung: Traceback (most recent call last): File "D:\Daten\Thonny\Auto Motortreiber 02.py", line 25, in <module> aoLinksA.set_output_voltage(x) # Setzt die Spannung auf 3.3V File "D:\Daten\Thonny\tinkerforge\bricklet_analog_out_v3.py", line 98, in set_output_voltage self.ipcon.send_request(self, BrickletAnalogOutV3.FUNCTION_SET_OUTPUT_VOLTAGE, (voltage,), 'H', '') File "D:\Daten\Thonny\tinkerforge\ip_connection.py", line 1243, in send_request self.send(request) File "D:\Daten\Thonny\tinkerforge\ip_connection.py", line 1167, in send raise Error(Error.NOT_CONNECTED, 'Not connected') tinkerforge.ip_connection.Error: Not connected (-8) Fehler wird in der 5.-letzten Zeile markiert: aoLinksA.set_output_voltage(x) Hier das Programm: import time HOST = "localhost" PORT = 4223 UID_ao1 = "Hnm" # ACHTUNG, mehrere UID vorhanden: HmG + Hnm AnalogOut UID_ao2 = "HmG" # AnalogOut # ------------------------------------------------------------------------------------------- from tinkerforge.ip_connection import IPConnection # ------------------------------------------------------------------------------------------- from tinkerforge.bricklet_analog_out_v3 import BrickletAnalogOutV3 # andere Bricklets # ------------------------------------------------------------------------------------------- ipcon = IPConnection() # Create IP connection # ------------------------------------------------------------------------------------------- aoLinksA = BrickletAnalogOutV3(UID_ao1, ipcon) # Create device object aoLinksB = BrickletAnalogOutV3(UID_ao2, ipcon) # andere Bricklets # ------------------------------------------------------------------------------------------- ipcon.connect(HOST, PORT) # Connect to brickd # Don't use device before ipcon is connected # ------------------------------------------------------------------------------------------- # Hauptprogramm while True: for x in range (0, 5000,1000): # von x nach y-1 time.sleep(0.8) # halbe Sekunde warten aoLinksA.set_output_voltage(x) # Setzt die Spannung auf 3.3V aoLinksB.set_output_voltage(x) print(x) input("Press key to exit\n") ipcon.disconnect() Zitieren
rtrbt Geschrieben January 18, 2021 at 13:48 Geschrieben January 18, 2021 at 13:48 Moin, So wie das Script aussieht, sollte das funktionieren: ipcon.connect blockiert, bis die Verbindung aufgebaut ist, deshalb ergibt das keinen Sinn, dass danach ein "Not connected"-Fehler kommt, kann ich mir dann nur so erklären, dass sich dein Brick Daemon beendet o.Ä. Teste mal folgendes: Mach den Brick Viewer auf, verbinde dich zu localhost (Mach dann am besten einen Screenshot vom Setup-Tab und häng ihn hier an), lass dann dein Script laufen, und sieh nach ob der Brick Viewer auch die Verbindung verliert. In jedem Fall kannst du mal ein Brick Daemon-Log anhängen. Der Log Viewer (siehe Start-Menü) verbindet sich automatisch zum Brick Daemon. Im Menü oben gibt es den Punkt "Logfile" -> "View Log Directory", in dem Ordner sollten zwei Dateien liegen (brickd.log und brickd.ini). Häng die beiden mal auch an. Zitieren
Mausschieber Geschrieben January 26, 2021 at 19:26 Autor Geschrieben January 26, 2021 at 19:26 Hallo rtrbt, ich konnte leider nicht eher. Hier das von dir gewünschte: Also das Programm läuft durch, nach dem "press key" kommt: 0 1000 2000 3000 4000 Press key to exit Traceback (most recent call last): File "D:\Daten\Thonny\Auto Motortreiber 02.py", line 25, in <module> aoLinksA.set_output_voltage(x) # Setzt die Spannung auf 3.3V File "D:\Daten\Thonny\tinkerforge\bricklet_analog_out_v3.py", line 98, in set_output_voltage self.ipcon.send_request(self, BrickletAnalogOutV3.FUNCTION_SET_OUTPUT_VOLTAGE, (voltage,), 'H', '') File "D:\Daten\Thonny\tinkerforge\ip_connection.py", line 1243, in send_request self.send(request) File "D:\Daten\Thonny\tinkerforge\ip_connection.py", line 1167, in send raise Error(Error.NOT_CONNECTED, 'Not connected') tinkerforge.ip_connection.Error: Not connected (-8) brickd.log brickd.ini Zitieren
rtrbt Geschrieben January 27, 2021 at 13:12 Geschrieben January 27, 2021 at 13:12 Moin, Ich hatte dein Script falsch gelesen, eigentlich hätte ich schon sehen können, wo das Problem ist: Du hast im Script ja eine Endlosschleife und darin die for-Schleife, die die Spannungen durchgeht. Das Problem ist jetzt, dass nach einem Durchlauf der for-Schleife du auf eine Eingabe wartest und danach die Verbindung zum Brick Daemon schließt, dann aber wegen der Endlosschleife die nächste Runde Spannungssetzen machst, was aber nur klappt, wenn die Verbindung noch da ist. Du müsstest also die beiden letzten Zeilen aus der Schleife rausnehmen, wenn du die ganze Zeit die Spannungen durchlaufen willst, oder alternativ, wenn du immer auf einen Tastendruck warten willst vor der nächsten Runde lässt du das input("...") in der Schleife, dann würde ich aber den Text ändern, ist dann ja kein Exit mehr. Zitieren
Mausschieber Geschrieben January 30, 2021 at 11:45 Autor Geschrieben January 30, 2021 at 11:45 Hallo rtrbt, verdammt, was 4 Leerzeichen ausmachen können... Kämpfe noch etwas mit Python, aber vielen Dank für die Lösung. Wenn ich es kontinuierlich durchlaufen lassen möchte, kann ich den ipcon.disconnect()-Befehl ja nicht im Script drin lassen. Ist das ein Problem? Muss ich dann etwas beachten? Gruß Zitieren
Mausschieber Geschrieben January 30, 2021 at 12:12 Autor Geschrieben January 30, 2021 at 12:12 while True: for x in range (0, 6000,1000): # von x nach y-1 in 1000er Schritten time.sleep(2.0) # 2 Sekunden warten aoLinksA.set_output_voltage(x) # Setzt die Spannung auf xVolt aoLinksB.set_output_voltage(x) print(x) ipcon.disconnect() Vielleicht falsch ausgedrückt. Also der ipcon.disconnect()-Befehl könnte im Script drinbleiben, wird dann aber jetzt nie aktiv. Deswegen die Frage: Ist das ein Problem? Muss ich dann etwas beachten? Zitieren
rtrbt Geschrieben February 1, 2021 at 10:57 Geschrieben February 1, 2021 at 10:57 Das ist kein Problem. Wenn dein Programm beendet wird, werden auch die Verbindungen geschlossen. Zitieren
Mausschieber Geschrieben February 1, 2021 at 21:34 Autor Geschrieben February 1, 2021 at 21:34 Alles klar, danke nochmals. Da bin ich ja beruhigt. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.