|
|
@@ -1,37 +1,79 @@
|
|
|
-using YSAI.Beckhoff;
|
|
|
+using System.Collections.Concurrent;
|
|
|
+using YSAI.Core.data;
|
|
|
+using YSAI.Log;
|
|
|
+using YSAI.Mitsubishi;
|
|
|
+using YSAI.Unility;
|
|
|
|
|
|
-//第一种方式
|
|
|
-BeckhoffOperate beckhoffOperate1 = new BeckhoffOperate();
|
|
|
-//第二种方式(单例模式)
|
|
|
-BeckhoffOperate? beckhoffOperate2 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
|
|
|
-//第三种方式(单例模式)
|
|
|
-BeckhoffOperate beckhoffOperate3 = BeckhoffOperate.Instance(new BeckhoffData.Basics());
|
|
|
-
|
|
|
-//第一种的应用场景是获取库参数信息时当这个对象已经实例化了,但是实际功能无法使用,就可以直接使用 CreateInstance 创建一个单例模式
|
|
|
-//先获取参数
|
|
|
-beckhoffOperate1.GetParam();
|
|
|
-//在生成单例后赋值,这样当前实例就已经可以使用所有功能,并且是单例的存在
|
|
|
-beckhoffOperate1 = beckhoffOperate1.CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
|
|
|
-
|
|
|
-//第二种与第三种就是直接创建单例模式,但第二种是为了在反射的情况下使用单例模式,第二种也是为第一种情况而产生
|
|
|
-
|
|
|
-//第四种方式
|
|
|
-using (BeckhoffOperate beckhoffOperate4 = new BeckhoffOperate())
|
|
|
+MitsubishiOperate mitsubishiOperate = MitsubishiOperate.Instance(new MitsubishiData.Basics
|
|
|
{
|
|
|
- //使用完直接释放
|
|
|
-}
|
|
|
-//第五种方式
|
|
|
-using (BeckhoffOperate beckhoffOperate5 = BeckhoffOperate.Instance(new BeckhoffData.Basics()))
|
|
|
-{
|
|
|
- //使用完直接释放这个单例
|
|
|
-}
|
|
|
-//第六种方式
|
|
|
-using (BeckhoffOperate? beckhoffOperate6 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>())
|
|
|
+ Ip = "127.0.0.1",
|
|
|
+ Port = 1111,
|
|
|
+ DType = MitsubishiData.DevType.A1E
|
|
|
+});
|
|
|
+LogHelper.Debug(mitsubishiOperate.On().Message);
|
|
|
+
|
|
|
+while (true)
|
|
|
{
|
|
|
- //使用完直接释放这个单例
|
|
|
+ double value = new Random().NextDouble();
|
|
|
+ LogHelper.Debug(value.ToString());
|
|
|
+ LogHelper.Debug(mitsubishiOperate.Write(new System.Collections.Concurrent.ConcurrentDictionary<string, string>
|
|
|
+ {
|
|
|
+ ["M100"] = "aaaaaaaaaaaaaaaaaaaaaa",
|
|
|
+ }).State.ToString());
|
|
|
+
|
|
|
+
|
|
|
+ LogHelper.Debug(mitsubishiOperate.Read(new YSAI.Core.data.Address
|
|
|
+ {
|
|
|
+ AddressArray=new List<YSAI.Core.data.AddressDetails>
|
|
|
+ {
|
|
|
+ new YSAI.Core.data.AddressDetails
|
|
|
+ {
|
|
|
+ AddressName="M100,100",
|
|
|
+ AddressDataType=YSAI.Core.@enum.DataType.String
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).RData.ToJson());
|
|
|
+
|
|
|
+
|
|
|
+ Console.ReadLine();
|
|
|
}
|
|
|
|
|
|
-Console.WriteLine();
|
|
|
+
|
|
|
+
|
|
|
+//using YSAI.Beckhoff;
|
|
|
+
|
|
|
+////第一种方式
|
|
|
+//BeckhoffOperate beckhoffOperate1 = new BeckhoffOperate();
|
|
|
+////第二种方式(单例模式)
|
|
|
+//BeckhoffOperate? beckhoffOperate2 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
|
|
|
+////第三种方式(单例模式)
|
|
|
+//BeckhoffOperate beckhoffOperate3 = BeckhoffOperate.Instance(new BeckhoffData.Basics());
|
|
|
+
|
|
|
+////第一种的应用场景是获取库参数信息时当这个对象已经实例化了,但是实际功能无法使用,就可以直接使用 CreateInstance 创建一个单例模式
|
|
|
+////先获取参数
|
|
|
+//beckhoffOperate1.GetParam();
|
|
|
+////在生成单例后赋值,这样当前实例就已经可以使用所有功能,并且是单例的存在
|
|
|
+//beckhoffOperate1 = beckhoffOperate1.CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>();
|
|
|
+
|
|
|
+////第二种与第三种就是直接创建单例模式,但第二种是为了在反射的情况下使用单例模式,第二种也是为第一种情况而产生
|
|
|
+
|
|
|
+////第四种方式
|
|
|
+//using (BeckhoffOperate beckhoffOperate4 = new BeckhoffOperate())
|
|
|
+//{
|
|
|
+// //使用完直接释放
|
|
|
+//}
|
|
|
+////第五种方式
|
|
|
+//using (BeckhoffOperate beckhoffOperate5 = BeckhoffOperate.Instance(new BeckhoffData.Basics()))
|
|
|
+//{
|
|
|
+// //使用完直接释放这个单例
|
|
|
+//}
|
|
|
+////第六种方式
|
|
|
+//using (BeckhoffOperate? beckhoffOperate6 = new BeckhoffOperate().CreateInstance(new BeckhoffData.Basics()).GetRData<BeckhoffOperate>())
|
|
|
+//{
|
|
|
+// //使用完直接释放这个单例
|
|
|
+//}
|
|
|
+
|
|
|
+//Console.WriteLine();
|
|
|
//using YSAI.Beckhoff;
|
|
|
//using YSAI.Core.data;
|
|
|
//using YSAI.Log;
|