本项目是一个基于 Java Swing 的桌面应用程序,用于模拟和监控游泳池中佩戴式设备的状态。系统能够实时显示多个设备的位置、电量,并在设备发生溺水或电量不足等异常情况时发出警报。
- 设备状态监控: 实时显示每个设备的 ID、电量百分比、在泳池中的坐标 (X,Y) 以及当前状态(正常、电量低、溺水)。
- 图形用户界面 (GUI): 使用 Java Swing 构建,以表格形式清晰展示所有设备信息。
- 声音警报: 当设备状态变为“溺水”时,系统会自动播放警报声音。
- 登录验证: 应用程序启动时需要输入用户名和密码进行登录。
- 客户端/服务器架构:
- 服务器端 (
Server.java): 管理设备状态,监听客户端连接,更新设备信息。 - 设备模拟 (
Device.java): 每个设备作为一个独立线程运行,模拟状态变化(如信号丢失导致溺水、电量变化)。 - 客户端通信 (
DeviceHandler.java): 处理来自模拟客户端(或其他外部设备)的数据更新。
- 服务器端 (
- 信号丢失检测: 如果设备在特定时间内(默认为30秒)没有向服务器发送信号,则其状态将自动更新为“溺水”。
- 模拟信号阻塞: 提供一个按钮来手动模拟特定设备(Device0)的信号丢失,以测试溺水警报功能。
- 语言: Java
- GUI: Java Swing, FlatLaf (用于界面美化)
- 音频播放:
jmp123.jar库 (用于播放 MP3 格式的警报声) - 并发: Java Threads (用于处理多个设备和服务器监听)
- 网络: Java Sockets (用于客户端-服务器通信)
swimSystem/
├── docs/
│ └── report.md
│ └── images/
│ └── 1.png
│ └── 2.png
├── lib/ # 依赖库目录
│ ├── jmp123.jar # MP3播放库
│ └── flatla-3.6.jar # FlatLaf UI主题库
├── src/ # 源代码目录
│ ├── Main.java # 主应用程序入口,包含UI设置和服务器启动
│ ├── sounds/ # 声音文件目录
│ │ └── alert.mp3 # 警报声音文件
└── README.md # 本文件
- Java Development Kit (JDK) 8 或更高版本。
- 确保
jmp123.jar和flatla-3.6.jar文件位于lib目录下,并且在编译和运行时已添加到项目的类路径中。
- 用户名:
admin - 密码:
password
当前项目主要包含服务器端和设备模拟逻辑。客户端(即发送设备数据的实体)需要单独实现。服务器在端口 8888 上监听以下格式的TCP消息:
DeviceID Battery X Y
例如: Device0 85 100 150
其中:
DeviceID: 设备的唯一标识符 (例如,Device0,Device1)Battery: 设备的当前电量 (整数, 0-100)X: 设备在泳池中的X坐标 (整数)Y: 设备在泳池中的Y坐标 (整数)
您可以编写一个简单的脚本或程序来模拟客户端发送这些数据到 localhost:8888 以测试服务器的接收和处理功能。
- 警报声音文件
alert.mp3必须位于src/sounds/目录下,或者相应地更新Main.java中的ALARM_SOUND_FILE_PATH常量。 jmp123.jar是播放MP3所必需的。如果遇到音频播放问题,请检查类路径配置和库文件是否存在。- 防火墙设置可能会阻止服务器监听端口或客户端连接。
实现一个图形化的客户端模拟器- 更复杂的设备行为模拟。
- 将设备数据持久化到数据库。
Web界面或移动应用界面。认证机制。