Wpis z mikrobloga

Napisałem program odczytujący z pliku wartość liczbową odczytywaną przez przetwornik analogowo-cyfrowy. Wartość jest w zakresie 0-4095. Żeby ją przekonwertować na wartość zbliżoną do zmierzonego napięcia muszę wykonać proste działanie:
(wartosc_raw/4095)*5
Problem, jaki spotkałem polega na tym, że w każdym przypadku po działaniu w nawiasie mam wynik 0.0. Próbowałem zmienną wymuszać jako float i sprawdzałem to przez isinstance, dzieliłem przez 4095.0, ale wciąż dostaję to przeklęte 0.0 mimo, że wynik na pewno jest inny.

Co tu się dzieje takiego, że dostaję błędne wyniki prostego działania?

#python #programowanie #pytanie
  • 32
@Gorion103: ale bez *5, samo dzielenie, też wypluwa 0.0 :)
@RobertMistrz: @AwizisieAkat:
batteryraw = subprocess.call("cat /sys/bus/iio/devices/iio\:device0/involtage0raw", shell=True)
print battery
raw # tu wiem ze =/=0
batteryvol = float((batteryraw/4095)*5) # po samym dzieleniu juz wypluwa 0.0
print isinstance(batteryvol, float) # true
print battery
vol # 0.0
@RobertMistrz: korzystałem właśnie z tego, choć biegły nie jestem. Zdziwiło mnie jednak, że mimo wszystko powstał problem i nie daje się rozwiązać w żaden stosowany wcześniej sposób.
Dla próby przemnożyłem battery_raw wynoszący teraz 2149 przez 1.0 i otrzymuję 0.0.
@RobertMistrz: @Gorion103: @AwizisieAkat: jednak nie jest to rozwiązane, choć mam trop.
print battery_raw wypluwa po sobie dwie wartości oddzielone końcem linii. Jedną jest wartość >0, a druga to dokładnie 0. Nie wiem skąd to się bierze, bo zwykły cat na tej ścieżce wypluwa tylko 0-4095 z jakąś przewidywalnością co do wartości, jeśli podłączę coś >0 V.
Podejrzewam, że właśnie to 0 psuje wszystko i na nim muszę się skupić,
@macgajster:
To co wyrzuca w terminalu, to nie jest wartość zwracana przez funkcje:

Wg. dokumentacji:

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
Run the command described by args. Wait for command to complete, then return the returncode attribute.

The arguments shown above are merely the most common ones, described below in Frequently Used Arguments (hence the slightly odd notation in the abbreviated signature). The full function signature is the same as that
biwalencik - @macgajster: 
To co wyrzuca w terminalu, to nie jest wartość zwracana p...

źródło: comment_7bkMPThxE3d2DwTujeG6UPdLza9aWiRy.jpg

Pobierz