graph LR A[开始] --> B(连接WiFi) B --> C{是否连接成功?} C -->|是| D[启动定时器] C -->|否| B D --> E{是否采样完数据?} E -->|是| F[发送数据包] E -->|否| G[采样数据] F --> H{是否收到响应?} H -->|是| I[解析响应] H -->|否| F I --> J{是否需要控制手指舵机?} J -->|是| K[控制手指舵机] J -->|否| E K --> E
graph LR A[创建服务器套接字] --> B[绑定到指定端口] B --> C[监听客户端连接] C --> D[等待客户端连接] D --> |ESP32客户端连接请求| E[处理ESP32客户端连接] D --> |Flutter客户端连接请求| F[处理Flutter客户端连接] E --> G[等待ESP32客户端发送数据] G --> H[处理数据并发送预测结果] H --> I{是否有Flutter客户端连接?} I --> |是| J[发送预测结果到所有Flutter客户端] I --> |否| G J --> K{是否发送成功?} K --> |是| L[继续等待ESP32客户端发送数据] K --> |否| M[从连接列表中移除连接] F --> N[等待Flutter客户端发送数据] N --> O{是否有ESP32客户端连接?} O --> |是| P[处理数据] P --> Q{是否需要发送控制指令?} Q --> |是| R[发送控制指令到ESP32客户端] Q --> |否| N O --> |否| S[从连接列表中移除连接]
graph LR A[创建SharedPreferences实例] --> B[读取服务器IP地址和端口号] B --> C[连接服务器] C --> D{是否连接成功?} D --> |是| E[发送身份验证消息] D --> |否| F[显示连接失败提示] E --> F[显示连接成功提示] E --> G[等待服务器数据] G --> H{是否收到数据?} H --> |是| I[解析数据并更新UI] H --> |否| G I --> J[根据数据更新UI] J --> K{是否需要发送控制指令?} K --> |是| L[发送控制指令到服务器] K --> |否| G L --> M{是否发送成功?} M --> |是| G M --> |否| N[显示发送失败提示] F --> O[显示错误] O --> P[关闭连接并重试] N --> P P --> C