using System;using System.IO;using System.Linq;using System.Windows.Forms;using System.Drawing;namespace transformation{public partial class DebugMainForm : Form{private UsbDeviceDetector _detector;private SlotMappingManager _slotMappingManager;private TextBox _debugLog;public DebugMainForm(){this.Text = "调试版主窗体";this.Size = new System.Drawing.Size(800, 600);this.StartPosition = FormStartPosition.CenterScreen;}private void DebugMainForm_Load(object sender, EventArgs e){// 初始化USB检测器_detector = new UsbDeviceDetector();_detector.DeviceInserted += Detector_DeviceInserted;_detector.DeviceRemoved += Detector_DeviceRemoved;_detector.Start();LogDebug("USB检测器已启动");// 初始化插槽映射管理器_slotMappingManager = new SlotMappingManager();// 创建调试日志框_debugLog = new TextBox();_debugLog.Multiline = true;_debugLog.ScrollBars = ScrollBars.Vertical;_debugLog.Dock = DockStyle.Bottom;_debugLog.Height = 200;_debugLog.Font = new Font("Consolas", 10);this.Controls.Add(_debugLog);// 初始化UIInitializeUI();UpdateSlotMappingsDisplay();}private void InitializeUI(){LogDebug("初始化UI...");// 创建插槽显示面板Panel slotPanel = new Panel();slotPanel.Name = "slotPanel";slotPanel.Location = new System.Drawing.Point(10, 10);slotPanel.Size = new System.Drawing.Size(760, 300);slotPanel.BackColor = System.Drawing.Color.LightGray;this.Controls.Add(slotPanel);// 创建20个插槽显示控件(4行5列)int rowHeight = 60;int colWidth = 150;for (int i = 0; i < 20; i++){int row = i / 5; // 行号 (0-3)int col = i % 5; // 列号 (0-4)string slotName = "插槽" + (i + 1);string displayName = _slotMappingManager.GetSlotDisplayName(slotName);// 插槽组面板RoundedPanel slotGroupPanel = new RoundedPanel();slotGroupPanel.Name = "slotGroupPanel" + (i + 1);slotGroupPanel.Location = new System.Drawing.Point(col * colWidth + 10, row * rowHeight + 10);slotGroupPanel.Size = new System.Drawing.Size(140, 50);slotGroupPanel.BackColor = System.Drawing.Color.White;slotGroupPanel.BorderColor = System.Drawing.Color.LightBlue;slotGroupPanel.BorderWidth = 2;slotGroupPanel.BorderRadius = 15;slotGroupPanel.GradientTop = System.Drawing.Color.White;slotGroupPanel.GradientBottom = System.Drawing.Color.FromArgb(240, 248, 255); // 浅蓝白色slotPanel.Controls.Add(slotGroupPanel);// 插槽标题Label slotTitleLabel = new Label();slotTitleLabel.Name = "slotTitleLabel" + (i + 1);slotTitleLabel.Text = displayName;slotTitleLabel.Location = new System.Drawing.Point(5, 5);slotTitleLabel.Size = new System.Drawing.Size(130, 20);slotTitleLabel.Font = new System.Drawing.Font("微软雅黑", 8, FontStyle.Bold);slotTitleLabel.TextAlign = ContentAlignment.MiddleCenter;slotGroupPanel.Controls.Add(slotTitleLabel);// 插槽状态Label slotStatusLabel = new Label();slotStatusLabel.Name = "slotStatusLabel" + (i + 1);slotStatusLabel.Text = "未工作";slotStatusLabel.Location = new System.Drawing.Point(5, 25);slotStatusLabel.Size = new System.Drawing.Size(130, 20);slotStatusLabel.Font = new System.Drawing.Font("微软雅黑", 8);slotStatusLabel.TextAlign = ContentAlignment.MiddleCenter;slotStatusLabel.ForeColor = System.Drawing.Color.Gray;slotGroupPanel.Controls.Add(slotStatusLabel);}LogDebug("UI初始化完成");}private void Detector_DeviceInserted(object sender, UsbDeviceEventArgs e){LogDebug("[设备插入事件] 驱动器: " + e.DriveLetter + ", 设备ID: " + e.DeviceId);if (InvokeRequired){Invoke(new EventHandler<UsbDeviceEventArgs>(Detector_DeviceInserted), sender, e);}else{UpdateSlotStatus(e.DriveLetter, true);}}private void Detector_DeviceRemoved(object sender, UsbDeviceEventArgs e){LogDebug("[设备移除事件] 驱动器: " + e.DriveLetter);if (InvokeRequired){Invoke(new EventHandler<UsbDeviceEventArgs>(Detector_DeviceRemoved), sender, e);}else{UpdateSlotStatus(e.DriveLetter, false);}}private void UpdateSlotStatus(string driveLetter, bool isConnected){LogDebug("更新插槽状态 - 驱动器: " + driveLetter + ", 连接: " + isConnected);// 更新所有映射到此驱动器的插槽状态for (int i = 1; i <= 20; i++){string slotName = "插槽" + i;string mappedDrive = _slotMappingManager.GetSlotMapping(slotName);LogDebug("检查插槽 " + i + " - 映射驱动器: '" + mappedDrive + "', 当前驱动器: '" + driveLetter + "'");// 如果此插槽映射到当前驱动器if (!string.IsNullOrEmpty(mappedDrive) && mappedDrive.Equals(driveLetter, StringComparison.OrdinalIgnoreCase)){LogDebug("匹配插槽 " + i + " - 更新状态");// 查找对应的插槽控件并更新状态Panel slotPanel = this.Controls["slotPanel"] as Panel;if (slotPanel != null){RoundedPanel slotGroupPanel = slotPanel.Controls["slotGroupPanel" + i] as RoundedPanel;if (slotGroupPanel != null){// 更新状态标签Label statusLabel = slotGroupPanel.Controls["slotStatusLabel" + i] as Label;if (statusLabel != null){if (isConnected){statusLabel.Text = "充电中";statusLabel.ForeColor = System.Drawing.Color.Green;LogDebug("插槽 " + i + " 状态更新为: 充电中");}else{statusLabel.Text = "未工作";statusLabel.ForeColor = System.Drawing.Color.Gray;LogDebug("插槽 " + i + " 状态更新为: 未工作");}}}else{LogDebug("未找到插槽组面板 " + i);}}else{LogDebug("未找到slotPanel容器");}}}}private void UpdateSlotMappingsDisplay(){LogDebug("更新插槽映射显示");// 更新所有插槽的映射显示信息for (int i = 1; i <= 20; i++){string slotName = "插槽" + i;string mappedDrive = _slotMappingManager.GetSlotMapping(slotName);LogDebug("插槽 " + i + " 映射到: '" + mappedDrive + "'");}}private void LogDebug(string message){string logMessage = "[" + DateTime.Now.ToString("HH:mm:ss.fff") + "] " + message + "\r\n";if (_debugLog != null){if (_debugLog.InvokeRequired){_debugLog.Invoke(new Action<string>(msg => _debugLog.AppendText(msg)), logMessage);}else{_debugLog.AppendText(logMessage);}// 保持滚动到最后_debugLog.SelectionStart = _debugLog.Text.Length;_debugLog.ScrollToCaret();}else{Console.WriteLine(logMessage);}}[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new DebugMainForm());}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。