message_handler.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. # socket消息发送逻辑处理方法
  7. async def handlerSend(
  8. manager: ConnectionManager, receiveData: str, websocket: WebSocket
  9. ):
  10. loop = asyncio.get_event_loop()
  11. receiveData = json.loads(receiveData)
  12. # 处理消息发送逻辑
  13. receiveData = json.loads(receiveData.get("text"))
  14. jsonType = receiveData.get("type")
  15. code = receiveData.get("code")
  16. msg = receiveData.get("msg")
  17. data = receiveData.get("data")
  18. print("receiveData", receiveData)
  19. print("jsonType", jsonType)
  20. match jsonType:
  21. case "ping":
  22. """发送心跳"""
  23. data = manager.jsonMessage("pong")
  24. await manager.send_personal_message(data, websocket)
  25. case "pong":
  26. """发送心跳"""
  27. pass
  28. case "forward_message":
  29. data = receiveData.get("data")
  30. dictMsg = {"code":code,"msg":msg,"data":data}
  31. await manager.broadcast(dictMsg)
  32. case "connect_mcu":
  33. device_ctrl = DeviceControl(websocket_manager=manager)
  34. # if device_ctrl.serial_ins.check_connect():
  35. # print("未连接")
  36. loop.create_task(checkMcuConnection(device_ctrl), name="mcu")
  37. case "connect_bluetooth":
  38. blue_tooth = BlueToothMode(websocket_manager=manager)
  39. # await blue_tooth.main_func()
  40. loop.create_task(blue_tooth.main_func(), name="blue_tooth")
  41. # loop.close()
  42. case "init_mcu":
  43. device_ctrl = DeviceControl(websocket_manager=manager)
  44. loop.create_task(device_ctrl.initDevice(), name="init_mcu")
  45. case "control_mcu":
  46. device_name = data.get("device_name")
  47. value = data.get("value")
  48. if (device_name == "" or device_name == None) or (
  49. value == "" or value == None
  50. ):
  51. data = manager.jsonMessage(code=1,msg="参数错误")
  52. await manager.send_personal_message(data, websocket)
  53. return
  54. device_ctrl = DeviceControl(websocket_manager=manager)
  55. device_ctrl.controlDevice(device_name, value)
  56. case "run_mcu_config":
  57. action = json.load(open('action.json',encoding='utf-8'))
  58. left_actions = action.get("actions")
  59. # data = manager.jsonMessage(code=0, msg="json消息", data=left_actions)
  60. # await manager.send_personal_message(data, websocket)
  61. device_ctrl = DeviceControl(websocket_manager=manager)
  62. loop.create_task(
  63. device_ctrl.run_mcu_config(left_actions, "123456789"),
  64. name="run_mcu_config",
  65. )
  66. case _:
  67. data = manager.jsonMessage(code=1, msg="未知消息")
  68. await manager.send_personal_message(data, websocket)
  69. return