ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Grk
Beiträge: 4
Registriert: 30 Apr 2020, 10:38

ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Grk » 19 Mai 2020, 18:36

Hallo,

ich habe einen TXT, auf dem die Communityfirmware 0.9.5 läuft. Ich kann wunderbar Python-Programme laufen lassen und bearbeiten, indem ich das Gerät per USB anschließe und per Filezilla darauf zugreife. Leider habe ich Schwierigkeiten, einen Kombisensor via I2C anzusteuern.

Es funktionieren die Befehle aus dem ersten Teil des Manuals, wie zum Beispiel:

Code: Alles auswählen

ftrob = ftrobopy.ftrobopy('auto')
motor1=ftrob.motor(1)
ftrob.updateWait()
usw.

Was allerdings nicht funktioniert, sind Befehle aus der zweiten Hälfte des Manuals. Dort ist die Rede von der Basisklasse zum fischertechnik TXT Computer.

Code: Alles auswählen

import ftrobopy
txt = ftrobopy.ftTXT('192.168.7.2', 65000)
Der obige Code gibt mir:
ConnectionRefusedError: [Errno 111]

Leider hat mir die Forensuche hier nicht weitergeholfen. Woran könnte es liegen, dass ich diese Klasse nicht initialisieren kann?

Danke vorab.

Torsten
Beiträge: 183
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Torsten » 22 Mai 2020, 18:21

Hallo Grk,

der Constructor der Basisklasse (ftTXT) wird (normalerweise) nicht direkt vom Anwender aufgerufen, sondern nur indirekt über die abgeleitete Klasse ftrobopy, die z.B. auch die Python-Verbindungsthreads zum TXT herstellt.

Da die Klasse ftrobopy aber von ftTXT abgeleitet ist, stehen hier alle Befehle der Basisklasse zur Verfügung, auch die Befehle zum Ansprechen der I2C-Schnittstelle (i2c_read/write).

Du kannst im Python-Script also für den BMX055 Kombisensor ganz normal folgendes schreiben:

Code: Alles auswählen

import ftrobopy, struct
ftrob = ftrobopy.ftrobopy('auto')
ftrob.i2c_write(0x18, 0x3e, 0x80)
ftrob.i2c_write(0x18, 0x0f, 0x0c)
ftrob.i2c_write(0x18, 0x10, 0x0f)
res = ftrob.i2c_read(0x18, 0x3f, data_len=6)
x,y,z = struct.unpack('<hhh', res)
print("Beschleunigung des BMX055 Kombisensors in x-, y- und z-Richtung = ", x >> 4 , y >> 4, z >> 4)
Das Problem mit dem "ConnectionRefusedError: [Errno 111]" liegt wahrscheinlich daran, dass Du die ftGUI-app der cfw, die für die i2c-Befehle von ftrobopy benötigt werden, nicht gestartet hast.

Viele Grüße
Torsten

Grk
Beiträge: 4
Registriert: 30 Apr 2020, 10:38

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Grk » 27 Mai 2020, 23:42

Hallo Torsten,

vielen Dank erst mal für deine Antwort und sorry für meine späte Reaktion.

Ich bin ein Stück weitergekommen dank deiner Antwort. Wenn ich deinen Code probiere, erhalte ich die Fehlermeldung:

Code: Alles auswählen

File "usr/lib/python3.7/site-packages/ftrobopy.py", line 352, in i2c_read
AttributeError: 'ftrobopy' object has no attribute '_i2c_sock'
Offensichtlich steht die Methode i2c_read zur Verfügung, ich kann sie allerdings nicht nutzen. Für i2c_write erhalte ich die entsprechend gleiche Meldung.

Leider bin ich auch mit Internetsuchen nicht weitergekommen.
[...] dass Du die ftGUI-app der cfw, die für die i2c-Befehle von ftrobopy benötigt werden, nicht gestartet hast.
Ist vlt. eine blöde Frage, aber wie mache ich das? Ich starte den TXT mit dem kleinen blauen Knopf, es bootet, und zeigt "community edition" an, und dann bin ich doch in der GUI, oder? Ich kann dort zwischen den Ordnern "Demos" und "System" wählen, wobei in Ersterem die eigenen Apps mit anklickbaren Icons drin sind, und im zweiten Ordner eben System-Apps. Hier allerdings findet sich der Punkt „FT-GUI“ – meinst du das? Das kann ich zwar anklicken, dort steht dann aber ganz groß: NO PROGRAM, und ich kann File, Settings oder Test anklicken.

Ich wäre dir wirklich zutiefst verbunden, wenn du mir hier noch einmal weiterhelfen könntest.

Antworten