PMDemoConnection.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. """
  2. Created on 29-03-2013
  3. @author: citan
  4. """
  5. from pimonitor.PM import PM
  6. from pimonitor.PMPacket import PMPacket
  7. import random
  8. import time
  9. class PMDemoConnection(object):
  10. """
  11. classdocs
  12. """
  13. def __init__(self):
  14. """
  15. Constructor
  16. """
  17. self._ser = None
  18. self._log_id = None
  19. random.seed()
  20. self._byteval = [0, 0, 0, 0]
  21. def open(self):
  22. message = 'Opening serial connection...'
  23. self._log_id = PM.log(message)
  24. time.sleep(0.2)
  25. PM.log(message + " [DONE]", self._log_id)
  26. def close(self):
  27. PM.log("Closing serial connection", self._log_id)
  28. pass
  29. def init(self, target):
  30. PM.log('Initializing CU for target: ' + str(target), self._log_id)
  31. response = []
  32. if target == 1 or target == 3:
  33. response = [0x80, 0xF0, 0x10, 0x69, 0xFF, 0xA2, 0x10, 0x02, 0x4D, 0x12, 0x04, 0x40, 0x06, 0xF3, 0xFA, 0xC9, 0x8E, 0x22, 0x04, 0x02, 0xAC, 0x00, 0x00, 0x00, 0x60, 0xCE, 0x54, 0xF8, 0xB9, 0x84, 0x00, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x45, 0x1F, 0x30, 0x80, 0xF0, 0x20, 0x1F, 0x02, 0x43, 0xFB, 0x00, 0xF1, 0xC1, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26]
  34. if target == 2:
  35. response = [0x80, 0xF0, 0x18, 0x39, 0xFF, 0xA2, 0x10, 0x21, 0xD0, 0xF3, 0x70, 0x31, 0x00, 0x01, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xC3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x3E, 0x00, 0x0B, 0x21, 0xC0, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51]
  36. return PMPacket.from_array(response)
  37. def send_packet(self, packet):
  38. raise Exception('connection', 'should never be called')
  39. def read_parameter(self, parameter):
  40. time.sleep(0.05)
  41. address_len = parameter.get_address_length()
  42. data = [0x80, 0xF0] # [0x80, 0xF0, 0x18, 0x02, 0xE8, 0x60, 0xD2]
  43. if parameter.get_target() == 1 or parameter.get_target() == 3:
  44. data.append(0x10)
  45. if parameter.get_target() == 2:
  46. data.append(0x18)
  47. data.append(address_len+1)
  48. data.append(0xE8)
  49. for i in range(0, address_len):
  50. self._byteval[i] = (self._byteval[i] + 1) % 0xFF
  51. data.append(self._byteval[i])
  52. checksum = 0
  53. for b in data:
  54. checksum = (checksum + b) & 0xFF
  55. data.append(checksum)
  56. return PMPacket.from_array(data)
  57. def read_parameters(self, parameters):
  58. time.sleep(0.05)
  59. out_packets = []
  60. for parameter in parameters:
  61. out_packets.append(self.read_parameter(parameter))
  62. return out_packets