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.
|
|
```mermaid --- title: Can总线服务类图 --- classDiagram class A8kCanBusService { } class A8kCanBusConnection { + onOpen() + onMessage() + callcmd() + send() + moduleGetStatus() } class WebSocketClient A8kCanBusService --> A8kCanBusConnection A8kCanBusConnection --|> WebSocketClient
```
```mermaid --- title: 收到设备发送的包处理流程 --- sequenceDiagram participant A8kCanBusConnection participant ByteArray participant A8kPacket participant ProcessContext participant AppEventBusService participant BlockingQueue A8kCanBusConnection ->>+ A8kCanBusConnection: onMessage A8kCanBusConnection ->>+ A8kCanBusConnection: processCanRxMessage() %% 将16进制字符串转换成二级制字节 A8kCanBusConnection ->>+ ByteArray: hexStringToBytes() ByteArray ->>- A8kCanBusConnection: byte[] A8kCanBusConnection ->>+ A8kPacket: A8kPacket() A8kPacket ->>- A8kCanBusConnection: packet opt 包类型为PACKET_TYPE_ACK 或者 PACKET_TYPE_ERROR_ACK A8kCanBusConnection->>+ProcessContext: pushReceipt() %% 执行这边之前需要判断收到的包的序号是不是当前发送的包的序号相同,并且比较moduleId和commandId是否相等 ProcessContext->>+BlockingQueue: add() BlockingQueue->>-ProcessContext: void ProcessContext->>-A8kCanBusConnection: void end opt 包类型为PACKET_TYPE_EVENT 处理设备上报事件 A8kCanBusConnection->>+AppEventBusService: pushEvent() AppEventBusService->>-A8kCanBusConnection: void end A8kCanBusConnection->>-A8kCanBusConnection: void A8kCanBusConnection->>-A8kCanBusConnection: void ```
|