node.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import sys
  2. from PyQt5.QtWidgets import QWidget, QApplication,QMainWindow,QLabel
  3. from PyQt5.QtCore import Qt
  4. import window_screen_pyqt as ws
  5. import async_communication as CM
  6. import led
  7. import DatabaseSearch as DB
  8. import json
  9. import google.protobuf.text_format as tf
  10. import message_pb2 as message
  11. with open("./ui_config.json",'r',encoding='utf-8') as fp:
  12. config=json.load(fp)
  13. led_cfg=config["led"]
  14. db_cfg=config["db"]
  15. rabbitmq_cfg=config["rabbitmq"]
  16. node_id=config["entrance_id"]
  17. unit=config["unit"]
  18. prj_parameter=config.get("prj")
  19. #启动入口单片机,向rabbitmq发送数据,并接收关门请求
  20. #[消息服务器ip,port,用户,密码,状态交换机名称,状态消息key]
  21. statu_ex_keys=[["statu_ex","in_mcpu_%d_statu_port"%node_id],
  22. ["statu_ex","measure_%d_statu_port"%node_id]
  23. ]
  24. cpu_ex,cpu_key=statu_ex_keys[0]
  25. measure_ex,measure_key=statu_ex_keys[1]
  26. g_rabbitmq=CM.RabbitAsyncCommunicator(rabbitmq_cfg["ip"],rabbitmq_cfg["port"],
  27. rabbitmq_cfg["user"],rabbitmq_cfg["password"])
  28. g_rabbitmq.Init(None,statu_ex_keys)
  29. g_rabbitmq.start()
  30. #启动led
  31. led=led.EntranceLED(led_cfg["ip"],led_cfg['port'])
  32. def db_callback(suv,small):
  33. idle = False
  34. time_statu = g_rabbitmq._status.get(cpu_ex+":"+cpu_key)
  35. if not time_statu==None:
  36. if not time_statu.statu==None:
  37. icpu_statu = message.in_mcpu_statu()
  38. tf.Parse(time_statu.statu, icpu_statu)
  39. idle = icpu_statu.is_occupy == 2
  40. led.fresh_led(suv,small,idle)
  41. #启动数据库,绑定led与数据库
  42. DBSearcher=DB.DBSeacher(db_cfg["ip"],db_cfg["port"],db_cfg["database"],
  43. db_cfg["user"],db_cfg["password"],unit)
  44. DBSearcher.set_ledcallback(db_callback)
  45. DBSearcher.start()
  46. #启动界面
  47. #绑定单片机与界面
  48. images={"传感器超时":"./resource/arrows/传感器超时.png",
  49. "测绘超时":"./resource/arrows/测绘超时.png",
  50. "正确文字":"./resource/arrows/正确文字.png",
  51. "正确图片":"./resource/arrows/正确图片.png",
  52. "超宽车辆":"./resource/arrows/超宽车辆.png",
  53. "轴距超差":"./resource/arrows/轴距超差.png",
  54. "请调整":"./resource/arrows/请调整.png",
  55. "向前调整":"./resource/arrows/向前调整.png",
  56. "向后调整":"./resource/arrows/向后调整.png",
  57. "向左调整":"./resource/arrows/向左调整.png",
  58. "向右调整":"./resource/arrows/向右调整.png",
  59. "左前调整":"./resource/arrows/左前调整.png",
  60. "左后调整":"./resource/arrows/左后调整.png",
  61. "右前调整":"./resource/arrows/右前调整.png",
  62. "右后调整":"./resource/arrows/右后调整.png",
  63. "向左旋转":"./resource/arrows/向左旋转.png",
  64. "向右旋转":"./resource/arrows/向右旋转.png",
  65. "空闲":"./resource/arrows/空闲.png",
  66. "回正方向盘":"./resource/arrows/回正方向盘.png"}
  67. app = QApplication(sys.argv)
  68. frame = ws.Frame(images,prj_parameter,True)
  69. frame.resize(600, 900)
  70. frame.setWindowTitle("楚天大厦入口 %d 引导"%node_id)
  71. frame.show()
  72. frame.setWindowFlags(Qt.WindowMaximizeButtonHint|Qt.WindowCloseButtonHint)
  73. frame.showMaximized()
  74. g_rabbitmq.bind_statu_callback(cpu_ex,cpu_key,frame.receive_icpu)
  75. g_rabbitmq.bind_statu_callback(measure_ex,measure_key,frame.receive_measureInfo)
  76. app.exec()
  77. DBSearcher.close()
  78. g_rabbitmq.close()
  79. DBSearcher.join()
  80. g_rabbitmq.join()