message_handler.py 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. from .connect_manager import ConnectionManager
  2. from models import WebSocket
  3. import json, asyncio
  4. from mcu.DeviceControl import DeviceControl, checkMcuConnection
  5. from mcu.BlueToothMode import BlueToothMode
  6. from databases import DeviceConfig,SqlQuery,CRUD
  7. from mcu.capture.module_digicam import DigiCam
  8. # socket消息发送逻辑处理方法
  9. async def handlerSend(
  10. manager: ConnectionManager, receiveData: str, websocket: WebSocket
  11. ):
  12. loop = asyncio.get_event_loop()
  13. receiveData = json.loads(receiveData)
  14. # 处理消息发送逻辑
  15. receiveData = json.loads(receiveData.get("text"))
  16. jsonType = receiveData.get("type")
  17. code = receiveData.get("code")
  18. msg = receiveData.get("msg")
  19. data = receiveData.get("data")
  20. print("receiveData", receiveData)
  21. print("jsonType", jsonType)
  22. match jsonType:
  23. case "ping":
  24. """发送心跳"""
  25. data = manager.jsonMessage("pong")
  26. await manager.send_personal_message(data, websocket)
  27. case "pong":
  28. """发送心跳"""
  29. pass
  30. case "forward_message":
  31. data = receiveData.get("data")
  32. dictMsg = {"code":code,"msg":msg,"data":data}
  33. await manager.broadcast(dictMsg)
  34. case "connect_mcu":
  35. device_ctrl = DeviceControl(websocket_manager=manager)
  36. # if device_ctrl.serial_ins.check_connect():
  37. # print("未连接")
  38. loop.create_task(checkMcuConnection(device_ctrl), name="mcu")
  39. case "connect_bluetooth":
  40. blue_tooth = BlueToothMode(websocket_manager=manager)
  41. # await blue_tooth.main_func()
  42. print("连接蓝牙信息")
  43. loop.create_task(blue_tooth.main_func(), name="blue_tooth")
  44. # loop.close()
  45. case "init_mcu":
  46. device_ctrl = DeviceControl(websocket_manager=manager)
  47. loop.create_task(device_ctrl.initDevice(), name="init_mcu")
  48. case "control_mcu":
  49. device_name = data.get("device_name")
  50. value = data.get("value")
  51. if (device_name == "" or device_name == None) or (
  52. value == "" or value == None
  53. ):
  54. data = manager.jsonMessage(code=1,msg="参数错误")
  55. await manager.send_personal_message(data, websocket)
  56. return
  57. device_ctrl = DeviceControl(websocket_manager=manager)
  58. device_ctrl.controlDevice(device_name, value)
  59. case "run_mcu":
  60. try:
  61. # 判断拍照软件是否初始化
  62. digicam = DigiCam()
  63. digicam.getCaptureFolderPath()
  64. except:
  65. data = manager.jsonMessage(code=1, msg="digicam未初始化,请检查")
  66. await manager.send_personal_message(data, websocket)
  67. return
  68. action_info = data.get("action", "执行左脚程序")
  69. goods_art_no = data.get("goods_art_no", None)
  70. if goods_art_no == None or goods_art_no =="":
  71. # 判断货号是否存在
  72. data = manager.jsonMessage(code=1, msg="goods_art_no不能为空")
  73. await manager.send_personal_message(data, websocket)
  74. return
  75. session = SqlQuery()
  76. crud = CRUD(DeviceConfig)
  77. condtions = {"mode_type": action_info, "action_status": True}
  78. all_devices = crud.read_all(
  79. session, conditions=condtions, order_by="action_index", ascending=True
  80. )
  81. if len(all_devices) == 0:
  82. # 判断是否有可用配置
  83. data = manager.jsonMessage(code=1, msg="当前没有可用配置")
  84. await manager.send_personal_message(data, websocket)
  85. return
  86. action_list = [device.model_dump() for device in all_devices]
  87. print("action_list", action_list)
  88. device_ctrl = DeviceControl(websocket_manager=manager)
  89. loop.create_task(
  90. device_ctrl.run_mcu_config(action_list, goods_art_no, action_info),
  91. name="run_mcu_config",
  92. )
  93. case _:
  94. data = manager.jsonMessage(code=1, msg="未知消息")
  95. await manager.send_personal_message(data, websocket)
  96. return