瀏覽代碼

增加WInForm控制台程序和监控程序。

Klosszhu 2 年之前
父節點
當前提交
a7971a1425
共有 29 個文件被更改,包括 1180 次插入80 次删除
  1. 二進制
      .vs/Fine.OPCDaClient/DesignTimeBuild/.dtbcache.v2
  2. 45 25
      Fine.HttpServer/HttpServer.cs
  3. 1 0
      Fine.HttpServer/HttpServerParams.cs
  4. 1 1
      Fine.IHttpServer/obj/Debug/Fine.IHttpServer.csproj.FileListAbsolute.txt
  5. 35 1
      Fine.OPCDaClient/App/Common/AppUtil.cs
  6. 0 1
      Fine.OPCDaClient/App/L5K_YP_HC.cs
  7. 1 1
      Fine.OPCDaClient/DAServerMgr.cs
  8. 15 1
      Fine.OPCDaClient/Fine.OPCDaClient.csproj
  9. 211 0
      Fine.OPCDaClient/Form1.Designer.cs
  10. 145 0
      Fine.OPCDaClient/Form1.cs
  11. 123 0
      Fine.OPCDaClient/Form1.resx
  12. 19 16
      Fine.OPCDaClient/Program.cs
  13. 2 1
      Fine.OPCDaClient/bin/Debug/config/httpserver.json
  14. 2 1
      Fine.OPCDaClient/config/httpserver.json
  15. 二進制
      Fine.OPCDaClient/obj/Debug/Fine.OPCDaClient.Form1.resources
  16. 2 0
      Fine.OPCDaClient/obj/Debug/Fine.OPCDaClient.csproj.FileListAbsolute.txt
  17. 28 3
      Fine.OPCDaClient9000/App/Common/AppUtil.cs
  18. 18 2
      Fine.OPCDaClient9000/Fine.OPCDaClient9000.csproj
  19. 211 0
      Fine.OPCDaClient9000/Form1.Designer.cs
  20. 169 0
      Fine.OPCDaClient9000/Form1.cs
  21. 123 0
      Fine.OPCDaClient9000/Form1.resx
  22. 14 15
      Fine.OPCDaClient9000/Program.cs
  23. 2 2
      Fine.OPCDaClient9000/bin/Debug/config/httpserver.json
  24. 2 2
      Fine.OPCDaClient9000/config/httpserver.json
  25. 二進制
      Fine.OPCDaClient9000/obj/Debug/Fine.OPCDaClient9000.Form1.resources
  26. 8 6
      Fine.OPCDaClient9000/obj/Debug/Fine.OPCDaClient9000.csproj.FileListAbsolute.txt
  27. 1 1
      Fine.Util/obj/Debug/Fine.Util.csproj.FileListAbsolute.txt
  28. 1 0
      MQTTClient/obj/Debug/MQTTClient.csproj.FileListAbsolute.txt
  29. 1 1
      OpcClientMqtt/obj/Debug/OpcClientMqtt.csproj.FileListAbsolute.txt

二進制
.vs/Fine.OPCDaClient/DesignTimeBuild/.dtbcache.v2


+ 45 - 25
Fine.HttpServer/HttpServer.cs

@@ -19,14 +19,16 @@ namespace Fine.HttpServer
     {
         HttpListener listener;
         HttpServerParams _serverParams;
+       public bool Status { get; set; } = false;
         public HttpServer(HttpServerParams serverparams)
         {
             _serverParams = serverparams;
+            listener = new HttpListener();
         }
         public void Start()
         {
             
-            listener = new HttpListener();            
+                    
             listener.Prefixes.Add("http://"+_serverParams.Host+":"+_serverParams.Port+"/");
             //listener.Prefixes.Add("https://" + _serverParams.Host + ":" + (_serverParams.Port + 1) + "/");
             if (_serverParams.SSL == true)
@@ -36,6 +38,7 @@ namespace Fine.HttpServer
             
             //启动监听器
             listener.Start();
+            Status = true;
             Console.WriteLine($"Start up Http Server:http://{_serverParams.Host}:{_serverParams.Port}");
             if (_serverParams.SSL == true)
             {
@@ -119,34 +122,39 @@ namespace Fine.HttpServer
             //var httpcontext = listener.GetContext();
 
             DateTime stime = DateTime.Now;
-            listener.BeginGetContext(Result, null);
-            var httpcontext=listener.EndGetContext(ar);
+            if (listener.IsListening)
+            {
+                listener.BeginGetContext(Result, null);
+                var httpcontext = listener.EndGetContext(ar);
 
-            httpcontext.Response.Headers.Add("Content-type", "text/html;charset=UTF-8");
-            httpcontext.Response.ContentEncoding = Encoding.UTF8;
+                httpcontext.Response.Headers.Add("Content-type", "text/html;charset=UTF-8");
+                httpcontext.Response.ContentEncoding = Encoding.UTF8;
 
-            httpcontext.Response.AppendHeader("Access-Control-Allow-Origin", "*");//后台跨域请求,通常设置为配置文件
-            httpcontext.Response.AddHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
-            httpcontext.Response.AppendHeader("Access-Control-Allow-Credentials", "true"); //后台跨域请求
-            //httpcontext.Response.AppendHeader("Server", "MyIIS");//后台跨域请求,通常设置为配置文件
-            httpcontext.Response.AppendHeader("Authorize", ConfigurationManager.AppSettings["auth"]);
+                httpcontext.Response.AppendHeader("Access-Control-Allow-Origin", "*");//后台跨域请求,通常设置为配置文件
+                httpcontext.Response.AddHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
+                httpcontext.Response.AppendHeader("Access-Control-Allow-Credentials", "true"); //后台跨域请求
+                                                                                               //httpcontext.Response.AppendHeader("Server", "MyIIS");//后台跨域请求,通常设置为配置文件
+                httpcontext.Response.AppendHeader("Authorize", ConfigurationManager.AppSettings["auth"]);
 
-            Fine.IHttpServer.HttpResult result = null;
-            try
-            {
-                result = ProcessRequest(httpcontext);
-            }
-            catch (Exception ee)
-            {
-                result = Fine.IHttpServer.HttpResult.CreateError(ee);
-            }
-            string json = JsonUtil.SerializeObject(result);
+                Fine.IHttpServer.HttpResult result = null;
+                try
+                {
+                    result = ProcessRequest(httpcontext);
+                }
+                catch (Exception ee)
+                {
+                    result = Fine.IHttpServer.HttpResult.CreateError(ee);
+                }
+                string json = JsonUtil.SerializeObject(result);
 
-            byte[] data = System.Text.Encoding.UTF8.GetBytes(json);
-            httpcontext.Response.OutputStream.Write(data,0,data.Length);
-            httpcontext.Response.OutputStream.Flush();
-            httpcontext.Response.OutputStream.Close();
-            Console.WriteLine($"process request cost {(DateTime.Now - stime).TotalMilliseconds}");
+                byte[] data = System.Text.Encoding.UTF8.GetBytes(json);
+                httpcontext.Response.OutputStream.Write(data, 0, data.Length);
+                httpcontext.Response.OutputStream.Flush();
+                httpcontext.Response.OutputStream.Close();
+                Console.WriteLine($"process request cost {(DateTime.Now - stime).TotalMilliseconds}");
+            }
+           
+           
         }
 
         private Fine.IHttpServer.HttpResult ProcessRequest(HttpListenerContext context)
@@ -236,5 +244,17 @@ namespace Fine.HttpServer
                 return default(T);
             }
         }
+
+
+        public void Close() {
+            if (Status)
+            {
+                listener.Stop();
+            }
+            Status = false;
+        }
+
+     
+
     }
 }

+ 1 - 0
Fine.HttpServer/HttpServerParams.cs

@@ -18,6 +18,7 @@ namespace Fine.HttpServer
         public int HttpsPort { get; set; } = 9002;
 
         public string CertPassword { get; set; } = "";
+        public string Service { get; set; }
 
     }
 }

+ 1 - 1
Fine.IHttpServer/obj/Debug/Fine.IHttpServer.csproj.FileListAbsolute.txt

@@ -28,7 +28,7 @@ I:\01-ProjectCode\Pro_QD\ZhuX\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\obj\D
 I:\01-ProjectCode\Pro_QD\ZhuX\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\obj\Debug\Fine.IHttpServer.csproj.AssemblyReference.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\bin\Debug\Fine.IHttpServer.dll
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\bin\Debug\Fine.IHttpServer.pdb
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\obj\Debug\Fine.IHttpServer.csproj.AssemblyReference.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\obj\Debug\Fine.IHttpServer.csproj.CoreCompileInputs.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\obj\Debug\Fine.IHttpServer.dll
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\obj\Debug\Fine.IHttpServer.pdb
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.IHttpServer\obj\Debug\Fine.IHttpServer.csproj.AssemblyReference.cache

+ 35 - 1
Fine.OPCDaClient/App/Common/AppUtil.cs

@@ -119,6 +119,34 @@ namespace Fine.OPCDaClient.Util
             return varIoModal;
         }
 
+        public static PLCResultAll Test(string v)
+        {
+            var data = Read<float>(v);
+            if (data == 1)
+            {
+                return new PLCResultAll
+                {
+                    Sucessful = true,
+                    Message = "读取成功",
+                    PlcResults = new List<DataItem> {
+           new DataItem{ IsSetSuccessful=true, TagAddress= v, Message="读取成功", Value=data.ToString() }
+           }
+                };
+            }
+            else
+            {
+                return new PLCResultAll
+                {
+                    Sucessful = false,
+                    Message = "读取失败",
+                    PlcResults = new List<DataItem> {
+                       new DataItem{ IsSetSuccessful=false, TagAddress= v, Message="读取失败", Value=data.ToString() }
+                       }
+                };
+            }
+
+        }
+
         /// <summary>
         /// 写入多个值,并返回读取结果,如果有一个是false,那么这个操作异常。
         /// </summary>
@@ -185,7 +213,13 @@ namespace Fine.OPCDaClient.Util
             }
 
         }
-
+        /// <summary>
+        /// 写读并比较两个tag是否一致
+        /// </summary>
+        /// <param name="strWrite"></param>
+        /// <param name="strRead"></param>
+        /// <param name="duration"></param>
+        /// <returns></returns>
         public static PLCResultAll WriteList(string strWrite, string strRead, int duration)   //写入标签LIST
         {
 

+ 0 - 1
Fine.OPCDaClient/App/L5K_YP_HC.cs

@@ -512,7 +512,6 @@ namespace Fine.OPCDaClient.App
 
  
             GDinfo wGD = JsonUtil.DeserializeObject<GDinfo>(temp);
-
             PLCResultAll msg = new PLCResultAll { Sucessful = true, Message = "写入成功", PlcResults = new List<DataItem>()
             { 
                 new DataItem{ TagAddress="FIX.YT6022_MIXENTRYID.A_CV", IsSetSuccessful=true, Message="写入成功" },

+ 1 - 1
Fine.OPCDaClient/DAServerMgr.cs

@@ -167,7 +167,7 @@ namespace Fine.OPCDaClient
                     
                     //var list = ReadForServer(new string[] { "test.jyj.zzzz" });
 
-                    AddGroup();
+                    //AddGroup();
                 }
             });
         }

+ 15 - 1
Fine.OPCDaClient/Fine.OPCDaClient.csproj

@@ -5,7 +5,7 @@
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
     <ProjectGuid>{802473BF-215E-41CC-B3BA-8CFE246727B9}</ProjectGuid>
-    <OutputType>Exe</OutputType>
+    <OutputType>WinExe</OutputType>
     <RootNamespace>Fine.OPCDaClient</RootNamespace>
     <AssemblyName>Fine.OPCDaClient</AssemblyName>
     <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
@@ -52,6 +52,9 @@
     <WarningLevel>4</WarningLevel>
     <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Azure.Core, Version=1.24.0.0, Culture=neutral, PublicKeyToken=92742159e12e44c8, processorArchitecture=MSIL">
       <HintPath>..\packages\Azure.Core.1.24.0\lib\net461\Azure.Core.dll</HintPath>
@@ -235,6 +238,12 @@
     <Compile Include="DbContext\SqlServerDbContext.cs" />
     <Compile Include="Entitys\TechParam.cs" />
     <Compile Include="Entitys\WorkOrder.cs" />
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
     <Compile Include="OPCHelper.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -328,6 +337,11 @@
       <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Import Project="..\packages\Microsoft.Data.SqlClient.SNI.5.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets" Condition="Exists('..\packages\Microsoft.Data.SqlClient.SNI.5.0.1\build\net46\Microsoft.Data.SqlClient.SNI.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

+ 211 - 0
Fine.OPCDaClient/Form1.Designer.cs

@@ -0,0 +1,211 @@
+
+namespace Fine.OPCDaClient
+{
+    partial class Form1
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.button1 = new System.Windows.Forms.Button();
+            this.button2 = new System.Windows.Forms.Button();
+            this.TitleLabel1 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.button3 = new System.Windows.Forms.Button();
+            this.label4 = new System.Windows.Forms.Label();
+            this.IFixlabel = new System.Windows.Forms.Label();
+            this.ServertextBox = new System.Windows.Forms.Label();
+            this.HttptextBox = new System.Windows.Forms.Label();
+            this.IfixTimmer = new System.Windows.Forms.Timer(this.components);
+            this.groupBox1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.HttptextBox);
+            this.groupBox1.Controls.Add(this.ServertextBox);
+            this.groupBox1.Controls.Add(this.IFixlabel);
+            this.groupBox1.Controls.Add(this.label4);
+            this.groupBox1.Controls.Add(this.button3);
+            this.groupBox1.Controls.Add(this.label3);
+            this.groupBox1.Controls.Add(this.label2);
+            this.groupBox1.Controls.Add(this.label1);
+            this.groupBox1.Location = new System.Drawing.Point(13, 83);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(775, 176);
+            this.groupBox1.TabIndex = 0;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "状态";
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(13, 265);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(242, 70);
+            this.button1.TabIndex = 1;
+            this.button1.Text = "启动";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(494, 265);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(294, 70);
+            this.button2.TabIndex = 2;
+            this.button2.Text = "停止";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // TitleLabel1
+            // 
+            this.TitleLabel1.AutoSize = true;
+            this.TitleLabel1.Font = new System.Drawing.Font("宋体", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.TitleLabel1.ImageAlign = System.Drawing.ContentAlignment.BottomLeft;
+            this.TitleLabel1.Location = new System.Drawing.Point(189, 21);
+            this.TitleLabel1.Name = "TitleLabel1";
+            this.TitleLabel1.Size = new System.Drawing.Size(397, 50);
+            this.TitleLabel1.TabIndex = 3;
+            this.TitleLabel1.Text = "5K线API接口服务";
+            this.TitleLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(7, 28);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(134, 18);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "服务接口地址:";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(10, 62);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(134, 18);
+            this.label2.TabIndex = 3;
+            this.label2.Text = "服务开启状态:";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(10, 98);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(107, 18);
+            this.label3.TabIndex = 5;
+            this.label3.Text = "查看Log日志";
+            // 
+            // button3
+            // 
+            this.button3.Location = new System.Drawing.Point(163, 86);
+            this.button3.Name = "button3";
+            this.button3.Size = new System.Drawing.Size(131, 38);
+            this.button3.TabIndex = 6;
+            this.button3.Text = "打开路径";
+            this.button3.UseVisualStyleBackColor = true;
+            this.button3.Click += new System.EventHandler(this.button3_Click);
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(10, 133);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(116, 18);
+            this.label4.TabIndex = 7;
+            this.label4.Text = "IFix连接状态";
+            // 
+            // IFixlabel
+            // 
+            this.IFixlabel.AutoSize = true;
+            this.IFixlabel.Location = new System.Drawing.Point(160, 133);
+            this.IFixlabel.Name = "IFixlabel";
+            this.IFixlabel.Size = new System.Drawing.Size(62, 18);
+            this.IFixlabel.TabIndex = 8;
+            this.IFixlabel.Text = "label5";
+            // 
+            // ServertextBox
+            // 
+            this.ServertextBox.AutoSize = true;
+            this.ServertextBox.ForeColor = System.Drawing.SystemColors.Highlight;
+            this.ServertextBox.Location = new System.Drawing.Point(163, 27);
+            this.ServertextBox.Name = "ServertextBox";
+            this.ServertextBox.Size = new System.Drawing.Size(62, 18);
+            this.ServertextBox.TabIndex = 9;
+            this.ServertextBox.Text = "label6";
+            // 
+            // HttptextBox
+            // 
+            this.HttptextBox.AutoSize = true;
+            this.HttptextBox.Location = new System.Drawing.Point(163, 62);
+            this.HttptextBox.Name = "HttptextBox";
+            this.HttptextBox.Size = new System.Drawing.Size(62, 18);
+            this.HttptextBox.TabIndex = 10;
+            this.HttptextBox.Text = "label6";
+            // 
+            // IfixTimmer
+            // 
+            this.IfixTimmer.Tick += new System.EventHandler(this.IfixTimmer_Tick);
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(800, 362);
+            this.Controls.Add(this.TitleLabel1);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.button1);
+            this.Controls.Add(this.groupBox1);
+            this.Name = "Form1";
+            this.Text = "青岛卷烟厂";
+            this.Load += new System.EventHandler(this.Form1_Load);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.Label TitleLabel1;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Button button3;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label IFixlabel;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label HttptextBox;
+        private System.Windows.Forms.Label ServertextBox;
+        private System.Windows.Forms.Timer IfixTimmer;
+    }
+}

+ 145 - 0
Fine.OPCDaClient/Form1.cs

@@ -0,0 +1,145 @@
+using Fine.OPCDaClient.App;
+using Fine.OPCDaClient.Util;
+using Fine.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Configuration;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Fine.OPCDaClient
+{
+    public partial class Form1 : Form
+    {
+        private HttpServer.HttpServer<AppHandle> httpserver;
+        public Form1()
+        {
+            InitializeComponent();
+            AppUtil.InitAll();
+            
+        }
+
+       
+
+        private void Form1_Load(object sender, EventArgs e)
+        {
+            var httppar = JsonUtil.DeserializeObjectFile<HttpServer.HttpServerParams>("config/httpserver.json");
+            
+            TitleLabel1.Text = httppar.Service;
+            IFixlabel.Text = "启动后显示状态";
+            IFixlabel.ForeColor = Color.Red;
+            ServertextBox.Text= $"http://{GetServerIP()}:{httppar.Port}";
+            ///加载配置
+            HttptextBox.ForeColor = Color.Red;
+            HttptextBox.Text = "未开启";
+            DAServerMgr damgr = new DAServerMgr();
+            damgr.Start();
+            OPCHelper.daServerMgr = damgr;
+            httpserver = new HttpServer.HttpServer<AppHandle>(httppar);
+            //httpserver.Start();
+        }
+
+        private void ChangeServerStatus(bool start) {
+            if (start)
+            {
+                IfixTimmer.Interval = 2000;
+                IfixTimmer.Start();
+                HttptextBox.ForeColor = Color.Green;
+                httpserver.Start();
+                HttptextBox.Text = "已开启";
+                button1.Enabled = false;
+                button2.Enabled = true;
+            }
+            else
+            {
+                IfixTimmer.Stop();
+                IFixlabel.Text = "启动后显示状态";
+                IFixlabel.ForeColor = Color.Red;
+                HttptextBox.ForeColor = Color.Red;
+                httpserver.Close();
+                HttptextBox.Text = "未开启";
+                button1.Enabled = true;
+                button2.Enabled = false;
+            }
+        }
+
+        private void IFixStatus(int Stat) {
+            if (Stat == 1)
+            {
+                IFixlabel.Text = "正常";
+                IFixlabel.ForeColor = Color.Green;
+            }
+            else if (Stat == 2)
+            {
+                IFixlabel.Text = "IFX已连接,返回值为0";
+                IFixlabel.ForeColor = Color.Red;
+            }
+            else {
+                IFixlabel.Text = "未连接";
+                IFixlabel.ForeColor = Color.Red;
+            }
+            
+        }
+
+        private string GetServerIP() {
+            string ipstr = "+";
+            var host = Dns.GetHostEntry(Dns.GetHostName());
+            foreach (var ip in host.AddressList)
+            {
+                if (ip.AddressFamily == AddressFamily.InterNetwork)
+                {
+                    ipstr = ip.ToString();
+                    break;
+                }
+              
+            }
+            return ipstr;
+        }
+
+        private void button1_Click(object sender, EventArgs e)
+        {
+            ChangeServerStatus(true);
+        }
+
+        private void button2_Click(object sender, EventArgs e)
+        {
+            ChangeServerStatus(false);
+        }
+
+        private void button3_Click(object sender, EventArgs e)
+        {
+
+            string v_OpenFolderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,ConfigurationManager.AppSettings["logpath"]);
+            System.Diagnostics.Process.Start("explorer.exe", v_OpenFolderPath);
+        }
+
+        private void IfixTimmer_Tick(object sender, EventArgs e)
+        {
+            try
+            {
+
+               var data= AppUtil.Test("THISNODE.IFIX_Status.F_CV");
+                if (data.Sucessful)
+                {
+                    IFixStatus(1);
+                }
+                else {
+                    IFixStatus(2);
+                }
+            }
+            catch 
+            {
+                IFixStatus(3);
+
+            }
+        }
+    }
+}

+ 123 - 0
Fine.OPCDaClient/Form1.resx

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="IfixTimmer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>

+ 19 - 16
Fine.OPCDaClient/Program.cs

@@ -8,6 +8,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Forms;
 
 namespace Fine.OPCDaClient
 {
@@ -15,31 +16,33 @@ namespace Fine.OPCDaClient
     {
         static void Main(string[] args)
         {
-            ///加载配置
-            AppUtil.InitAll();
-            //启动Http Server
+            /////加载配置
+            //AppUtil.InitAll();
+            ////启动Http Server
 
            
-            //allen 2023-04屏蔽
-            //MQTTServerMgr mqtt = new MQTTServerMgr();
-            //mqtt.StartAsync();
+            ////allen 2023-04屏蔽
+            ////MQTTServerMgr mqtt = new MQTTServerMgr();
+            ////mqtt.StartAsync();
 
-            DAServerMgr damgr = new DAServerMgr();
-            //damgr.ConnectionAsync("Kepware.KEPServerEX.V6");
-            damgr.Start();
+            //DAServerMgr damgr = new DAServerMgr();
+            ////damgr.ConnectionAsync("Kepware.KEPServerEX.V6");
+            //damgr.Start();
 
-            OPCHelper.daServerMgr = damgr;
+            //OPCHelper.daServerMgr = damgr;
 
-            var httppar = JsonUtil.DeserializeObjectFile<HttpServer.HttpServerParams>("config/httpserver.json");
-            var httpserver = new HttpServer.HttpServer<AppHandle>(httppar);
-            httpserver.Start();
+            //var httppar = JsonUtil.DeserializeObjectFile<HttpServer.HttpServerParams>("config/httpserver.json");
+            //var httpserver = new HttpServer.HttpServer<AppHandle>(httppar);
+            //httpserver.Start();
 
-            Console.ReadLine();
+            //Console.ReadLine();
 
-            
 
-            //server.StartAsync();
 
+            //server.StartAsync();
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
 
         }
     }

+ 2 - 1
Fine.OPCDaClient/bin/Debug/config/httpserver.json

@@ -1,5 +1,6 @@
 {
   "Host": "+",
-  "Port": 9011
+  "Port": 9011,
+  "Service": "5K线API接口服务"
 
 }

+ 2 - 1
Fine.OPCDaClient/config/httpserver.json

@@ -1,5 +1,6 @@
 {
   "Host": "+",
-  "Port": 9011
+  "Port": 9011,
+  "Service": "5K线API接口服务"
 
 }

二進制
Fine.OPCDaClient/obj/Debug/Fine.OPCDaClient.Form1.resources


+ 2 - 0
Fine.OPCDaClient/obj/Debug/Fine.OPCDaClient.csproj.FileListAbsolute.txt

@@ -219,3 +219,5 @@ E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPC
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient\obj\Debug\Fine.OPCDaClient.exe
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient\obj\Debug\Fine.OPCDaClient.pdb
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient\bin\Debug\config\L3K_YP\L3KJL_jyg.json
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient\obj\Debug\Fine.OPCDaClient.Form1.resources
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient\obj\Debug\Fine.OPCDaClient.csproj.GenerateResource.cache

+ 28 - 3
Fine.OPCDaClient9000/App/Common/AppUtil.cs

@@ -69,7 +69,11 @@ namespace Fine.OPCDaClient9000.Util
                 return new PLCResultAll { Sucessful = false, Message = "文档错误,访问失败" };
             }
         }
-
+        public static PLCResultAll Test()
+        {
+            var first = newConfig.FirstOrDefault(a => a.APIName == "Ifix_Status" && a.Method == "get");
+            return WrNewCheckList(first);
+        }
         private static PLCResultAll WrNewCheckList(IoModal iovar, string pras = null)
         {
             Console.WriteLine("API调用时间 :{0}", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff"));
@@ -136,11 +140,32 @@ namespace Fine.OPCDaClient9000.Util
                 }
                 if (iovar.PType == EAPIparType.OnlyRead)
                 {
-                   // var writestr = JsonUtil.SerializeObject(iovar.Params.SelectMany(a => a.keys).Select(a => new DataItem { TagAddress = a.WriteTagName, Value = a.StrValue }));
+                    // var writestr = JsonUtil.SerializeObject(iovar.Params.SelectMany(a => a.keys).Select(a => new DataItem { TagAddress = a.WriteTagName, Value = a.StrValue }));
                     var readstr = JsonUtil.SerializeObject(iovar.Params.SelectMany(a => a.keys).Select(a => new DataItem { TagAddress = a.CheckTagName, Value = a.CheckValue }));
                     List<DataItem> list = JsonUtil.DeserializeObject<List<DataItem>>(readstr);
                     List<DataItem> rlt = OPCHelper.daServerMgr.ReadListForServer(list);
-                    return new PLCResultAll { Sucessful = true, PlcResults = rlt, Message= "状态返回" };
+                    foreach (var item in rlt)
+                    {
+                        var listdata = list.FirstOrDefault(a => a.TagAddress == item.TagAddress);
+                        if (listdata != null)
+                        {
+                            if (listdata.Value.ToString()== item.Value.ToString())
+                            {
+                                item.IsSetSuccessful = true;
+                                item.Message = "写入成功";
+                            }
+                            else
+                            {
+                                item.IsSetSuccessful = false;
+                                item.Message = "写入失败";
+                            }
+                        }
+                    }
+                    if (rlt.Exists(a => a.IsSetSuccessful == false))
+                    {
+                        return new PLCResultAll { Sucessful = false, PlcResults = rlt, Message = "读取失败" };
+                    }
+                    return new PLCResultAll { Sucessful = true, PlcResults = rlt, Message = "状态返回" };
                 }
                 return new PLCResultAll
                 {

+ 18 - 2
Fine.OPCDaClient9000/Fine.OPCDaClient9000.csproj

@@ -5,7 +5,7 @@
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
     <ProjectGuid>{8A918CE3-C39E-47DB-8E63-680F7777ACB3}</ProjectGuid>
-    <OutputType>Exe</OutputType>
+    <OutputType>WinExe</OutputType>
     <RootNamespace>Fine.OPCDaClient9000</RootNamespace>
     <AssemblyName>Fine.OPCDaClient9000</AssemblyName>
     <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
@@ -32,6 +32,9 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -45,6 +48,9 @@
     <Reference Include="System" />
     <Reference Include="System.Configuration" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Drawing.Design" />
+    <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml.Linq" />
     <Reference Include="System.Data.DataSetExtensions" />
     <Reference Include="Microsoft.CSharp" />
@@ -66,6 +72,12 @@
     <Compile Include="DbContext\SqlServerDbContext.cs" />
     <Compile Include="Entitys\TechParam.cs" />
     <Compile Include="Entitys\WorkOrder.cs" />
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
     <Compile Include="OPCHelper.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -124,6 +136,10 @@
       <Name>OpcClientMqtt</Name>
     </ProjectReference>
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 211 - 0
Fine.OPCDaClient9000/Form1.Designer.cs

@@ -0,0 +1,211 @@
+
+namespace Fine.OPCDaClient9000
+{
+    partial class Form1
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.HttptextBox = new System.Windows.Forms.Label();
+            this.ServertextBox = new System.Windows.Forms.Label();
+            this.IFixlabel = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.button3 = new System.Windows.Forms.Button();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.button1 = new System.Windows.Forms.Button();
+            this.button2 = new System.Windows.Forms.Button();
+            this.TitleLabel1 = new System.Windows.Forms.Label();
+            this.IfixTimmer = new System.Windows.Forms.Timer(this.components);
+            this.groupBox1.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.HttptextBox);
+            this.groupBox1.Controls.Add(this.ServertextBox);
+            this.groupBox1.Controls.Add(this.IFixlabel);
+            this.groupBox1.Controls.Add(this.label4);
+            this.groupBox1.Controls.Add(this.button3);
+            this.groupBox1.Controls.Add(this.label3);
+            this.groupBox1.Controls.Add(this.label2);
+            this.groupBox1.Controls.Add(this.label1);
+            this.groupBox1.Location = new System.Drawing.Point(13, 83);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(775, 176);
+            this.groupBox1.TabIndex = 0;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "状态";
+            // 
+            // HttptextBox
+            // 
+            this.HttptextBox.AutoSize = true;
+            this.HttptextBox.Location = new System.Drawing.Point(163, 62);
+            this.HttptextBox.Name = "HttptextBox";
+            this.HttptextBox.Size = new System.Drawing.Size(62, 18);
+            this.HttptextBox.TabIndex = 10;
+            this.HttptextBox.Text = "label6";
+            // 
+            // ServertextBox
+            // 
+            this.ServertextBox.AutoSize = true;
+            this.ServertextBox.ForeColor = System.Drawing.SystemColors.Highlight;
+            this.ServertextBox.Location = new System.Drawing.Point(163, 27);
+            this.ServertextBox.Name = "ServertextBox";
+            this.ServertextBox.Size = new System.Drawing.Size(62, 18);
+            this.ServertextBox.TabIndex = 9;
+            this.ServertextBox.Text = "label6";
+            // 
+            // IFixlabel
+            // 
+            this.IFixlabel.AutoSize = true;
+            this.IFixlabel.Location = new System.Drawing.Point(160, 133);
+            this.IFixlabel.Name = "IFixlabel";
+            this.IFixlabel.Size = new System.Drawing.Size(62, 18);
+            this.IFixlabel.TabIndex = 8;
+            this.IFixlabel.Text = "label5";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(10, 133);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(116, 18);
+            this.label4.TabIndex = 7;
+            this.label4.Text = "IFix连接状态";
+            // 
+            // button3
+            // 
+            this.button3.Location = new System.Drawing.Point(163, 86);
+            this.button3.Name = "button3";
+            this.button3.Size = new System.Drawing.Size(131, 38);
+            this.button3.TabIndex = 6;
+            this.button3.Text = "打开路径";
+            this.button3.UseVisualStyleBackColor = true;
+            this.button3.Click += new System.EventHandler(this.button3_Click);
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(10, 98);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(107, 18);
+            this.label3.TabIndex = 5;
+            this.label3.Text = "查看Log日志";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(10, 62);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(134, 18);
+            this.label2.TabIndex = 3;
+            this.label2.Text = "服务开启状态:";
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(7, 28);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(134, 18);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "服务接口地址:";
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(13, 265);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(242, 70);
+            this.button1.TabIndex = 1;
+            this.button1.Text = "启动";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(494, 265);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(294, 70);
+            this.button2.TabIndex = 2;
+            this.button2.Text = "停止";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // TitleLabel1
+            // 
+            this.TitleLabel1.AutoSize = true;
+            this.TitleLabel1.Font = new System.Drawing.Font("宋体", 25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.TitleLabel1.ImageAlign = System.Drawing.ContentAlignment.BottomLeft;
+            this.TitleLabel1.Location = new System.Drawing.Point(189, 21);
+            this.TitleLabel1.Name = "TitleLabel1";
+            this.TitleLabel1.Size = new System.Drawing.Size(397, 50);
+            this.TitleLabel1.TabIndex = 3;
+            this.TitleLabel1.Text = "5K线API接口服务";
+            this.TitleLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // IfixTimmer
+            // 
+            this.IfixTimmer.Tick += new System.EventHandler(this.IfixTimmer_Tick);
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(800, 362);
+            this.Controls.Add(this.TitleLabel1);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.button1);
+            this.Controls.Add(this.groupBox1);
+            this.Name = "Form1";
+            this.Text = "青岛卷烟厂";
+            this.Load += new System.EventHandler(this.Form1_Load);
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.Label TitleLabel1;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Button button3;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label IFixlabel;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label HttptextBox;
+        private System.Windows.Forms.Label ServertextBox;
+        private System.Windows.Forms.Timer IfixTimmer;
+    }
+}

+ 169 - 0
Fine.OPCDaClient9000/Form1.cs

@@ -0,0 +1,169 @@
+
+using Fine.OPCDaClient9000.App;
+using Fine.OPCDaClient9000.Util;
+using Fine.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Configuration;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Fine.OPCDaClient9000
+{
+    public partial class Form1 : Form
+    {
+        private HttpServer.HttpServer<AppHandle> httpserver;
+        public Form1()
+        {
+            InitializeComponent();
+            AppUtil.InitAllDirectoryCfg();
+            
+        }
+
+       
+
+        private void Form1_Load(object sender, EventArgs e)
+        {
+            var httppar = JsonUtil.DeserializeObjectFile<HttpServer.HttpServerParams>("config/httpserver.json");
+            
+            TitleLabel1.Text = httppar.Service;
+            IFixlabel.Text = "启动后显示状态";
+            IFixlabel.ForeColor = Color.Red;
+            ServertextBox.Text= $"http://{GetServerIP()}:{httppar.Port}";
+            ///加载配置
+            HttptextBox.ForeColor = Color.Red;
+            HttptextBox.Text = "未开启";
+            DAServerMgr damgr = new DAServerMgr();
+            damgr.Start();
+            OPCHelper.daServerMgr = damgr;
+            httpserver = new HttpServer.HttpServer<AppHandle>(httppar);
+            //httpserver.Start();
+        }
+
+        private void ChangeServerStatus(bool start) {
+            if (start)
+            {
+                IfixTimmer.Interval = 2000;
+                IfixTimmer.Start();
+                HttptextBox.ForeColor = Color.Green;
+                httpserver.Start();
+                HttptextBox.Text = "已开启";
+                button1.Enabled = false;
+                button2.Enabled = true;
+            }
+            else
+            {
+                IfixTimmer.Stop();
+                IFixlabel.Text = "启动后显示状态";
+                IFixlabel.ForeColor = Color.Red;
+                HttptextBox.ForeColor = Color.Red;
+                httpserver.Close();
+                HttptextBox.Text = "未开启";
+                button1.Enabled = true;
+                button2.Enabled = false;
+            }
+        }
+
+        private void IFixStatus(int Stat) {
+            if (Stat == 1)
+            {
+                IFixlabel.Text = "正常";
+                IFixlabel.ForeColor = Color.Green;
+            }
+            else if (Stat == 2)
+            {
+                IFixlabel.Text = "IFX已连接,返回值为0";
+                IFixlabel.ForeColor = Color.Red;
+            }
+            else {
+                IFixlabel.Text = "未连接";
+                IFixlabel.ForeColor = Color.Red;
+            }
+            
+        }
+
+        private string GetServerIP() {
+            string ipstr = "+";
+            var host = Dns.GetHostEntry(Dns.GetHostName());
+            foreach (var ip in host.AddressList)
+            {
+                if (ip.AddressFamily == AddressFamily.InterNetwork)
+                {
+                    ipstr = ip.ToString();
+                    break;
+                }
+              
+            }
+            return ipstr;
+        }
+
+        private void button1_Click(object sender, EventArgs e)
+        {
+            ChangeServerStatus(true);
+        }
+
+        private void button2_Click(object sender, EventArgs e)
+        {
+            ChangeServerStatus(false);
+        }
+
+        private void button3_Click(object sender, EventArgs e)
+        {
+
+            string v_OpenFolderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,ConfigurationManager.AppSettings["logpath"]);
+            System.Diagnostics.Process.Start("explorer.exe", v_OpenFolderPath);
+        }
+
+        private void IfixTimmer_Tick(object sender, EventArgs e)
+        {
+           
+            try
+            {
+
+                var data = AppUtil.Test();
+                if (data.Sucessful)
+                {
+                    IFixStatus(1);
+                }
+                else
+                {
+                    IFixStatus(2);
+                }
+            }
+            catch
+            {
+                IFixStatus(3);
+
+            }
+        }
+
+        //private void IfixTimmer_Tick(object sender, EventArgs e)
+        //{
+        //    try
+        //    {
+
+        //       var data= AppUtil.Test("THISNODE.IFIX_Status.F_CV");
+        //        if (data.Sucessful)
+        //        {
+        //            IFixStatus(1);
+        //        }
+        //        else {
+        //            IFixStatus(2);
+        //        }
+        //    }
+        //    catch 
+        //    {
+        //        IFixStatus(3);
+
+        //    }
+        //}
+    }
+}

+ 123 - 0
Fine.OPCDaClient9000/Form1.resx

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="IfixTimmer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>

+ 14 - 15
Fine.OPCDaClient9000/Program.cs

@@ -7,6 +7,7 @@ using System.Threading;
 using Fine.OPCDaClient9000.Util;
 using Fine.Util;
 using Fine.OPCDaClient9000.App;
+using System.Windows.Forms;
 
 namespace Fine.OPCDaClient9000
 {
@@ -14,28 +15,26 @@ namespace Fine.OPCDaClient9000
     {
         static void Main(string[] args)
         {
-            ///加载配置
-            AppUtil.InitAllDirectoryCfg();
-            //启动Http Server
+            /////加载配置
+            //AppUtil.InitAllDirectoryCfg();
+            ////启动Http Server
 
 
-            //allen 2023-04屏蔽
-            //MQTTServerMgr mqtt = new MQTTServerMgr();
-            //mqtt.StartAsync();
+            //DAServerMgr damgr = new DAServerMgr();
 
-            DAServerMgr damgr = new DAServerMgr();
-            //damgr.ConnectionAsync("Kepware.KEPServerEX.V6");
-            damgr.Start();
+            //damgr.Start();
 
-            OPCHelper.daServerMgr = damgr;
+            //OPCHelper.daServerMgr = damgr;
 
-            var httppar = JsonUtil.DeserializeObjectFile<HttpServer.HttpServerParams>("config/httpserver.json");
-            var httpserver = new HttpServer.HttpServer<AppHandle>(httppar);
-            httpserver.Start();
-
-            Console.ReadLine();
+            //var httppar = JsonUtil.DeserializeObjectFile<HttpServer.HttpServerParams>("config/httpserver.json");
+            //var httpserver = new HttpServer.HttpServer<AppHandle>(httppar);
+            //httpserver.Start();
 
+            //Console.ReadLine();
 
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
 
             //server.StartAsync();
 

+ 2 - 2
Fine.OPCDaClient9000/bin/Debug/config/httpserver.json

@@ -1,5 +1,5 @@
 {
   "Host": "+",
-  "Port": 9001
-
+  "Port": 9001,
+  "Service": "9K线API接口服务"
 }

+ 2 - 2
Fine.OPCDaClient9000/config/httpserver.json

@@ -1,5 +1,5 @@
 {
   "Host": "+",
-  "Port": 9001
-
+  "Port": 9001,
+  "Service": "9K线API接口服务"
 }

二進制
Fine.OPCDaClient9000/obj/Debug/Fine.OPCDaClient9000.Form1.resources


+ 8 - 6
Fine.OPCDaClient9000/obj/Debug/Fine.OPCDaClient9000.csproj.FileListAbsolute.txt

@@ -1,10 +1,10 @@
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.csproj.AssemblyReference.cache
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.exe.config
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.csproj.CoreCompileInputs.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\opcserver.json
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\opcserverifix.json
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\httpserver.json
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\mqttclient.json
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\Router\9000\9000加料.json
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\Router\9000\9000回潮.json
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\Router\Status\FixStatus.json
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\Fine.OPCDaClient9000.exe.config
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\Fine.OPCDaClient9000.exe
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\Fine.OPCDaClient9000.pdb
@@ -113,9 +113,11 @@ E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPC
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\Microsoft.Extensions.Logging.EventSource.xml
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\System.Text.Encodings.Web.xml
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\Microsoft.Extensions.Options.ConfigurationExtensions.xml
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.csproj.AssemblyReference.cache
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.exe.config
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.Form1.resources
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.csproj.GenerateResource.cache
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.csproj.CoreCompileInputs.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.csproj.CopyComplete
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.exe
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\obj\Debug\Fine.OPCDaClient9000.pdb
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\Router\9000\9000加料.json
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\Router\9000\9000回潮.json
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient9000\bin\Debug\config\Router\Status\FixStatus.json

+ 1 - 1
Fine.Util/obj/Debug/Fine.Util.csproj.FileListAbsolute.txt

@@ -37,8 +37,8 @@ E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Uti
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\bin\Debug\Fine.Util.pdb
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\bin\Debug\Newtonsoft.Json.dll
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\bin\Debug\Newtonsoft.Json.xml
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\obj\Debug\Fine.Util.csproj.AssemblyReference.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\obj\Debug\Fine.Util.csproj.CoreCompileInputs.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\obj\Debug\Fine.Util.csproj.CopyComplete
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\obj\Debug\Fine.Util.dll
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\obj\Debug\Fine.Util.pdb
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\Fine.Util\obj\Debug\Fine.Util.csproj.AssemblyReference.cache

+ 1 - 0
MQTTClient/obj/Debug/MQTTClient.csproj.FileListAbsolute.txt

@@ -6,6 +6,7 @@ I:\01-ProjectCode\Pro_QD\ZhuX\Fine.OPCDaClient1027_vs2019\MQTTClient\obj\Debug\M
 I:\01-ProjectCode\Pro_QD\ZhuX\Fine.OPCDaClient1027_vs2019\MQTTClient\obj\Debug\MQTTClient.pdb
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\MQTTClient\bin\Debug\MQTTClient.dll
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\MQTTClient\bin\Debug\MQTTClient.pdb
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\MQTTClient\obj\Debug\MQTTClient.csproj.AssemblyReference.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\MQTTClient\obj\Debug\MQTTClient.csproj.CoreCompileInputs.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\MQTTClient\obj\Debug\MQTTClient.dll
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\MQTTClient\obj\Debug\MQTTClient.pdb

+ 1 - 1
OpcClientMqtt/obj/Debug/OpcClientMqtt.csproj.FileListAbsolute.txt

@@ -548,8 +548,8 @@ E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClien
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\bin\Debug\System.Threading.Tasks.Extensions.xml
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\bin\Debug\System.ValueTuple.xml
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\obj\Debug\OpcClientMqtt.csproj.App.config
+E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\obj\Debug\OpcClientMqtt.csproj.AssemblyReference.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\obj\Debug\OpcClientMqtt.csproj.CoreCompileInputs.cache
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\obj\Debug\OpcClientMqtt.csproj.CopyComplete
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\obj\Debug\OpcClientMqtt.exe
 E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\obj\Debug\OpcClientMqtt.pdb
-E:\远舢智能\Fine.OPCDaClient1027_vs2019\Fine.OPCDaClient1027_vs2019\OpcClientMqtt\obj\Debug\OpcClientMqtt.csproj.AssemblyReference.cache