main.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import sensors
  2. import time
  3. import threading
  4. import queue
  5. import gui.mainWindow as mainWindow
  6. conf = {
  7. "field":{
  8. "x":450,
  9. "y":450
  10. },
  11. "ac_sensor":{
  12. "sensor_distance":450,
  13. "y_offset":10,
  14. "left_x_offset":0,
  15. "rigth_x_offset":0,
  16. "sonicspeed":0.343,
  17. "overhead":150
  18. }
  19. }
  20. class CalibrationStateMashine():
  21. def __init__(self):
  22. self.state = 0
  23. self.value_count = 0
  24. self.NOT_CALIBRATED = 0
  25. self.READY_ON_POS_1 = 1
  26. self.ACCUMULATING_1 = 2
  27. self.FINISHED_POS_1 = 3
  28. self.READY_ON_POS_2 = 4
  29. self.ACCUMULATING_2 = 5
  30. self.FINISHED_POS_2 = 6
  31. self.CALIBRATION_DONE = 7
  32. def state_clearname(self):
  33. if self.state == self.NOT_CALIBRATED:
  34. return "not calibrated"
  35. elif self.state == self.READY_ON_POS_1:
  36. return "ready on position one"
  37. elif self.state == self.ACCUMULATING_1:
  38. return "gathering values on position one"
  39. elif self.state == self.FINISHED_POS_1:
  40. return "finished gathering values from position one"
  41. elif self.state == self.READY_ON_POS_2:
  42. return "ready on position two"
  43. elif self.state == self.ACCUMULATING_2:
  44. return "gathering values on position two"
  45. elif self.state == self.FINISHED_POS_2:
  46. return "calculating calibration values"
  47. elif self.state == self.CALIBRATION_DONE:
  48. return "calibration done"
  49. def next_state(self):
  50. if self.state < 7:
  51. self.state += 1
  52. print(self.state_clearname())
  53. def add_value(self):
  54. self.value_count += 1
  55. def return_state(self):
  56. return self.state
  57. def return_value_count(self):
  58. return self.value_count
  59. def reset_state(self):
  60. self.state = 0
  61. def reset_value_count(self):
  62. self.value_count = 0
  63. def main():
  64. up_queue = queue.Queue()
  65. down_queue = queue.Queue()
  66. calibration_sate = CalibrationStateMashine()
  67. ac_sensor = sensors.AcusticSensor(conf,up_queue,down_queue,calibration_sate)
  68. sensor_thread = threading.Thread(target=ac_sensor.start)
  69. ui_thread = threading.Thread(target=mainWindow.start_mainwindow, args=(up_queue,down_queue,calibration_sate))
  70. sensor_thread.start()
  71. ui_thread.start()
  72. try:
  73. while True:
  74. time.sleep(1)
  75. except KeyboardInterrupt:
  76. print("stop")
  77. except Exception as e:
  78. print("Error: ",e)
  79. finally:
  80. down_queue.put("stop")
  81. main()