legoEv3/irOne1.py


from datetime import datetime
print(str(datetime.now()), "00 import datetime", __file__)
import time
import threading
from queue import Queue, Empty
import sys

print(str(datetime.now()), "01 import sys", __file__)

#from modmod import *

#print(str(datetime.now()), "02 import modmod", __file__)

from ev3dev2.motor import *
print(str(datetime.now()), "03 import motor", __file__)
from ev3dev2.led import Leds
from ev3dev2.button import *
from ev3dev2.sensor.lego import InfraredSensor
#from ev3dev2._platform.ev3 import *
print(str(datetime.now()), "10 imported all", __file__)



# print('EVDEV_DEVICE_NAME', EVDEV_DEVICE_NAME)
# for name, mod in sys.modules.items():
#    print(name, '-->', mod)
class IRThr(threading.Thread):
    """ thread ev3 brick buttons """
    def __init__(self):
        threading.Thread.__init__(self)
        self.ir = InfraredSensor()
        self.ir.mode = InfraredSensor.MODE_IR_REMOTE
        self.info()

    def info(self):
        print("InfraredSensor " + self.ir.address, "\n\tmodes=" + repr(self.ir.modes),
            "\n\t_BUTTONS=" + repr(self.ir._BUTTONS), "\n\t commands=" + repr(self.ir.commands))
   
    def run(self):
        self.running = True;
        print(str(datetime.now()), "20 run begin", __file__)
        if self.ir.mode == self.ir.MODE_IR_REMOTE:
            # IR_REMOTE: use infrared sensor as remote control, 5 channels, 5 buttons
            buttons = None
            while self.running:
                n = self.ir.buttons_pressed(1)
                if n != self.buttons:
                    print(str(datetime.now()) + " ir buttons ch1 " + repr(n))
                    self.buttons = n
                time.sleep(0.001)
        elif self.ir.mode == self.ir.MODE_IR_PROX:
            # IR_PROX: use infrared sensor to feel proximity of any object
            self.prox = None
            while self.running:
                n = self.ir.proximity
                if n != self.prox:
                    print(str(datetime.now()) + " ir proximity ch1 " + repr(n))
                    self.prox = n
                time.sleep(0.001)
        elif self.ir.mode == self.ir.MODE_IR_SEEK:
            # IR_PROX: use infrared sensor to seek distance and angle of IR sender
            self.heaDis = None
            while self.running:
                n = self.ir.heading_and_distance(1)
                if n != self.heaDis:
                    print(str(datetime.now()) + " ir Heading Distance ch1 " + repr(n))
                    self.heaDis = n
                    #pMod()
                    #break
                time.sleep(0.1)


print(str(datetime.now()), "12 after class", __file__)
print("sys.version", sys.version)
print(datetime.now(), "platform", get_current_platform())
# print("devices", repr(evdev.list_devices()))
# print("dev 2", repr([evdev.InputDevice(fn).name for fn in evdev.list_devices()]))

it = IRThr()
it.ir.mode = InfraredSensor.MODE_IR_PROX
it.run()
print(str(datetime.now()), "19 end", __file__)