using Aveva.ApplicationFramework;
using System;
using System.Windows.Forms;
using TellmePdmsPluging.Network;
namespace TellmePdmsPluging
{
public class TellmePdmsAddin : IAddin
{
private HttpServer _httpServer;
public string Name
{
get
{
return "TellmePdmsAddin";
}
}
public string Description
{
get
{
return "PDMS远程控制插件";
}
}
///
/// 程序打开时,会调用这个方法
///
///
public void Start(ServiceManager serviceManager)
{
try
{
// 记录启动日志
LogMessage("开始启动TellmePdms插件...");
// 启动HTTP服务器
_httpServer = new HttpServer(9001);
_httpServer.Start();
// 弹出成功提示
MessageBox.Show(
"TellmePdms插件已成功加载!\n" +
"HTTP服务器已启动,监听端口: 9001\n\n" +
"测试地址:\n" +
"- 健康检查: http://localhost:9001/health\n" +
"- 测试接口: http://localhost:9001/test",
"插件加载成功",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
LogMessage("TellmePdms插件启动成功");
}
catch (Exception ex)
{
string errorMsg = $"插件启动失败: {ex.Message}";
LogMessage($"ERROR: {errorMsg}\n{ex.StackTrace}");
MessageBox.Show(errorMsg, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
///
/// 程序关闭时,会调用这个方法
///
public void Stop()
{
try
{
LogMessage("开始停止TellmePdms插件...");
// 停止HTTP服务器
if (_httpServer != null)
{
_httpServer.Stop();
_httpServer.Dispose();
_httpServer = null;
}
LogMessage("TellmePdms插件已停止");
}
catch (Exception ex)
{
LogMessage($"插件停止时出错: {ex.Message}");
}
}
private void LogMessage(string message)
{
try
{
string logPath = @"C:\temp\pdms_plugin_log.txt";
string logEntry = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {message}\r\n";
System.IO.File.AppendAllText(logPath, logEntry);
}
catch { }
}
}
}