chore: float support in python

This commit is contained in:
Piotr Dec 2024-07-30 18:40:43 +02:00
parent c67f9f9726
commit b724d5041d
Signed by: stawros
GPG key ID: F89F27AD8F881A91
2 changed files with 21 additions and 7 deletions

View file

@ -63,7 +63,8 @@ class Controller:
def clear(self):
self.send_hud([0x03, 0, 0, 0, 0x00, 0, 0])
def _as_dgt(self, n: int) -> int:
def _as_dgt(self, number: float) -> int:
n = int(number)
if n == 0:
return 0
n %= 10
@ -89,9 +90,17 @@ class Controller:
arr = [0x01, param_1, param_2, param_3]
self.send_hud(arr)
def set_distance(self, distance, unit: Unit = Unit.Any):
arr = [0x03, self._as_dgt(distance // 1000), self._as_dgt(distance // 100), self._as_dgt(distance // 10), 0x00,
self._as_dgt(distance), unit.value]
def set_distance(self, distance: float, unit: Unit = Unit.Any):
is_float = int(distance * 10) == int(distance) * 10
if not is_float:
distance = distance * 10
arr = [0x03,
self._as_dgt(distance // 1000),
self._as_dgt(distance // 100),
self._as_dgt(distance // 10),
0x00 if is_float else 0xff,
self._as_dgt(distance),
unit.value]
self.send_hud(arr)
def set_speed(self, speed: int, limit: int = 0, acc: bool = False):

View file

@ -62,8 +62,10 @@ def direction(controller: Controller):
def distance(controller: Controller):
print("Distance")
controller.set_distance(999)
controller.set_distance(999, Unit.Kilometres)
controller.set_distance(555.5)
controller.set_distance(6666)
controller.set_distance(777.7)
controller.set_distance(888, Unit.Kilometres)
controller.set_distance(999, Unit.Metres)
controller.set_distance(999, Unit.Foot)
controller.set_distance(999, Unit.Miles)
@ -108,4 +110,7 @@ def compass(controller: Controller):
if __name__ == '__main__':
instance = Controller('/dev/rfcomm0')
import os
name = '/dev/rfcomm0' if os.name != 'nt' else 'COM8'
instance = Controller(name)
suite(instance)