Files
picar/MotorControl/PythonRemoteController.py
2019-09-29 21:15:11 +09:30

51 lines
1.1 KiB
Python

print("Connecting to pi")
import grpc
from concurrent import futures
from .MotorServer import MotorServicer
from . import motorService_pb2_grpc
import random
from threading import Timer
throttle = 0
timer = None
class ThrottleIterator:
'''
Class to get the current throttle for the car.
Will return a random throttle between
'''
def __iter__(self):
return self
def __next__(self):
if throttle > 1 or throttle < -1:
raise StopIteration
return throttle
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
motorService_pb2_grpc.add_CarControlServicer_to_server(
MotorServicer(), server)
server.add_insecure_port('[::]:50051')
server.start()
def resetThrottle():
global throttle
throttle = random.random() * 2 - 1
global timer
if timer is not None:
timer.cancel()
timer = Timer(10, resetThrottle)
serve()
timer = Timer(10, resetThrottle)
channel = grpc.insecure_channel('localhost:50051')
stub = motorService_pb2_grpc.CarControlStub(channel)
stub.SetThrottle(ThrottleIterator())