@@ -1,93 +0,0 @@ | |||
using Newtonsoft.Json; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Net; | |||
using System.Net.Sockets; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.Helper | |||
{ | |||
/// <summary> | |||
/// 工具 | |||
/// </summary> | |||
public class Tools | |||
{ | |||
/// <summary> | |||
/// 对象Json序列 | |||
/// </summary> | |||
/// <typeparam name="T">对象类型</typeparam> | |||
/// <param name="obj">对象实例</param> | |||
/// <returns></returns> | |||
public static string JsonConvertTools<T>(T obj) | |||
{ | |||
string strvalue = JsonConvert.SerializeObject(obj); | |||
return strvalue; | |||
} | |||
/// <summary> | |||
/// 对象反Json序列 | |||
/// </summary> | |||
/// <typeparam name="T">对象类型</typeparam> | |||
/// <param name="jsonstring">对象序列化json字符串</param> | |||
/// <returns>返回对象实例</returns> | |||
public static T JsonToObjectTools<T>(string jsonstring) | |||
{ | |||
T obj = JsonConvert.DeserializeObject<T>(jsonstring); | |||
return obj; | |||
} | |||
/// <summary> | |||
/// DateTime --> long | |||
/// </summary> | |||
/// <param name="dt"></param> | |||
/// <returns></returns> | |||
public static long ConvertDateTimeToLong(DateTime dt) | |||
{ | |||
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); | |||
TimeSpan toNow = dt.Subtract(dtStart); | |||
long timeStamp = toNow.Ticks; | |||
timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 4)); | |||
return timeStamp; | |||
} | |||
/// <summary> | |||
/// long --> DateTime | |||
/// </summary> | |||
/// <param name="d"></param> | |||
/// <returns></returns> | |||
public static DateTime ConvertLongToDateTime(long d) | |||
{ | |||
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); | |||
long lTime = long.Parse(d + "0000"); | |||
TimeSpan toNow = new TimeSpan(lTime); | |||
DateTime dtResult = dtStart.Add(toNow); | |||
return dtResult; | |||
} | |||
/// <summary> | |||
/// 获取IP 地址 | |||
/// </summary> | |||
/// <returns></returns> | |||
public static string GetLocalIp() | |||
{ | |||
//得到本机名 | |||
string hostname = Dns.GetHostName(); | |||
//解析主机名称或IP地址的system.net.iphostentry实例。 | |||
IPHostEntry localhost = Dns.GetHostEntry(hostname); | |||
if (localhost != null) | |||
{ | |||
foreach (IPAddress item in localhost.AddressList) | |||
{ | |||
//判断是否是内网IPv4地址 | |||
if (item.AddressFamily == AddressFamily.InterNetwork) | |||
{ | |||
return item.MapToIPv4().ToString(); | |||
} | |||
} | |||
} | |||
return "192.168.1.124"; | |||
} | |||
} | |||
} |
@@ -1,4 +1,8 @@ | |||
using BPASmartClient.Business; | |||
| |||
using BPA.Message.Enum; | |||
using BPA.Message.IOT; | |||
using BPASmartClient.Business; | |||
using BPASmartClient.Device; | |||
using BPASmartClient.Helper; | |||
using BPASmartClient.Message; | |||
using BPASmartDatavDeviceClient.IoT; | |||
@@ -11,7 +15,7 @@ namespace BPASmartClient.IoT | |||
/// <summary> | |||
/// DataV客户端数据中心 | |||
/// </summary> | |||
public class DataVClient | |||
public class DataVClient | |||
{ | |||
#region 单例模式 | |||
private volatile static DataVClient _Instance; | |||
@@ -36,7 +40,11 @@ namespace BPASmartClient.IoT | |||
/// <summary> | |||
/// MQTT上报集合 | |||
/// </summary> | |||
public DataVReport DeviceDataV=new DataVReport(); | |||
public DataVReport DeviceDataV = new DataVReport(); | |||
/// <summary> | |||
/// 大屏上报Model | |||
/// </summary> | |||
public DataVAPI.Tool.IOT.IOTDevSXModel iOTDevSXModel = new DataVAPI.Tool.IOT.IOTDevSXModel() { }; | |||
#endregion | |||
#region API调用 | |||
@@ -149,15 +157,32 @@ namespace BPASmartClient.IoT | |||
{ | |||
ThreadManage.GetInstance().StartLong(new Action(() => | |||
{ | |||
Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices()?.ForEach(device => | |||
if (DeviceDataV != null && DeviceDataV.GetIsConnected()) | |||
{ | |||
Dictionary<string, object> status = device.Status.GetStatus(); | |||
if (DeviceDataV.GetIsConnected()) | |||
DataVNodeStatus dataVNode = new DataVNodeStatus(); | |||
dataVNode.data = new List<object>(); | |||
Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices()?.ForEach(device => | |||
{ | |||
// DeviceDataVs[device.DeviceId.ToString()]. | |||
var obj=new | |||
{ | |||
DeviceId=device.DeviceId, | |||
Name=device.Name, | |||
DeviceType=device.DeviceType, | |||
IsBusy=device.IsBusy, | |||
IsHealth=device.IsHealth, | |||
Status=device.Status.GetStatus(), | |||
}; | |||
dataVNode.data.Add(obj); | |||
}); | |||
if (dataVNode.data.Count > 0) | |||
{ | |||
iOTDevSXModel.KZSX = Tools.JsonConvertTools<DevSX>(new DevSX { data = new List<DevSXBase> { new DevSXBase { SXMC = "", SXLX = "" } } }); | |||
iOTDevSXModel.JBSX = Tools.JsonConvertTools<DevSX>(new DevSX { data = new List<DevSXBase> { new DevSXBase { SXMC = "", SXLX = "" } } }); | |||
iOTDevSXModel.NodeStatus = Tools.JsonConvertTools<DataVNodeStatus>(dataVNode); | |||
DeviceDataV.IOT_Publish(DeviceDataV.PubTopic, iOTDevSXModel.Tojson()); | |||
} | |||
}); | |||
Thread.Sleep(5000); | |||
} | |||
Thread.Sleep(3000); | |||
}), "DataV数据上报", true); | |||
} | |||
#endregion | |||
@@ -210,4 +235,10 @@ namespace BPASmartClient.IoT | |||
set; | |||
} | |||
} | |||
public class DataVNodeStatus | |||
{ | |||
public List<object> data { get; set; } | |||
} | |||
} |
@@ -1,4 +1,5 @@ | |||
using BPASmartClient.Helper; | |||
using BPA.Message.IOT; | |||
using BPASmartClient.Helper; | |||
using BPASmartClient.IoT; | |||
using System; | |||
using System.Collections.Generic; | |||
@@ -292,7 +293,7 @@ namespace BPASmartDatavDeviceClient.IoT | |||
/// <summary> | |||
/// 属性发布消息主题 | |||
/// </summary> | |||
public static string PubTopic = "/" + ProductKey + "/" + DeviceName + "/user/update"; | |||
public string PubTopic = "/" + ProductKey + "/" + DeviceName + "/user/update"; | |||
/// <summary> | |||
/// 属性接收消息主题 | |||
/// </summary> | |||
@@ -13,6 +13,7 @@ | |||
<ItemGroup> | |||
<ProjectReference Include="..\BPASmartClient.Business\BPASmartClient.Business.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Helper\BPASmartClient.Helper.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.IoT\BPASmartClient.IoT.csproj" /> | |||
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | |||
</ItemGroup> | |||
@@ -1,4 +1,5 @@ | |||
using BPASmartClient.Message; | |||
using BPASmartClient.IoT; | |||
using BPASmartClient.Message; | |||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||
using Microsoft.Toolkit.Mvvm.Input; | |||
using Microsoft.Win32; | |||
@@ -22,7 +23,7 @@ namespace BPASmartClient.ViewModel | |||
public class LogViewModel :ObservableObject | |||
{ | |||
public DispatcherTimer dispatcherTimer; | |||
public string ClientId= System.Configuration.ConfigurationManager.AppSettings["ClientId"].ToString(); | |||
private ObservableCollection<LogModel> _LogModels; | |||
public ObservableCollection<LogModel> LogDataGrid | |||
{ | |||
@@ -56,6 +57,14 @@ namespace BPASmartClient.ViewModel | |||
System.Windows.Application.Current?.Dispatcher.Invoke((Action)(() => | |||
{ | |||
LogDataGrid.Insert(0,new LogModel { message = s,type = "Error" }); | |||
DataVClient.GetInstance().HttpAddLog(new LogTable | |||
{ | |||
ClientId = ClientId, | |||
LogTime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss"), | |||
LogType = "严重", | |||
LogMessage = s, | |||
LogVla = "错误日志", | |||
}); | |||
})); | |||
}); | |||
ExcelCommand = new RelayCommand(() => | |||