message_handler.py 3.7 KB

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