app.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. import sys
  2. from nbus_slave import *
  3. from nbus_system import *
  4. import matplotlib.pyplot as plt
  5. from imu_slave import *
  6. import numpy as np
  7. def show_data(data):
  8. fig, ax = plt.subplots()
  9. for d in data:
  10. ax.plot(data[d])
  11. ax.grid()
  12. plt.show()
  13. if __name__ == "__main__":
  14. nbus = NbusSystem(True)
  15. s1_adr = 6
  16. s2_adr = 9
  17. adrs = [s1_adr, s2_adr]
  18. #nbus.cmd_stop()
  19. #sys.exit()
  20. foundSlaves = {}
  21. for adr in adrs:
  22. slave1 = nbus.create_slave(ImuSlave, adr)
  23. foundSlaves[adr] = True
  24. #nbus.cmd_stop()
  25. time.sleep(0.01)
  26. startCheck = True
  27. for adr in adrs:
  28. if nbus.get_slave(adr).cmd_echo([97, 98, 99, 100]) == 0:
  29. foundSlaves[adr] = False
  30. for s in foundSlaves:
  31. startCheck = startCheck and foundSlaves[s]
  32. print("Module presence:", foundSlaves)
  33. if not startCheck:
  34. sys.exit()
  35. # app.cmd_reset()
  36. store_param = False
  37. if store_param:
  38. nbus.get_slave(s1_adr).cmd_set_param(1, PARAM_SAMPLERATE, 1)
  39. nbus.get_slave(s1_adr).cmd_set_param(1, PARAM_RANGE, 0)
  40. nbus.get_slave(s1_adr).cmd_set_param(1, PARAM_FILTER, 2)
  41. nbus.get_slave(s1_adr).cmd_store(1)
  42. sys.exit()
  43. # !!!! slave1.cmd_set_param(1, PARAM_SAMPLERATE, 10)
  44. # !!!! slave1.cmd_set_param(2, PARAM_SAMPLERATE, 10)
  45. # for adr in adrs:
  46. # for s in range(1):
  47. # sr = nbus.get_slave(adr).cmd_get_param(s + 1, PARAM_SAMPLERATE)
  48. # r = nbus.get_slave(adr).cmd_get_param(s + 1, PARAM_RANGE)
  49. # lpf = nbus.get_slave(adr).cmd_get_param(s + 1, PARAM_FILTER)
  50. # ee = nbus.get_slave(adr).cmd_get_param(s + 1, PARAM_GAIN)
  51. # print(sr, r, lpf, ee)
  52. pocet = {}
  53. for adr in adrs:
  54. pocet[adr] = nbus.get_slave(adr).cmd_sensor_cnt()
  55. # sys.exit()
  56. print("pocet senzorov=", pocet)
  57. types = {}
  58. for adr in adrs:
  59. types[adr] = nbus.get_slave(adr).cmd_sensors_type()
  60. print("TYPES=", types)
  61. info = {}
  62. for adr in adrs:
  63. info[adr] = nbus.get_slave(adr).cmd_sensor_info()
  64. print("INFO=", info)
  65. info = {}
  66. for adr in adrs:
  67. info[adr] = nbus.get_slave(adr).cmd_sensors_format()
  68. print("FORMAT=", info)
  69. for adr in adrs:
  70. nbus.get_slave(adr).cmd_echo([97, 98, 99, 100])
  71. #sys.exit()
  72. nbus.cmd_start()
  73. time.sleep(0.5)
  74. nbus.cmd_stop()
  75. for adr in adrs:
  76. nbus.get_slave(adr).cmd_echo([97, 98, 99, 100])
  77. #nbus.finish()
  78. time.sleep(0.1)
  79. #nbus.open()
  80. for adr in adrs:
  81. nbus.get_slave(adr).cmd_echo([97, 98, 99, 100])
  82. sys.exit()
  83. time.sleep(0.1)
  84. nbus.cmd_start()
  85. time.sleep(0.5)
  86. nbus.cmd_stop()
  87. sys.exit()
  88. data_acc = {}
  89. for adr in adrs:
  90. data_acc[adr] = []
  91. print(data_acc)
  92. start = time.time()
  93. num = 56
  94. for i in range(num):
  95. for adr in adrs:
  96. acc = nbus.get_slave(adr).cmd_sensor_get_data_IMU(1)
  97. #gyr = nbus.get_slave(adr).cmd_sensor_get_data_IMU(2)
  98. data_acc[adr].append(acc)
  99. #print(gyr)
  100. print(".", end=" ")
  101. stop = time.time() - start
  102. print(f"t={stop}")
  103. print(f"datarate={num/stop} mer/s")
  104. nbus.cmd_stop()
  105. nbus.cmd_stop()
  106. show_data(data_acc)
  107. nbus.cmd_stop()
  108. nbus.finish()
  109. sys.exit()
  110. for adr in adrs:
  111. for i in range(pocet[adr]):
  112. d = nbus.get_slave(adr).cmd_sensor_get_data(i + 1)
  113. print("Data", i + 1, ":\t", d)
  114. print("Sensor type")
  115. for i in range(pocet[adr]):
  116. print(nbus.get_slave(adr).cmd_sensor_type(i + 1))
  117. print("Sensors type")
  118. print(nbus.get_slave(adr).cmd_sensors_type(pocet[adr]))
  119. par = nbus.get_slave(adr).cmd_get_params(1)
  120. print(par)
  121. r = nbus.get_slave(adr).cmd_module_info(0xE1)
  122. print('NAME:', r)
  123. r = nbus.get_slave(adr).cmd_module_info(0xE2)
  124. print('TYPE', r)
  125. r = nbus.get_slave(adr).cmd_module_info(0xE4)
  126. print('FW', r)
  127. r = nbus.get_slave(adr).cmd_module_info(0xE5)
  128. print('HW', r)
  129. r = nbus.get_slave(adr).cmd_module_info(0xE3)
  130. print("UUID", r)
  131. r = nbus.get_slave(adr).cmd_module_info(0xE6)
  132. print("MEM ID", r)
  133. nbus.finish()