Commit 05711223 LN

温湿度bug修改

1 个父辈 09172170


using log4net;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text;
namespace OnlineStore.Common
{
......@@ -13,7 +14,7 @@ namespace OnlineStore.Common
/// 壁挂王字壳温湿度变送器(485型)
/// </summary>
public class HumitureController
{
{
private static int bautRate = 4800;//波特率
private static Parity parity = Parity.None;//校验位
private static int dataBits = 8;//数据位
......@@ -21,6 +22,8 @@ namespace OnlineStore.Common
private static string LogName = "";
private static Dictionary<string, AcSerialBean> serialBeanMap = new Dictionary<string, AcSerialBean>();
private static ConcurrentDictionary<string, HumitureParam> lastDataMap = new ConcurrentDictionary<string, HumitureParam>();
public static int HumitureControllerType = ConfigAppSettings.GetIntValue(Setting_Init.HumitureControllerType);
public static bool Init(string port)
{
......@@ -66,7 +69,7 @@ namespace OnlineStore.Common
ClosePort(key);
}
}
public static void ClosePort(string portName)
public static void ClosePort(string portName)
{
AcSerialBean bean = GetSerialBean(portName);
if (bean == null)
......@@ -93,15 +96,29 @@ namespace OnlineStore.Common
}
return null;
}
// public static ASTemperateParam LastData = new ASTemperateParam(0, 0);
public static HumitureParam QueryData(string port)
{
if (lastDataMap.TryGetValue(port, out HumitureParam lastparam))
{
//1秒以内不需要重新查询
TimeSpan span = DateTime.Now - lastparam.UpdateTime;
if (span.TotalSeconds <= 5)
{
return lastparam;
}
else
{
lastDataMap.TryRemove(port, out lastparam);
}
}
HumitureParam param = new HumitureParam(0, 0);
List<double> data = queryData(port);
if (data.Count.Equals(2))
{
param = new HumitureParam(data[1], data[0]);
}
lastDataMap.TryAdd(port, param);
return param;
}
/// <summary>
......
......@@ -1048,10 +1048,14 @@ namespace OnlineStore.DeviceLibrary
if (isInProcess)
{
TimeSpan span = DateTime.Now - lastConTime;
if (span.TotalSeconds < 60)
if (span.TotalSeconds < 3)
{
return;
}
else
{
LogUtil.error($"{Name}server_connect_timer_Tick 已耗时{span.TotalSeconds}秒,重新处理");
}
}
isInProcess = true;
lastConTime = DateTime.Now;
......
......@@ -72,12 +72,10 @@ namespace OnlineStore.DeviceLibrary
{
try
{
if ((DateTime.Now - preLogTime).TotalSeconds > (8 + box.DeviceID))
if ((DateTime.Now - preLogTime).TotalSeconds > (5 + box.DeviceID))
{
preLogTime = DateTime.Now;
//用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4
//温湿度
//ASTemperateParam param = HumitureServer.GetTemperateParam(Config.GetTempAddrList());
HumitureParam param = QueryData();
double humidity = 0;
double temp = 0;
......@@ -87,48 +85,10 @@ namespace OnlineStore.DeviceLibrary
temp = param.Temperate;
currTempStr = Name + ("湿度:" + humidity.ToString() + ",温度:" + temp);
}
//double currMaxHumidity = HumitureServer.GetMaxHumidity(Config.GetTempAddrList());
double currMaxHumidity = param.Humidity;
float startBlowHumidity = Max_Humidity - StartBlowValue;
float stopBlowHumidity = Max_Humidity - StopBlowValue;
////判断是否需要吹气
//if (startBlowHumidity > 0 && startBlowHumidity < currMaxHumidity && IsInBlowing.Equals(false))
//{
// //判断是否距离上次结束指定的时间
// TimeSpan span = DateTime.Now - LastEndBlowTime;
// if (span.TotalMinutes > box.Config.BlowAir_Interval)
// {
// LogUtil.info(Name + "当前最大湿度:" + currMaxHumidity.ToString() + ",开始吹气湿度:" + startBlowHumidity + ",当前不在吹气中,且间隔超过" + box.Config.BlowAir_Interval + "分钟,开始吹气!");
// IsInBlowing = true;
// //Thread.Sleep(100);
// box.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.HIGH);
// LastBeginBlowTime = DateTime.Now;
// LastEndBlowTime = DateTime.Now;
// }
//}
//if (IsInBlowing && stopBlowHumidity > currMaxHumidity)
//{
// LogUtil.info(Name + "当前最大湿度:" + currMaxHumidity.ToString() + ",停止吹气湿度:" + stopBlowHumidity + ",停止吹气!");
// IsInBlowing = false;
// box.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
// LastEndBlowTime = DateTime.Now;
//}
//if (IsInBlowing)
//{
// //判断是否需要结束吹气
// TimeSpan span = DateTime.Now - LastBeginBlowTime;
// if (span.TotalMinutes > box.Config.BlowAir_Time)
// {
// LogUtil.info(Name + "已经吹气" + span.TotalMinutes + "分钟,超过配置的吹气时间" + box.Config.BlowAir_Time + "分钟,停止吹气!");
// IsInBlowing = false;
// //Thread.Sleep(100);
// box.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
// LastEndBlowTime = DateTime.Now;
// }
//}
bool needAlarm = false;
//如果开始吹气并且当前达到报警值
if (IsInBlowing && humidity > Max_Humidity)
......@@ -138,7 +98,7 @@ namespace OnlineStore.DeviceLibrary
else if (temp > Max_Temperature && Max_Temperature > 0)
{
LogUtil.info(Name + "当前温度【" + param.Temperate + "】超过最高温度【" + Max_Temperature + "】,开始报警!");
needAlarm = true;
needAlarm = true;
//box.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
}
else if (temp < Max_Temperature)
......@@ -146,7 +106,7 @@ namespace OnlineStore.DeviceLibrary
if (IsInBlowing.Equals(false) && TempOrHumidityIsAlarm)
{
LogUtil.info(Name + "不在吹气中,且当前温度【" + param.Temperate + "】低于【" + Max_Temperature + "】,关闭报警!");
TempOrHumidityIsAlarm = false;
TempOrHumidityIsAlarm = false;
//box.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
}
}
......@@ -186,6 +146,6 @@ namespace OnlineStore.DeviceLibrary
#endregion
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!