You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.8 KiB

  1. ```mermaid
  2. ---
  3. title: Can总线服务类图
  4. ---
  5. classDiagram
  6. class A8kCanBusService {
  7. }
  8. class A8kCanBusConnection {
  9. + onOpen()
  10. + onMessage()
  11. + callcmd()
  12. + send()
  13. + moduleGetStatus()
  14. }
  15. class WebSocketClient
  16. A8kCanBusService --> A8kCanBusConnection
  17. A8kCanBusConnection --|> WebSocketClient
  18. ```
  19. ```mermaid
  20. ---
  21. title: 收到设备发送的包处理流程
  22. ---
  23. sequenceDiagram
  24. participant A8kCanBusConnection
  25. participant ByteArray
  26. participant A8kPacket
  27. participant ProcessContext
  28. participant AppEventBusService
  29. participant BlockingQueue
  30. A8kCanBusConnection ->>+ A8kCanBusConnection: onMessage
  31. A8kCanBusConnection ->>+ A8kCanBusConnection: processCanRxMessage()
  32. %% 将16进制字符串转换成二级制字节
  33. A8kCanBusConnection ->>+ ByteArray: hexStringToBytes()
  34. ByteArray ->>- A8kCanBusConnection: byte[]
  35. A8kCanBusConnection ->>+ A8kPacket: A8kPacket()
  36. A8kPacket ->>- A8kCanBusConnection: packet
  37. opt 包类型为PACKET_TYPE_ACK 或者 PACKET_TYPE_ERROR_ACK
  38. A8kCanBusConnection->>+ProcessContext: pushReceipt()
  39. %% 执行这边之前需要判断收到的包的序号是不是当前发送的包的序号相同,并且比较moduleId和commandId是否相等
  40. ProcessContext->>+BlockingQueue: add()
  41. BlockingQueue->>-ProcessContext: void
  42. ProcessContext->>-A8kCanBusConnection: void
  43. end
  44. opt 包类型为PACKET_TYPE_EVENT 处理设备上报事件
  45. A8kCanBusConnection->>+AppEventBusService: pushEvent()
  46. AppEventBusService->>-A8kCanBusConnection: void
  47. end
  48. A8kCanBusConnection->>-A8kCanBusConnection: void
  49. A8kCanBusConnection->>-A8kCanBusConnection: void
  50. ```