DCS/ruiyiweiUX/Assets/Scripts/Components/SerialStatusMonitor.cs

185 lines
5.8 KiB
C#
Raw Permalink Normal View History

2026-06-09 13:59:11 +08:00
// using UnityEngine;
// using UnityEngine.UI;
// using TMPro;
// /// <summary>
// /// 串口通信状态监控器
// /// 用于在UI上显示串口连接状态和通信质量
// /// </summary>
// public class SerialStatusMonitor : MonoBehaviour
// {
// [Header("状态显示")]
// public Image StatusIndicator; // 状态指示灯
// public TextMeshProUGUI StatusText; // 状态文本
// public TextMeshProUGUI ConnectionInfo; // 连接信息
// public TextMeshProUGUI DataRate; // 数据传输速率
// [Header("状态颜色")]
// public Color ConnectedColor = Color.green;
// public Color DisconnectedColor = Color.red;
// public Color ErrorColor = Color.yellow;
// private DCX.Communication.DCSSerialManager _serialManager;
// private int _dataPacketsReceived = 0;
// private float _lastDataRateUpdate = 0f;
// private string _lastError = "";
// void Start()
// {
// // 查找DCS串口管理器
// _serialManager = FindObjectOfType<DCX.Communication.DCSSerialManager>();
// if (_serialManager != null)
// {
// // 订阅串口事件
// _serialManager.OnConnected += OnSerialConnected;
// _serialManager.OnDisconnected += OnSerialDisconnected;
// _serialManager.OnError += OnSerialError;
// _serialManager.OnHeartbeatReceived += OnDataReceived;
// _serialManager.OnRawDataReceived += OnRawDataReceived;
// }
// // 初始状态
// UpdateStatus(SerialStatus.Disconnected, "未连接");
// // 开始定时更新数据速率
// InvokeRepeating(nameof(UpdateDataRate), 1f, 1f);
// }
// private void OnSerialConnected()
// {
// UpdateStatus(SerialStatus.Connected, "已连接");
// if (ConnectionInfo != null)
// {
// ConnectionInfo.text = $"串口: 已连接\n协议: DCS通信协议";
// }
// }
// private void OnSerialDisconnected()
// {
// UpdateStatus(SerialStatus.Disconnected, "连接断开");
// if (ConnectionInfo != null)
// {
// ConnectionInfo.text = "串口: 未连接";
// }
// }
// private void OnSerialError(string error)
// {
// UpdateStatus(SerialStatus.Error, $"错误: {error}");
// _lastError = error;
// if (ConnectionInfo != null)
// {
// ConnectionInfo.text = $"串口: 错误\n{error}";
// }
// }
// private void OnDataReceived(DCX.Communication.DCSSerialManager.HeartbeatData data)
// {
// _dataPacketsReceived++;
// }
// private void OnRawDataReceived(byte[] data)
// {
// // 记录原始数据接收
// _dataPacketsReceived++;
// }
// private void UpdateStatus(SerialStatus status, string message)
// {
// if (StatusIndicator != null)
// {
// StatusIndicator.color = status switch
// {
// SerialStatus.Connected => ConnectedColor,
// SerialStatus.Disconnected => DisconnectedColor,
// SerialStatus.Error => ErrorColor,
// _ => DisconnectedColor
// };
// }
// if (StatusText != null)
// {
// StatusText.text = message;
// StatusText.color = status switch
// {
// SerialStatus.Connected => ConnectedColor,
// SerialStatus.Disconnected => Color.white,
// SerialStatus.Error => ErrorColor,
// _ => Color.white
// };
// }
// }
// private void UpdateDataRate()
// {
// if (DataRate != null)
// {
// float timeDelta = Time.time - _lastDataRateUpdate;
// if (timeDelta > 0)
// {
// float packetsPerSecond = _dataPacketsReceived / timeDelta;
// DataRate.text = $"数据: {packetsPerSecond:F1} 包/秒";
// }
// }
// _dataPacketsReceived = 0;
// _lastDataRateUpdate = Time.time;
// }
// /// <summary>
// /// 手动触发连接测试
// /// </summary>
// public void TestConnection()
// {
// if (_serialManager != null)
// {
// UpdateStatus(SerialStatus.Disconnected, "测试连接...");
// // 这里可以触发重连或连接测试
// _serialManager.Connect();
// }
// }
// /// <summary>
// /// 获取详细状态信息
// /// </summary>
// public string GetDetailedStatus()
// {
// if (_serialManager == null)
// {
// return "串口管理器未找到";
// }
// var status = new System.Text.StringBuilder();
// status.AppendLine("=== DCS串口状态 ===");
// status.AppendLine($"管理器状态: {(_serialManager.enabled ? "启用" : "禁用")}");
// status.AppendLine($"数据包计数: {_dataPacketsReceived}");
// if (!string.IsNullOrEmpty(_lastError))
// {
// status.AppendLine($"最后错误: {_lastError}");
// }
// return status.ToString();
// }
// void OnDestroy()
// {
// // 清理事件订阅
// if (_serialManager != null)
// {
// _serialManager.OnConnected -= OnSerialConnected;
// _serialManager.OnDisconnected -= OnSerialDisconnected;
// _serialManager.OnError -= OnSerialError;
// _serialManager.OnHeartbeatReceived -= OnDataReceived;
// _serialManager.OnRawDataReceived -= OnRawDataReceived;
// }
// }
// private enum SerialStatus
// {
// Connected,
// Disconnected,
// Error
// }
// }