classDiagram
class Device {
+connect(): Boolean
+stop()
+isConnected(): Boolean
+startMonitoring(interval: Long)
+stopMonitoring()
}
class SerialCommunication {
#context: Context
-portPath: String
#serialPort: SerialPort
#inputStream: InputStream
#outputStream: OutputStream
#scope: CoroutineScope
#isRunning: AtomicBoolean
-connected: Boolean
+connect(): Boolean
+stop()
+isConnected(): Boolean
#closeSerialPort()
#sendCommandAndGetResponse(command: ByteArray): ByteArray
+startMonitoring(interval: Long)
+stopMonitoring()
}
class HY128Device {
-TAG: String
-isMonitoring: AtomicBoolean
+startMonitoring(interval: Long)
+stopMonitoring()
-parseData(response: String): Float
-hexStringToByteArray(hexString: String): ByteArray
-bytesToHexString(bytes: ByteArray): String
}
class HY130eDevice {
-TAG: String
-isMonitoring: AtomicBoolean
+READ_NOISE_COMMAND: String
+startMonitoring(interval: Long)
+stopMonitoring()
-parseNoiseValue(response: String): Float
-hexStringToByteArray(hexString: String): ByteArray
-bytesToHexString(bytes: ByteArray): String
}
class MainActivity {
-device: Device
-dataCleanupManager: DataCleanupManager
-selectedDeviceType: String
+onCreate(savedInstanceState: Bundle)
-startSerialMonitoring()
+onDestroy()
+onRequestPermissionsResult()
}
%% 音频处理相关类
class AudioRecorder {
-isRecording: AtomicBoolean
-saveWavFiles: Boolean
-outputDirectory: File
+startRecording()
+stopRecording()
-processRecording()
-saveCurrentSlice()
}
class AudioFileProcessor {
-isProcessing: AtomicBoolean
-fileQueue: ConcurrentLinkedQueue
+submitFile(file: File)
-processFiles()
-processFile(file: File)
}
%% 数据管理相关类
class DataProcessor {
-dataDirCache: Map
+saveSecondData(data: NoiseData)
+saveHourData(data: NoiseData)
+saveDayData(data: NoiseData)
}
class DataCleanupManager {
-segmentCleanupThread: ScheduledExecutorService
-sliceCleanupThread: ScheduledExecutorService
+cleanup()
-cleanupSegmentData()
-cleanupSliceData()
}
%% 关系定义
MainActivity --> Device : uses
MainActivity --> DataCleanupManager : uses
MainActivity --> DeviceControlScreen : creates
MainActivity --> AudioTaggingApp : creates
Device <|.. SerialCommunication
SerialCommunication <|-- HY128Device
SerialCommunication <|-- HY130eDevice
MainActivity --> Device : uses
AudioRecorder --> AudioFileProcessor : uses
AudioFileProcessor --> DataProcessor : uses
DataProcessor --> DataCleanupManager : uses
本文章使用limfx的vscode插件快速发布