45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
import serial
|
|
import logging
|
|
import time
|
|
|
|
class PalletProximity:
|
|
def __init__(self) -> None:
|
|
self.log = logging.getLogger("PALLET PROXIMITY SENSOR")
|
|
self.log.setLevel("DEBUG")
|
|
# self.serial_string = '/dev/cu.usbmodem1442401'
|
|
self.serial_string = '/dev/micro'
|
|
self.alive = False
|
|
self.distance_to_pallet = 999
|
|
try:
|
|
self.ser = serial.Serial(self.serial_string, 9600, timeout=1)
|
|
self.alive = True
|
|
self.log.info('Proximity serial open')
|
|
except Exception as e:
|
|
self.log.critical(f"Cannot open serial device, {e}")
|
|
self.log.critical('Exiting')
|
|
exit(0)
|
|
|
|
def get_prox_reading(self):
|
|
try:
|
|
self.ser.flushInput()
|
|
# time.sleep(0.05)
|
|
readings = 0
|
|
for _ in range(3):
|
|
raw = str(self.ser.readline())
|
|
raw2 = int(raw.split("|")[1])
|
|
readings += raw2
|
|
self.distance_to_pallet = int(readings / 3)
|
|
return self.distance_to_pallet
|
|
except Exception as e:
|
|
self.log.critical(f"ERROR: {e}, serial input: {raw}")
|
|
self.distance_to_pallet
|
|
# return False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("Testing...")
|
|
a = PalletProximity()
|
|
while True:
|
|
# time.sleep(0.1)
|
|
print(a.get_prox_reading())
|