啊鑫
2025-07-22 038587a4ff652278fe22c2d03c1ebb602b95c5f0
Form1.cs
@@ -1,4 +1,5 @@
using GSModbus.Config;
using GSModbus.Database;
namespace GSModbus
{
@@ -37,6 +38,11 @@
            InitializeConfigManager();
            SetupEventHandlers();
            UpdateConnectionStatus(false);
            // 初始化数据库状态
            lblDatabaseStatus.Text = "未检测";
            lblDatabaseStatus.ForeColor = Color.Gray;
            btnTestDatabase.Enabled = false;
            
            // 尝试加载默认配置
            LoadDefaultConfigurationAsync();
@@ -81,6 +87,7 @@
            btnConnect.Click += BtnConnect_Click;
            btnDisconnect.Click += BtnDisconnect_Click;
            btnClearLog.Click += BtnClearLog_Click;
            btnTestDatabase.Click += BtnTestDatabase_Click;
        }
        #endregion
@@ -151,6 +158,9 @@
                LogMessage($"   PLC地址: {e.Configuration.Connection.IpAddress}:{e.Configuration.Connection.Port}");
                LogMessage($"   数据字段: {GetTotalFieldCount(e.Configuration)} 个");
                
                // 更新数据库状态
                UpdateDatabaseStatus(e.Configuration.Database);
                // 启用连接按钮
                btnConnect.Enabled = true;
            }
@@ -175,6 +185,11 @@
            lblConfigPath.Text = "配置文件错误";
            lblConfigPath.ForeColor = Color.Red;
            btnConnect.Enabled = false;
            // 重置数据库状态
            lblDatabaseStatus.Text = "未检测";
            lblDatabaseStatus.ForeColor = Color.Gray;
            btnTestDatabase.Enabled = false;
            
            LogMessage($"❌ 配置错误: {e.ErrorMessage}");
        }
@@ -294,6 +309,58 @@
            txtLog.Clear();
            _dataReceiveCount = 0;
            lblDataCount.Text = "数据接收次数: 0";
        }
        /// <summary>
        /// 数据库测试按钮点击事件
        /// </summary>
        private async void BtnTestDatabase_Click(object? sender, EventArgs e)
        {
            if (_configManager?.CurrentConfiguration?.Database == null)
            {
                LogMessage("❌ 请先加载包含数据库配置的配置文件");
                MessageBox.Show("请先选择并加载包含数据库配置的配置文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            try
            {
                btnTestDatabase.Enabled = false;
                btnTestDatabase.Text = "测试中...";
                lblDatabaseStatus.Text = "测试中...";
                lblDatabaseStatus.ForeColor = Color.Orange;
                LogMessage("🔍 正在测试数据库连接...");
                var dbConfig = _configManager.CurrentConfiguration.Database;
                var (success, message) = await DatabaseManager.TestConnectionAsync(dbConfig);
                if (success)
                {
                    lblDatabaseStatus.Text = "连接成功";
                    lblDatabaseStatus.ForeColor = Color.Green;
                    LogMessage($"✅ 数据库连接测试成功");
                    LogMessage($"   {message}");
                }
                else
                {
                    lblDatabaseStatus.Text = "连接失败";
                    lblDatabaseStatus.ForeColor = Color.Red;
                    LogMessage($"❌ 数据库连接测试失败: {message}");
                }
            }
            catch (Exception ex)
            {
                lblDatabaseStatus.Text = "测试异常";
                lblDatabaseStatus.ForeColor = Color.Red;
                LogMessage($"❌ 数据库连接测试异常: {ex.Message}");
                MessageBox.Show($"数据库连接测试异常: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                btnTestDatabase.Text = "测试数据库";
                btnTestDatabase.Enabled = true;
            }
        }
        /// <summary>
@@ -507,6 +574,35 @@
            lblStats.Text = stats.GetSummary();
        }
        /// <summary>
        /// 更新数据库状态显示
        /// </summary>
        /// <param name="dbConfig">数据库配置</param>
        private void UpdateDatabaseStatus(DatabaseConfig? dbConfig)
        {
            if (dbConfig == null)
            {
                lblDatabaseStatus.Text = "未配置";
                lblDatabaseStatus.ForeColor = Color.Gray;
                btnTestDatabase.Enabled = false;
                LogMessage("   数据库: 未配置");
            }
            else if (!dbConfig.Enabled)
            {
                lblDatabaseStatus.Text = "已禁用";
                lblDatabaseStatus.ForeColor = Color.Gray;
                btnTestDatabase.Enabled = false;
                LogMessage("   数据库: 已禁用");
            }
            else
            {
                lblDatabaseStatus.Text = "未检测";
                lblDatabaseStatus.ForeColor = Color.Orange;
                btnTestDatabase.Enabled = true;
                LogMessage($"   数据库: {dbConfig.Type} - 已配置,可测试连接");
            }
        }
        #endregion
        #region 辅助方法