コード例 #1
0
def handle_write_zero_position(req):
    """
    A handle for the service to be able to handle write_zero_position

    :param req: The requester object which contains the input from the user
    :type req: object
    """
    lock.acquire()
    response = as5048a.write_zero_position()
    if as5048a.is_error:
        errors = as5048a.clear_and_get_error()
        lock.release()
        message = """Failed to write zero position, the following errors were encountered:
        Parity error: {}
        Command invalid: {}
        Framing error: {}""".format(**errors)
        return TriggerResponse(False, message)
    if as5048a.is_parity_mismatch:
        lock.release()
        message = "Failed to write zero position, the received package has a mismatched parity"
        return TriggerResponse(False, message)
    lock.release()
    old = AS5048.calc_angle(response['old_zero_position'])
    new = AS5048.calc_angle(response['new_zero_position'])
    message = """Successfully wrote a new zero position
    Old Zero Position: {} rad
    New Zero Position: {} rad""".format(old, new)
    return TriggerResponse(True, message)
コード例 #2
0
 def test_calc_angle(self):
     self.assertEqual(AS5048.calc_angle(0), 0)
     self.assertEqual(AS5048.calc_angle(0x1000), math.pi / 2)
     self.assertEqual(AS5048.calc_angle(0x2000), math.pi)
     self.assertEqual(AS5048.calc_angle(0x3000), math.pi * 3 / 2)
     self.assertEqual(AS5048.calc_angle(0x4000), 2 * math.pi)