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.
1.8 KiB
1.8 KiB
---
title: Can总线服务类图
---
classDiagram
class A8kCanBusService {
}
class A8kCanBusConnection {
+ onOpen()
+ onMessage()
+ callcmd()
+ send()
+ moduleGetStatus()
}
class WebSocketClient
A8kCanBusService --> A8kCanBusConnection
A8kCanBusConnection --|> WebSocketClient
---
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