Problem mit dem Kombisensor Rundungsproblem Robo Pro Coding

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Benutzeravatar
fishfriend
Beiträge: 1889
Registriert: 26 Nov 2010, 11:45

Problem mit dem Kombisensor Rundungsproblem Robo Pro Coding

Beitrag von fishfriend » 19 Mai 2024, 08:03

Hallo...
Ich hab einen Kombisensor 6-pol mir gekauft und wolte ihn testen.
Dazu hab ich das ft-Programm vom TXT 4.0 / test_combi_sensor genommen.
Programm startet, scheinbar wird auch der Sensor erkannt,
aber es kommt überraschenderweise die Fehlermeldung:
TypeError: type NoneType doesn't define __round__ method
Fehlt da ein Import oder ist der/das verloren gegangen?
Klingt erstmal blöd aber läuft in einem anderen Programm eine Rundung nicht mehr, die vorher lief?
Kann das jemand mal von euch testen?
Besten Dank
Mit freundlichen Grüßen
Holger
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

vleeuwen
Beiträge: 1586
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Problem mit dem Kombisensor Rundungsproblem Robo Pro Coding

Beitrag von vleeuwen » 19 Mai 2024, 15:53

It means that the the program tries to take the round() from a variable that has not yet been assigned to a value.
====================================================================================
type NoneType doesn't define __round__ method [duplicate]
https://stackoverflow.com/questions/658 ... und-method

See also:
https://www.geeksforgeeks.org/round-function-python/
https://docs.python.org/3.5/library/fun ... html#round
https://docs.python.org/3.5/library/typing.html

In the Python code you will find something like:

Code: Alles auswählen

varA: float | NoneType= None         # not initializd
res: int | float = round(varA, 1)     # this gives: type NoneType doesn't define __round__ method
In Python type checking is optional.
This code is not protected with a fine Exception handeling.
software enigineer/teacher/advisor
Google translate
http://tescaweb.nl/Carel/?p=713

rbudding
Beiträge: 27
Registriert: 01 Nov 2010, 18:36
Wohnort: UTRECHT

Re: Problem mit dem Kombisensor Rundungsproblem Robo Pro Coding

Beitrag von rbudding » 20 Mai 2024, 21:26

Hi Holger,

Dazu hab ich auch das ft-Programm vom TXT 4.0 / test_combi_sensor genommen.

--> FTexamples --> Txt 4.0 --> test_combi_sensor_6pin

Code: Alles auswählen

Program starts ...

TypeError: init_accelerometer() takes from 1 to 3 positional arguments but 4 were given

Program finished.
Ich denke, das ist das Gleiche... Grüß Richard

rbudding
Beiträge: 27
Registriert: 01 Nov 2010, 18:36
Wohnort: UTRECHT

Re: Problem mit dem Kombisensor Rundungsproblem Robo Pro Coding

Beitrag von rbudding » 20 Mai 2024, 21:41

Nur ein leerer Init des Sensors gibt keinen Fehler... es liegt also nicht am Init in der Bibliothek.

aber

Code: Alles auswählen

bla = TXT_M_I2C_1_combined_sensor_6pin.get_rotation_x()
print(bla)
print(round(bla, 4))
while True:
    pass

Code: Alles auswählen

Program starts ...

None
TypeError: type NoneType doesn't define __round__ method

Program finished.

rbudding
Beiträge: 27
Registriert: 01 Nov 2010, 18:36
Wohnort: UTRECHT

Re: Problem mit dem Kombisensor Rundungsproblem Robo Pro Coding

Beitrag von rbudding » 20 Mai 2024, 21:55

bin schon etwas weiter gekommen...

Code: Alles auswählen

from lib.controller import *

TXT_M_I2C_1_combined_sensor_6pin.init_gyrometer(125, 12, False)

Dieser Code gibt schon einen Fehler.

Code: Alles auswählen

Program starts ...

TypeError: init_gyrometer() takes from 1 to 3 positional arguments but 4 were given

Program finished.

Ich glaube, da ist ein bug.

rbudding
Beiträge: 27
Registriert: 01 Nov 2010, 18:36
Wohnort: UTRECHT

Re: Problem mit dem Kombisensor Rundungsproblem Robo Pro Coding

Beitrag von rbudding » 20 Mai 2024, 22:00

It works!

Code: Alles auswählen

TXT_M_I2C_1_combined_sensor_6pin.init_magnetometer(2)
while not (TXT_M_I2C_1_combined_sensor_6pin.get_magnetic_field_x() == 0):
    print(round(TXT_M_I2C_1_combined_sensor_6pin.get_magnetic_field_x(), 2))
    time.sleep(1)

Program starts ...

18.56
19.16
19.05
19.41


Antworten