Guest User

Untitled

a guest
Mar 19th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. def packMessage(DeviceID, Offset, dataLength=None,
  2. Byte0=None, Byte1=None, Byte2=None, Byte3=None,
  3. Word0=None, Word1=None, DWord0=None):
  4.  
  5. Bytes = [Byte0, Byte1, Byte2, Byte3]
  6.  
  7. #check if the values to be used are in range
  8. if Offset >= 2**16:
  9. raise ValueError
  10. else:
  11. Offset_low = Offset & 0x00FF
  12. Offset_high = Offset & 0xFF00 >> 8
  13.  
  14. if dataLength is not None and not 1 <= dataLength <= 4:
  15. raise ValueError
  16.  
  17. #split bigger data to bytes and check the data length
  18. if DWord0 is not None:
  19. if 0 <= DWord0 <= 2**32:
  20. Bytes[0] = DWord0 & 0xFF
  21. Bytes[1] = (DWord0 & 0xFF00) >> 8
  22. Bytes[2] = (DWord0 & 0xFF0000) >> 16
  23. Bytes[3] = (DWord0 & 0xFF000000) >> 24
  24. length = 4
  25. else:
  26. raise ValueError
  27. elif Word0 is not None:
  28. if 0 <= Word0 <= 2**16:
  29. Bytes[0] = Word0 & 0xFF
  30. Bytes[1] = (Word0 & 0xFF00) >> 8
  31. else:
  32. raise ValueError
  33. if Word1 is not None:
  34. if 0 <= Word0 <= 2**16:
  35. Byte2 = Word1 & 0xFF
  36. Byte3 = (Word1 & 0xFF00) >> 8
  37. length = 4
  38. else:
  39. raise ValueError
  40. else:
  41. Word1 = 0
  42. Byte2 = Byte3 = 0
  43. length = 2
  44. else:
  45. for i in range(len(Bytes)):
  46. if Bytes(i) is not None:
  47. length = i
  48. else:
  49. Bytes[i] = 0
  50.  
  51. #if no length given take calculated length
  52. if dataLength is None:
  53. dataLength = length
  54.  
  55. #return the Message
  56. return bytearray([DeviceID, dataLength, Offset_low,
  57. Offset_high, Bytes[0], Bytes[1], Bytes[2], Bytes[3]])
  58.  
  59. if Byte0 is not None:
  60. if Byte1 is not None:
  61. if Byte2 is not None:
  62. if Byte3 is not None:
  63. length = 4
  64. else:
  65. Byte3 = 0
  66. else:
  67. length = 3
  68. Byte2 = 0
  69. Byte3 = 0
  70. else:
  71. length = 2
  72. Byte1 = 0
  73. Byte2 = 0
  74. Byte3 = 0
  75. else:
  76. length = 1
  77. Byte0 = 0
  78. Byte1 = 0
  79. Byte2 = 0
  80. Byte3 = 0
Add Comment
Please, Sign In to add comment