// using UnityEngine;
// using UnityEditor;
// using System;
// ///
// /// DCS串口通信配置和测试窗口
// ///
// public class DCSSerialConfigWindow : EditorWindow
// {
// private string portName = "COM1";
// private int baudRate = 115200;
// private bool autoConnect = true;
// private ISerialCommunicationService serialService;
// private ISystemSettingsService settingsService;
// private Vector2 scrollPosition;
// private string logText = "";
// [MenuItem("DCS/串口通信配置")]
// public static void ShowWindow()
// {
// GetWindow("DCS串口通信配置");
// }
// void OnEnable()
// {
// // 从系统设置加载配置
// if (Application.isPlaying)
// {
// settingsService = ServiceLocator.Get();
// if (settingsService != null)
// {
// portName = settingsService.SerialPortName;
// baudRate = settingsService.SerialBaudRate;
// autoConnect = settingsService.EnableSerialCommunication;
// }
// serialService = ServiceLocator.Get();
// }
// }
// void OnGUI()
// {
// GUILayout.Label("DCS串口通信配置", EditorStyles.boldLabel);
// EditorGUILayout.Space();
// // 串口配置区域
// GUILayout.Label("串口设置", EditorStyles.boldLabel);
// portName = EditorGUILayout.TextField("端口名称:", portName);
// baudRate = EditorGUILayout.IntField("波特率:", baudRate);
// autoConnect = EditorGUILayout.Toggle("自动连接:", autoConnect);
// EditorGUILayout.Space();
// // 保存配置按钮
// if (GUILayout.Button("保存配置到系统设置"))
// {
// SaveSettings();
// }
// EditorGUILayout.Space();
// // 运行时控制区域
// if (Application.isPlaying)
// {
// GUILayout.Label("运行时控制", EditorStyles.boldLabel);
// if (serialService != null)
// {
// EditorGUILayout.LabelField("连接状态:", serialService.IsConnected ? "已连接" : "未连接");
// EditorGUILayout.LabelField("握手状态:", serialService.IsHandshakeCompleted ? "已完成" : "未完成");
// EditorGUILayout.BeginHorizontal();
// if (GUILayout.Button("连接"))
// {
// TestConnection();
// }
// if (GUILayout.Button("断开"))
// {
// DisconnectSerial();
// }
// EditorGUILayout.EndHorizontal();
// EditorGUILayout.BeginHorizontal();
// if (GUILayout.Button("发送握手"))
// {
// SendHandshake();
// }
// if (GUILayout.Button("时间同步"))
// {
// SendTimeSync();
// }
// EditorGUILayout.EndHorizontal();
// EditorGUILayout.Space();
// // 测试报警按钮
// GUILayout.Label("测试报警", EditorStyles.boldLabel);
// EditorGUILayout.BeginHorizontal();
// if (GUILayout.Button("电池低电量"))
// {
// SendTestAlarm(0x21, 1);
// }
// if (GUILayout.Button("BFI异常"))
// {
// SendTestAlarm(0x32, 2);
// }
// EditorGUILayout.EndHorizontal();
// EditorGUILayout.BeginHorizontal();
// if (GUILayout.Button("激光器异常"))
// {
// SendTestAlarm(0x33, 2);
// }
// if (GUILayout.Button("通信异常"))
// {
// SendTestAlarm(0x34, 2);
// }
// EditorGUILayout.EndHorizontal();
// }
// else
// {
// EditorGUILayout.HelpBox("串口通信服务未初始化", MessageType.Warning);
// }
// }
// else
// {
// EditorGUILayout.HelpBox("请在运行时使用此功能", MessageType.Info);
// }
// EditorGUILayout.Space();
// // 协议信息区域
// GUILayout.Label("DCS协议信息", EditorStyles.boldLabel);
// EditorGUILayout.HelpBox(
// "DCS项目串口通信协议v1.0.0\\n" +
// "• 波特率: 115200 bps\\n" +
// "• 数据位: 8, 停止位: 1, 校验: None\\n" +
// "• 帧格式: AA 55 [CMD] [LEN] [DATA] [CHK] 0D 0A\\n" +
// "• 支持握手、心跳、数据上报、报警控制等功能",
// MessageType.Info);
// // 报警代码参考
// EditorGUILayout.Space();
// GUILayout.Label("报警代码参考", EditorStyles.boldLabel);
// scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, GUILayout.Height(150));
// EditorGUILayout.LabelField("0x11", "电池电量低(<40%) - 低优先级");
// EditorGUILayout.LabelField("0x21", "电池电量低(<20%) - 中优先级");
// EditorGUILayout.LabelField("0x31", "电池电量空(<5%) - 高优先级");
// EditorGUILayout.LabelField("0x32", "BFI数值异常 - 高优先级");
// EditorGUILayout.LabelField("0x22", "激光器温度异常 - 中优先级");
// EditorGUILayout.LabelField("0x33", "激光器工作异常 - 高优先级");
// EditorGUILayout.LabelField("0x34", "通信异常 - 高优先级");
// EditorGUILayout.LabelField("0x35", "电池故障 - 高优先级");
// EditorGUILayout.LabelField("0x12", "交流电未连接 - 低优先级");
// EditorGUILayout.EndScrollView();
// }
// private void SaveSettings()
// {
// if (Application.isPlaying && settingsService != null)
// {
// settingsService.SerialPortName = portName;
// settingsService.SerialBaudRate = baudRate;
// settingsService.EnableSerialCommunication = autoConnect;
// Debug.Log("串口设置已保存");
// }
// else
// {
// // 在编辑器模式下保存到EditorPrefs
// EditorPrefs.SetString("DCS_SerialPort", portName);
// EditorPrefs.SetInt("DCS_BaudRate", baudRate);
// EditorPrefs.SetBool("DCS_AutoConnect", autoConnect);
// Debug.Log("串口设置已保存到编辑器偏好设置");
// }
// }
// private void TestConnection()
// {
// if (serialService != null)
// {
// if (serialService.Connect(portName, baudRate))
// {
// Debug.Log($"正在连接串口: {portName} @ {baudRate}");
// }
// else
// {
// Debug.LogError("串口连接失败");
// }
// }
// }
// private void DisconnectSerial()
// {
// if (serialService != null)
// {
// serialService.Disconnect();
// Debug.Log("串口已断开");
// }
// }
// private void SendHandshake()
// {
// if (serialService != null && serialService.IsConnected)
// {
// serialService.SendHandshakeRequest();
// Debug.Log("已发送握手请求");
// }
// }
// private void SendTimeSync()
// {
// if (serialService != null && serialService.IsConnected)
// {
// serialService.SendTimeSync(DateTime.Now);
// Debug.Log("已发送时间同步");
// }
// }
// private void SendTestAlarm(byte alarmCode, byte priority)
// {
// if (serialService != null && serialService.IsConnected)
// {
// serialService.SendAlarmCommand(alarmCode, priority, 1);
// Debug.Log($"已发送测试报警: 0x{alarmCode:X2}");
// }
// }
// }