diff --git a/guidescreen/GuideScreen/.vs/GuideScreen/FileContentIndex/1f66bc8b-036d-484e-9aa1-3edd160df3e6.vsidx b/guidescreen/GuideScreen/.vs/GuideScreen/FileContentIndex/1f66bc8b-036d-484e-9aa1-3edd160df3e6.vsidx
deleted file mode 100644
index e3a2a9c..0000000
Binary files a/guidescreen/GuideScreen/.vs/GuideScreen/FileContentIndex/1f66bc8b-036d-484e-9aa1-3edd160df3e6.vsidx and /dev/null differ
diff --git a/guidescreen/GuideScreen/.vs/GuideScreen/FileContentIndex/2ca51020-6d30-467e-9dc0-5e48816dcc37.vsidx b/guidescreen/GuideScreen/.vs/GuideScreen/FileContentIndex/2ca51020-6d30-467e-9dc0-5e48816dcc37.vsidx
new file mode 100644
index 0000000..a1849bf
Binary files /dev/null and b/guidescreen/GuideScreen/.vs/GuideScreen/FileContentIndex/2ca51020-6d30-467e-9dc0-5e48816dcc37.vsidx differ
diff --git a/guidescreen/GuideScreen/.vs/GuideScreen/v17/.suo b/guidescreen/GuideScreen/.vs/GuideScreen/v17/.suo
index 0324eea..630e88f 100644
Binary files a/guidescreen/GuideScreen/.vs/GuideScreen/v17/.suo and b/guidescreen/GuideScreen/.vs/GuideScreen/v17/.suo differ
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/GuideScreen.Common.csproj b/guidescreen/GuideScreen/GuideScreen.Common/GuideScreen.Common.csproj
index 23cf04d..090b61e 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/GuideScreen.Common.csproj
+++ b/guidescreen/GuideScreen/GuideScreen.Common/GuideScreen.Common.csproj
@@ -106,9 +106,13 @@
+
+
+
+
@@ -124,6 +128,8 @@
+
+
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/GSDBContext.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/GSDBContext.cs
index 3b97214..f150cbe 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/GSDBContext.cs
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/GSDBContext.cs
@@ -21,7 +21,7 @@ namespace GuideScreen.Common.Repositories
///
/// 数据库上下文
///
- public class GSDBContext : DbContext
+ internal class GSDBContext : DbContext
{
//用System.Data.SQLite::SQLiteConnection创建DbConnection进行构造初始化
public GSDBContext(DbConnection dbConnection, bool contextOwnsConnection = true)
@@ -47,13 +47,16 @@ namespace GuideScreen.Common.Repositories
var sqliteConnectionInitializer = new MySqliteCreateDatabaseIfNotExists(modelBuilder);
Database.SetInitializer(sqliteConnectionInitializer);
}
- public DbSet MenuEntities { get; set; }
+ public DbSet MenuEntities { get; set; }
public DbSet SystemConfigEntities { get; set; }
+ public DbSet PassengerFlowStatisticsEntites { get; set; }
+ public DbSet PassengerFlowStatisticsDayEntites { get; set; }
+
}
- public class MySqliteCreateDatabaseIfNotExists : SqliteCreateDatabaseIfNotExists
+ internal class MySqliteCreateDatabaseIfNotExists : SqliteCreateDatabaseIfNotExists
{
public MySqliteCreateDatabaseIfNotExists(DbModelBuilder modelBuilder) : base(modelBuilder)
{
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/MenuEntity.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/MenuEntity.cs
index 2f666f9..33f056c 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/MenuEntity.cs
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/MenuEntity.cs
@@ -13,50 +13,58 @@ namespace GuideScreen.Common.Repositories.Entities
/// 菜单 实体
///
[Table("menus")]
- public class MenuEntity
+ internal class MenuEntity
{
///
/// 主键ID
///
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
+ [Column("id")]
public int ID { get; set; }
///
/// 父节点ID
///
[Required]
+ [Column("parentID")]
public int ParentID { get; set; }
///
/// 名称
///
[Index(IsUnique = true)]
+ [Column("name")]
public string Name { get; set; }
///
/// 图标编号
///
+ [Column("symbol")]
public int Symbol { get; set; }
///
/// 窗体实例化地址
///
+ [Column("windowUri")]
public string WindowUri { get; set; }
///
/// 页面编号
///
+ [Column("pageIndex")]
public int PageIndex { get; set; }
///
/// 是否启用
///
+ [Column("enabled")]
public bool Enabled { get; set; }
///
/// 是否需要管理员权限
///
+ [Column("isAdmin")]
public bool IsAdmin { get; set; }
}
}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/PassengerFlowStatisticsDayEntity.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/PassengerFlowStatisticsDayEntity.cs
new file mode 100644
index 0000000..8ada4fa
--- /dev/null
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/PassengerFlowStatisticsDayEntity.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GuideScreen.Common.Repositories.Entities
+{
+ ///
+ /// 客流统计 实体
+ ///
+ [Table("passengerFlowStatisticsDay")]
+ internal class PassengerFlowStatisticsDayEntity
+ {
+ ///
+ /// 主键 ID
+ ///
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ [Column("id")]
+ public int ID { get; set; }
+
+ ///
+ /// 进入人数
+ ///
+ [Column("enterNum")]
+ public int EnterNum { get; set; }
+
+ ///
+ /// 离开人数
+ ///
+ [Column("leaveNum")]
+ public int LeaveNum { get; set; }
+
+ ///
+ /// 设备IP
+ ///
+ [Column("deviceIP")]
+ public string DeviceIP { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [Column("day")]
+ public string Day { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [Column("createDateTime")]
+ public DateTime CreateDateTime { get; set; }
+ }
+}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/PassengerFlowStatisticsEntity.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/PassengerFlowStatisticsEntity.cs
new file mode 100644
index 0000000..fe66af2
--- /dev/null
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/PassengerFlowStatisticsEntity.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GuideScreen.Common.Repositories.Entities
+{
+ ///
+ /// 客流统计 实体
+ ///
+ [Table("passengerFlowStatistics")]
+ internal class PassengerFlowStatisticsEntity
+ {
+ ///
+ /// 主键 ID
+ ///
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ [Column("id")]
+ public int ID { get; set; }
+
+ ///
+ /// 进入人数
+ ///
+ [Column("enterNum")]
+ public int EnterNum { get; set; }
+
+ ///
+ /// 离开人数
+ ///
+ [Column("leaveNum")]
+ public int LeaveNum { get; set; }
+
+ ///
+ /// 开始时间
+ ///
+ [Column("startTime")]
+ public DateTime StartTime { get; set; }
+
+ ///
+ /// 结束时间
+ ///
+ [Column("endTime")]
+ public DateTime EndTime { get; set; }
+
+ ///
+ /// 设备IP
+ ///
+ [Column("deviceIP")]
+ public string DeviceIP { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [Column("createDateTime")]
+ public DateTime CreateDateTime { get; set; }
+ }
+}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/SystemConfigEntity.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/SystemConfigEntity.cs
index 187db91..5e329e8 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/SystemConfigEntity.cs
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Entities/SystemConfigEntity.cs
@@ -12,41 +12,47 @@ namespace GuideScreen.Common.Repositories.Entities
/// 系统参数
///
[Table("systemConfig")]
- public class SystemConfigEntity
+ internal class SystemConfigEntity
{
///
/// 主键ID
///
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ [Column("id")]
public int ID { get; set; }
///
/// 参数名称
///
[Required]
+ [Column("configName")]
public string ConfigName { get; set; }
///
/// 参数键值
///
[Index(IsUnique = true)]
+ [Column("configKey")]
public string ConfigKey { get; set; }
///
/// 参数值
///
[Required]
+ [Column("configValue")]
public string ConfigValue { get; set; }
///
/// 描述
///
+ [Column("remarks")]
public string Remarks { get; set; }
///
/// 是否启用
///
+ [Column("enabled")]
public bool Enabled { get; set; }
}
}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/IPassengerFlowStatisticsRepository.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/IPassengerFlowStatisticsRepository.cs
new file mode 100644
index 0000000..32a5906
--- /dev/null
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/IPassengerFlowStatisticsRepository.cs
@@ -0,0 +1,17 @@
+using GuideScreen.Common.Common;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GuideScreen.Common.Repositories
+{
+ ///
+ /// 客流统计 数据层 接口
+ ///
+ public interface IPassengerFlowStatisticsRepository : IDependency
+ {
+
+ }
+}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/ISystemRepository.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/ISystemRepository.cs
index 2aeca8d..088b96e 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/ISystemRepository.cs
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/ISystemRepository.cs
@@ -13,7 +13,7 @@ namespace GuideScreen.Common.Repositories
///
/// 系统相关 数据层 接口
///
- public interface ISystemRepository: IDependency
+ internal interface ISystemRepository: IDependency
{
///
/// 获取系统菜单
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Impl/PassengerFlowStatisticsRepository.cs b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Impl/PassengerFlowStatisticsRepository.cs
new file mode 100644
index 0000000..a7460a4
--- /dev/null
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Repositories/Impl/PassengerFlowStatisticsRepository.cs
@@ -0,0 +1,143 @@
+using GuideScreen.Common.Common;
+using GuideScreen.Common.Repositories.Entities;
+using GuideScreen.Common.Services.Models;
+using Masuit.Tools;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace GuideScreen.Common.Repositories.Impl
+{
+ ///
+ /// 客流统计 数据层 实现
+ ///
+ internal class PassengerFlowStatisticsRepository : IPassengerFlowStatisticsRepository
+ {
+ ///
+ /// 添加客流信息
+ ///
+ ///
+ public void AddPassengerFlowStatistics(PassengerFlowStatisticsEntity entity)
+ {
+ var dateStr = entity.EndTime.ToString("yyyy-MM-dd");
+ using (var context = GSDBContext.GetDbContext())
+ {
+ var dayEntity = context.PassengerFlowStatisticsDayEntites.Where(f => f.Day == dateStr).FirstOrDefault();
+ entity.CreateDateTime = DateTime.Now;
+ if (dayEntity == null)
+ {
+ dayEntity = new PassengerFlowStatisticsDayEntity();
+ dayEntity.Day = dateStr;
+ dayEntity.EnterNum = entity.EnterNum;
+ dayEntity.LeaveNum = entity.LeaveNum;
+ dayEntity.DeviceIP = entity.DeviceIP;
+ dayEntity.CreateDateTime = entity.CreateDateTime;
+ context.PassengerFlowStatisticsDayEntites.Add(dayEntity);
+ }
+ else
+ {
+ dayEntity.EnterNum += entity.EnterNum;
+ dayEntity.LeaveNum += entity.LeaveNum;
+ }
+ context.PassengerFlowStatisticsEntites.Add(entity);
+ context.SaveChanges();
+ }
+ }
+
+ ///
+ /// 获取当天客流量统计
+ ///
+ ///
+ ///
+ public PassengerFlowStatisticsModel GetPassengerFlowStatisticsDayTotal(DateTime date)
+ {
+ var dateStr = date.ToString("yyyy-MM-dd");
+ PassengerFlowStatisticsModel model = new PassengerFlowStatisticsModel();
+ using (var context = GSDBContext.GetDbContext())
+ {
+ var entity = context.PassengerFlowStatisticsDayEntites.Where(f => f.Day == dateStr).FirstOrDefault();
+ if (entity != null)
+ {
+ model = ModelTools.PubClone.Trans(entity);
+ }
+ return model;
+ }
+ }
+
+ ///
+ /// 获取周客流量统计
+ ///
+ ///
+ ///
+ public List GetPassengerFlowStatisticsWeekTotal(DateTime date)
+ {
+ var endDay = DateTime.Parse(date.ToString("yyyy-MM-dd")).AddDays(1).AddSeconds(-1);
+ var begDay = DateTime.MinValue;
+ int week = (int)date.DayOfWeek;
+ if (week == 0)
+ {
+ begDay = endDay.AddDays(-6);
+ }
+ else
+ {
+ begDay = endDay.AddDays(-(week - 1));
+ }
+
+ begDay = DateTime.Parse(endDay.ToString("yyyy-MM-dd"));
+ var weekTotal = new List();
+ using (var context = GSDBContext.GetDbContext())
+ {
+ var values = context.PassengerFlowStatisticsDayEntites.Where(f => f.CreateDateTime >= begDay && f.CreateDateTime <= endDay).OrderBy(f => f.CreateDateTime).Select(f => new
+ {
+ f.EnterNum,
+ f.LeaveNum,
+ f.CreateDateTime,
+ }).ToArray();
+ weekTotal = values.Select(f => new PassengerFlowStatisticsTotalModel
+ {
+ EnterNum = f.EnterNum,
+ LeaveNum = f.LeaveNum,
+ XTypeName = ConvertDayOfWeek(f.CreateDateTime.DayOfWeek)
+ }
+ ).ToList();
+
+ return weekTotal;
+ }
+ }
+
+ private string ConvertDayOfWeek(DayOfWeek dayOfWeek)
+ {
+ var value = string.Empty;
+ switch (dayOfWeek)
+ {
+ case DayOfWeek.Sunday:
+ value = "星期天";
+ break;
+ case DayOfWeek.Monday:
+ value = "星期一";
+ break;
+ case DayOfWeek.Tuesday:
+ value = "星期二";
+ break;
+ case DayOfWeek.Wednesday:
+ value = "星期三";
+ break;
+ case DayOfWeek.Thursday:
+ value = "星期四";
+ break;
+ case DayOfWeek.Friday:
+ value = "星期五";
+ break;
+ case DayOfWeek.Saturday:
+ value = "星期六";
+ break;
+ default:
+ break;
+ }
+
+ return value;
+ }
+ }
+}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Services/IPLCCommunicationService.cs b/guidescreen/GuideScreen/GuideScreen.Common/Services/IPLCCommunicationService.cs
index 806acc7..339807b 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/Services/IPLCCommunicationService.cs
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Services/IPLCCommunicationService.cs
@@ -16,115 +16,227 @@ namespace GuideScreen.Common.Services
///
public interface IPLCCommunicationService : IDependency
{
- event EventHandler ErrorMessage;
+ #region 同步
+ ///
+ /// 连接PLC(长连接)
+ ///
+ ///
+ ///
+ PLCResult Connection(string address, int port = 0);
+
+
+ ///
+ /// 关闭连接PLC(长连接)
+ ///
+ PLCResult ColseConnection();
+
+ ///
+ /// 读取指定地址的bool值
+ ///
+ ///
+ ///
+ PLCResult ReadBool(string address);
+
+ ///
+ /// 读取指定地址的byte值
+ ///
+ ///
+ ///
+ PLCResult ReadByte(string address);
+
+ ///
+ /// 读取指定地址的Int16值
+ ///
+ ///
+ ///
+ PLCResult ReadInt16(string address);
+
+ ///
+ /// 读取指定地址的Int32值
+ ///
+ ///
+ ///
+ PLCResult ReadInt32(string address);
+
+ ///
+ /// 读取指定地址的long值
+ ///
+ ///
+ ///
+ PLCResult ReadLong(string address);
+
+ ///
+ /// 读取指定地址的Float值
+ ///
+ ///
+ PLCResult ReadFloat(string address);
+
+ ///
+ /// 读取指定地址的double值
+ ///
+ ///
+ PLCResult ReadDouble(string address);
+
+ ///
+ /// 写入bool值
+ ///
+ /// 写入地址
+ ///
+ PLCResult Write(string address, bool value);
+
+ ///
+ /// 写入byte值
+ ///
+ /// 写入地址
+ ///
+ PLCResult Write(string address, byte value);
+
+ ///
+ /// 写入Int16值
+ ///
+ /// 写入地址
+ ///
+ PLCResult Write(string address, Int16 value);
- event EventHandler InfoMessage;
+ ///
+ /// 写入Int32值
+ ///
+ /// 写入地址
+ ///
+ PLCResult Write(string address, Int32 value);
+
+ ///
+ /// 写入float值
+ ///
+ /// 写入地址
+ ///
+ PLCResult Write(string address, float value);
+
+ ///
+ /// 写入double值
+ ///
+ /// 写入地址
+ ///
+ PLCResult Write(string address, double value);
+
+ ///
+ /// 写入long值
+ ///
+ /// 写入地址
+ ///
+ PLCResult Write(string address, long value);
+
+ #endregion
+
+ #region 异步
///
/// 连接PLC(长连接)
///
///
///
- void Connection(string address, int port = 0);
+ Task ConnectionAsync(string address, int port = 0);
///
/// 关闭连接PLC(长连接)
///
- void ColseConnection();
+ Task ColseConnectionAsyn();
///
/// 读取指定地址的bool值
///
///
///
- bool ReadBool(string address);
+ Task> ReadBoolAsync(string address);
///
/// 读取指定地址的byte值
///
///
///
- byte ReadByte(string address);
+ Task> ReadByteAsync(string address);
///
/// 读取指定地址的Int16值
///
///
///
- int ReadInt16(string address);
+ Task> ReadInt16Async(string address);
///
/// 读取指定地址的Int32值
///
///
///
- int ReadInt32(string address);
+ Task> ReadInt32Async(string address);
///
/// 读取指定地址的long值
///
///
///
- long ReadLong(string address);
+ Task> ReadLongAsync(string address);
///
/// 读取指定地址的Float值
///
///
- float ReadFloat(string address);
+ Task> ReadFloatAsync(string address);
///
/// 读取指定地址的double值
///
///
- double ReadDouble(string address);
+ Task> ReadDoubleAsync(string address);
///
/// 写入bool值
///
/// 写入地址
///
- void Write(string address, bool value);
+ Task WriteAsync(string address, bool value);
///
/// 写入byte值
///
/// 写入地址
///
- void Write(string address, byte value);
+ Task WriteAsync(string address, byte value);
///
/// 写入Int16值
///
/// 写入地址
///
- void Write(string address, Int16 value);
+ Task WriteAsync(string address, Int16 value);
///
/// 写入Int32值
///
/// 写入地址
///
- void Write(string address, Int32 value);
+ Task WriteAsync(string address, Int32 value);
///
/// 写入float值
///
/// 写入地址
///
- void Write(string address, float value);
+ Task WriteAsync(string address, float value);
///
/// 写入double值
///
/// 写入地址
///
- void Write(string address, double value);
+ Task WriteAsync(string address, double value);
///
/// 写入long值
///
/// 写入地址
///
- void Write(string address, long value);
+ Task WriteAsync(string address, long value);
+
+ #endregion
}
}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Services/IPassengerFlowStatisticsService.cs b/guidescreen/GuideScreen/GuideScreen.Common/Services/IPassengerFlowStatisticsService.cs
index 298df2e..8a3491d 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/Services/IPassengerFlowStatisticsService.cs
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Services/IPassengerFlowStatisticsService.cs
@@ -1,9 +1,14 @@
using GuideScreen.Common.Common;
+using GuideScreen.Common.Services.Models;
+using GuideScreen.SDK.Monitoring;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
+using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
+using static GuideScreen.SDK.Monitoring.CHCNetSDK;
namespace GuideScreen.Common.Services
{
@@ -12,6 +17,56 @@ namespace GuideScreen.Common.Services
///
public interface IPassengerFlowStatisticsService : IDependency
{
+ event EventHandler ActionEvent;
+ event EventHandler ExceptionEvent;
+
+
+ ///
+ /// 视频设备SDK初始化
+ ///
+ ///
+ bool Init();
+
+ ///
+ /// 释放SDK资源
+ ///
+ void CleaUp();
+
+ ///
+ /// 登录视频设备
+ ///
+ /// Ip地址
+ /// 端口
+ /// 用户名
+ /// 密码
+ void Login(string ipAddress, int port, string userName, string password);
+
+ ///
+ /// 登出
+ ///
+ void Logout();
+
+ ///
+ /// 部防
+ ///
+ ///
+ void OpenAlarm();
+
+ ///
+ /// 撤防
+ ///
+ void CloseAlarm();
+
+ ///
+ /// 启用监听
+ ///
+ ///
+ void StartListen(string listenIpAddress, int port);
+
+ ///
+ /// 关闭监听
+ ///
+ void CloseListen(string ListenIpAddress);
}
}
diff --git a/guidescreen/GuideScreen/GuideScreen.Common/Services/Impl/PLCCommunicationService.cs b/guidescreen/GuideScreen/GuideScreen.Common/Services/Impl/PLCCommunicationService.cs
index 302120a..12113bb 100644
--- a/guidescreen/GuideScreen/GuideScreen.Common/Services/Impl/PLCCommunicationService.cs
+++ b/guidescreen/GuideScreen/GuideScreen.Common/Services/Impl/PLCCommunicationService.cs
@@ -26,10 +26,6 @@ namespace GuideScreen.Common.Services.Impl
{
private SiemensS7Net siemensS7Net = null;
- public event EventHandler ErrorMessage = null;
-
- public event EventHandler InfoMessage = null;
-
public PLCCommunicationService()
{
siemensS7Net = new SiemensS7Net(SiemensPLCS.S200Smart);
@@ -42,22 +38,26 @@ namespace GuideScreen.Common.Services.Impl
///
///
///
- public void Connection(string address, int port = 0)
+ public PLCResult Connection(string address, int port = 0)
{
siemensS7Net.IpAddress = address;
if (port > 0)
{
siemensS7Net.Port = port;
}
- siemensS7Net.ConnectServer();
+ var operateResult = siemensS7Net.ConnectServer();
+ var result = ConvertResult(operateResult);
+ return result;
}
///
/// 关闭连接PLC(长连接)
///
- public void ColseConnection()
+ public PLCResult ColseConnection()
{
- siemensS7Net.ConnectClose();
+ var operateResult = siemensS7Net.ConnectClose();
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -65,11 +65,11 @@ namespace GuideScreen.Common.Services.Impl
///
///
///
- public bool ReadBool(string address)
+ public PLCResult ReadBool(string address)
{
- var result = siemensS7Net.ReadBool(address);
- VerifyResult(result, address);
- return result.Content;
+ var operateResult = siemensS7Net.ReadBool(address);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -77,11 +77,11 @@ namespace GuideScreen.Common.Services.Impl
///
///
///
- public byte ReadByte(string address)
+ public PLCResult ReadByte(string address)
{
- var result = siemensS7Net.ReadByte(address);
- VerifyResult(result, address);
- return result.Content;
+ var operateResult = siemensS7Net.ReadByte(address);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -89,11 +89,11 @@ namespace GuideScreen.Common.Services.Impl
///
///
///
- public int ReadInt16(string address)
+ public PLCResult ReadInt16(string address)
{
- var result = siemensS7Net.ReadInt16(address);
- VerifyResult(result, address);
- return result.Content;
+ var operateResult = siemensS7Net.ReadInt16(address);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -101,11 +101,11 @@ namespace GuideScreen.Common.Services.Impl
///
///
///
- public int ReadInt32(string address)
+ public PLCResult ReadInt32(string address)
{
- var result = siemensS7Net.ReadInt32(address);
- VerifyResult(result, address);
- return result.Content;
+ var operateResult = siemensS7Net.ReadInt32(address);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -113,33 +113,33 @@ namespace GuideScreen.Common.Services.Impl
///
///
///
- public long ReadLong(string address)
+ public PLCResult ReadLong(string address)
{
- var result = siemensS7Net.ReadInt64(address);
- VerifyResult(result, address);
- return result.Content;
+ var operateResult = siemensS7Net.ReadInt64(address);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
/// 读取指定地址的Float值
///
///
- public float ReadFloat(string address)
+ public PLCResult ReadFloat(string address)
{
- var result = siemensS7Net.ReadFloat(address);
- VerifyResult(result, address);
- return result.Content;
+ var operateResult = siemensS7Net.ReadFloat(address);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
/// 读取指定地址的double值
///
///
- public double ReadDouble(string address)
+ public PLCResult ReadDouble(string address)
{
- var result = siemensS7Net.ReadDouble(address);
- VerifyResult(result, address);
- return result.Content;
+ var operateResult = siemensS7Net.ReadDouble(address);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -147,10 +147,11 @@ namespace GuideScreen.Common.Services.Impl
///
/// 写入地址
///
- public void Write(string address, bool value)
+ public PLCResult Write(string address, bool value)
{
- var result = siemensS7Net.Write(address, value);
- VerifyResult(result, address, value);
+ var operateResult = siemensS7Net.Write(address, value);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -158,10 +159,12 @@ namespace GuideScreen.Common.Services.Impl
///
/// 写入地址
///
- public void Write(string address, byte value)
+ public PLCResult Write(string address, byte value)
{
- var result = siemensS7Net.Write(address, value);
- VerifyResult(result, address, value);
+ var operateResult = siemensS7Net.Write(address, value);
+ var result = ConvertResult(operateResult);
+ return result;
+
}
///
@@ -169,10 +172,11 @@ namespace GuideScreen.Common.Services.Impl
///
/// 写入地址
///
- public void Write(string address, Int16 value)
+ public PLCResult Write(string address, Int16 value)
{
- var result = siemensS7Net.Write(address, value);
- VerifyResult(result, address, value);
+ var operateResult = siemensS7Net.Write(address, value);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -180,10 +184,11 @@ namespace GuideScreen.Common.Services.Impl
///
/// 写入地址
///
- public void Write(string address, Int32 value)
+ public PLCResult Write(string address, Int32 value)
{
- var result = siemensS7Net.Write(address, value);
- VerifyResult(result, address, value);
+ var operateResult = siemensS7Net.Write(address, value);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -191,10 +196,11 @@ namespace GuideScreen.Common.Services.Impl
///
/// 写入地址
///
- public void Write(string address, float value)
+ public PLCResult Write(string address, float value)
{
- var result = siemensS7Net.Write(address, value);
- VerifyResult(result, address, value);
+ var operateResult = siemensS7Net.Write(address, value);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -202,10 +208,11 @@ namespace GuideScreen.Common.Services.Impl
///
/// 写入地址
///
- public void Write(string address, double value)
+ public PLCResult Write(string address, double value)
{
- var result = siemensS7Net.Write(address, value);
- VerifyResult(result, address, value);
+ var operateResult = siemensS7Net.Write(address, value);
+ var result = ConvertResult(operateResult);
+ return result;
}
///
@@ -213,10 +220,11 @@ namespace GuideScreen.Common.Services.Impl
///
/// 写入地址
///
- public void Write(string address, long value)
+ public PLCResult Write(string address, long value)
{
- var result = siemensS7Net.Write(address, value);
- VerifyResult(result, address, value);
+ var operateResult = siemensS7Net.Write(address, value);
+ var result = ConvertResult(operateResult);
+ return result;
}
#endregion
@@ -257,7 +265,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task> ReadBoolAsync(string address)
{
var operateResult = await siemensS7Net.ReadBoolAsync(address);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -270,7 +277,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task> ReadByteAsync(string address)
{
var operateResult = await siemensS7Net.ReadByteAsync(address);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -283,7 +289,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task> ReadInt16Async(string address)
{
var operateResult = await siemensS7Net.ReadInt16Async(address);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -296,7 +301,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task> ReadInt32Async(string address)
{
var operateResult = await siemensS7Net.ReadInt32Async(address);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -309,7 +313,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task> ReadLongAsync(string address)
{
var operateResult = await siemensS7Net.ReadInt64Async(address);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -321,7 +324,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task> ReadFloatAsync(string address)
{
var operateResult = await siemensS7Net.ReadFloatAsync(address);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -333,7 +335,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task> ReadDoubleAsync(string address)
{
var operateResult = await siemensS7Net.ReadDoubleAsync(address);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -346,7 +347,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task WriteAsync(string address, bool value)
{
var operateResult = await siemensS7Net.WriteAsync(address, value);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -360,7 +360,6 @@ namespace GuideScreen.Common.Services.Impl
{
var operateResult = await siemensS7Net.WriteAsync(address, value);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -373,7 +372,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task WriteAsync(string address, Int16 value)
{
var operateResult = await siemensS7Net.WriteAsync(address, value);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -386,7 +384,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task WriteAsync(string address, Int32 value)
{
var operateResult = await siemensS7Net.WriteAsync(address, value);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -399,7 +396,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task WriteAsync(string address, float value)
{
var operateResult = await siemensS7Net.WriteAsync(address, value);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -412,7 +408,6 @@ namespace GuideScreen.Common.Services.Impl
public async Task WriteAsync(string address, double value)
{
var operateResult = await siemensS7Net.WriteAsync(address, value);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
@@ -425,61 +420,13 @@ namespace GuideScreen.Common.Services.Impl
public async Task WriteAsync(string address, long value)
{
var operateResult = await siemensS7Net.WriteAsync(address, value);
- VerifyResult(operateResult);
var result = ConvertResult(operateResult);
return result;
}
#endregion
- ///
- /// 验证结果 如果启用了 ErrorMessage 就不抛出异常信息
- ///
- ///
- ///
- ///
- private bool VerifyResult(OperateResult result, string address = "", object value = null)
- {
-
- var message = $"address:{address}";
- if (value != null)
- {
- message += $",value:{value}";
- }
-
- object content = null;
-
- if (result.GetProperties().Where(f => f.Name == "Content").Count() > 0)
- {
- content = result.GetProperty