def test_interpretSignal_1(self): signal = "011000" interpreter = ManchesterSignalInterpreter() parameters = interpreter.interpretSignal(signal) self.assertEqual(3, len(parameters)) self.assertEqual(ManchesterSignalInterpreter.FIGURE_3, parameters[0]) self.assertEqual(ManchesterSignalInterpreter.NORTH, parameters[1]) self.assertEqual(ManchesterSignalInterpreter.FACTOR_2, parameters[2])
def test_interpretSignal_2(self): signal = "110101" interpreter = ManchesterSignalInterpreter() parameters = interpreter.interpretSignal(signal) self.assertEqual(3, len(parameters)) self.assertEqual(ManchesterSignalInterpreter.FIGURE_6, parameters[0]) self.assertEqual(ManchesterSignalInterpreter.SOUTH, parameters[1]) self.assertEqual(ManchesterSignalInterpreter.FACTOR_4, parameters[2])
class ManchesterSignalSearcher: def __init__(self): self.arduinoInterface = ArduinoInterface.getInstance() self.manchesterSignalInterpreter = ManchesterSignalInterpreter() def searchSignal(self): robotMover = RobotMover() robotMover.doSnakeMovement(Terrain.DRAWING_ZONE_NORTH_EAST_CORNER_INNER, 180) distance, signal = self.__doSignalSearch('SS.') self.__adjustPosition(distance, 4) signalPosition = Robot.getCurrentPosition() self.__moveToSecondCorner() distance, signal = self.__doSignalSearch('SB.') self.__adjustPosition(distance, -4) interpretedSignal = self.manchesterSignalInterpreter.interpretSignal(signal) return interpretedSignal, signalPosition def __doSignalSearch(self, method): print "searching signal..." self.arduinoInterface.write(method) time.sleep(0.2) self.arduinoInterface.checkIfOperationIsOver() signalAndDistance = self.arduinoInterface.readLine() print "signal and distance: " + str(signalAndDistance) signal = signalAndDistance[0:7] distance = signalAndDistance[8:] print "distance traveled: " + str(distance) print "signal: " + str(signal) return distance, signal def __moveToSecondCorner(self): robotMover = RobotMover() robotMover.doSnakeMovement(Terrain.DRAWING_ZONE_SOUTH_EAST_CORNER_INNER, 0) def __adjustPosition(self, distance, verticalDrift): ancientPose = Robot.getCurrentPose() newPose = (ancientPose[0] - (int(distance)/10), ancientPose[1] + verticalDrift, ancientPose[2]) Robot.setCurrentPose(newPose) def doSimpleSignalDecoding(self): self.arduinoInterface.write('SD.') self.arduinoInterface.checkIfOperationIsOver() signal = self.arduinoInterface.readLine() interpretedSignal = self.manchesterSignalInterpreter.interpretSignal(signal) return interpretedSignal