43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
class aip_parser:
|
|
def digitalWrite(self, args):
|
|
if len(args) != 2:
|
|
return
|
|
self.robot.digitalWrite(*map(int, args))
|
|
|
|
def analogWrite(self, args):
|
|
if len(args) != 2:
|
|
return
|
|
self.robot.analogWrite(*map(int, args))
|
|
|
|
cmds = {
|
|
"dw" : digitalWrite,
|
|
"aw" : analogWrite
|
|
}
|
|
|
|
def __init__(self, stream, robot):
|
|
self.stream = stream
|
|
self.cmd_buff = ""
|
|
self.robot = robot
|
|
|
|
def poll(self):
|
|
c=self.stream.read(1)
|
|
if len(c)==0:
|
|
print("end")
|
|
return False
|
|
if len(self.cmd_buff)==0:
|
|
if c != b'$':
|
|
return True
|
|
self.cmd_buff = "_"
|
|
else:
|
|
if c == b';':
|
|
self.parse_line()
|
|
else:
|
|
self.cmd_buff += c.decode()
|
|
return True
|
|
|
|
def parse_line(self):
|
|
cmd = self.cmd_buff[1:].split(',')
|
|
cmdFct = self.cmds.get(cmd[0])
|
|
if cmdFct:
|
|
cmdFct(self, cmd[1:])
|
|
self.cmd_buff = "" |