C++

wanggege2007 2020-10-18 02:36:46
using CommonLib.common;
using CommonLib.data;
using CommonLib.DataStruct;
using CommonLib.StepData;
using CommonLib;
using DBCAnalysis;
using BAT.Common.LocalResourcess;
using LogRecord;
using NetConnectHelper.NetArgs;
using NetConnectHelper.NetData;
using sinexcel.actions;
using sinexcel.common;
using sinexcel.data;
using SqliteDataServer;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using SystemComBuffer;
using BAT.TD;
using System.IO;
using CustomControls.forms;
using sinexcel.Client;
using BAT.Framework;
using NetConnectHelper.CmdPackage;
using BAT.TD.Model;

namespace sinexcel.buffer
{
public class RealDataBuffer
{
//private Dictionary<string, DateTime> ACWarmTimeRecord = new Dictionary<string, DateTime>();
//private Dictionary<string, DateTime> DCWarmTimeRecord = new Dictionary<string, DateTime>();
private event ActionLogHandle ActionExcuteLog;
private static RealDataBuffer _instance = null;
public static RealDataBuffer Instance
{
get
{
if (_instance == null)
{
_instance = new RealDataBuffer();

}
return _instance;
}
}

Task refrechTdControlTask = null;
Task refrechUiTask = null;
CancellationTokenSource canRefresh = new CancellationTokenSource();
AutoResetEvent refrechUiEvent = new AutoResetEvent(false);
public Action<object, RefrechDataArgs> updateHandle = null;
private object lockobj = new object();
bool ModifyFlag = false;
private Dictionary<string, ChannelObject> _realDataQueue = new Dictionary<string, ChannelObject>();

private DataTable realList = null;

public Dictionary<string, ChannelObject> RealDataQueue
{
get { return _realDataQueue; }
}
public DataTable RealList
{
get { return realList; }
}

public void AddDeviceChannels(DeviceInfo dev)
{
try
{
lock (lockobj)
{
ModifyFlag = true;
List<string> ParalleledSub = new List<string>();
List<int> pschList = new List<int>();
var odList = from s in dev.ChInfo orderby s.chId select s;
foreach (ChInfoEx chinfo in odList)//dev.ChInfo
{
string key = dev.ipAddress + "-" + chinfo.chId;
if (_realDataQueue.ContainsKey(key))
{
ChannelObject chobj = _realDataQueue[key];
chobj.IsVisible = true;
chobj.Addr = dev.ipAddress;
chobj.Unit = dev.unit;
chobj.Chid = chinfo.chId;
chobj.RecordNum = chinfo.recordNum;
chobj.Stepguid = chinfo.stepGuid;
chobj.Barcoder = chinfo.barcode;
chobj.Hisguid = chinfo.hisPath;
chobj.Paralleled = false;

if (pschList.Contains(chobj.Chid))
{
chobj.Paralleled = true;
ParalleledSub.Add(key);
}
else
{
List<int> pschs = new List<int>();
foreach (Int16 ch in chinfo.pchMap)
{
if (chobj.Chid != ch)
{
pschs.Add(ch);
if (!pschList.Contains(ch))
{
pschList.Add(ch);
string skey = dev.ipAddress + "-" + ch;
ParalleledSub.Add(skey);
}
}
}
chobj.ParalleChannels = pschs.ToArray();
}

if (chobj.RealtimeAuxData == null)
{
chobj.RealtimeAuxData = new RealTimeAuxData();
}
chobj.RealtimeAuxData.singleSpecialV = dev.singleSpecialV;
chobj.RealtimeAuxData.singleSpecialVFlag = dev.singleSpecialVFlag;
chobj.RealtimeAuxData.singleSpecialT = dev.singleSpecialT;
chobj.RealtimeAuxData.singleSpecialTFlag = dev.singleSpecialTFlag;
chobj.RealtimeAuxData.singleSpecialP = dev.singleSpecialP;
chobj.RealtimeAuxData.voice = dev.voice;
chobj.RealtimeAuxData.singleSpecialPFlag = dev.singleSpecialPFlag;

if (chobj.RealtimeBmsData == null)
{
chobj.RealtimeBmsData = new RealtimeBmsData();
}
}
else
{
ChannelObject chobj = new ChannelObject();
chobj.IsVisible = true;
chobj.Addr = dev.ipAddress;
chobj.Unit = dev.unit;
chobj.Chid = chinfo.chId;
chobj.RecordNum = chinfo.recordNum;
chobj.Stepguid = chinfo.stepGuid;
chobj.Barcoder = chinfo.barcode;
chobj.Hisguid = chinfo.hisPath;
chobj.Paralleled = false;
if (pschList.Contains(chobj.Chid))//这个通道时并联的子通道
{
chobj.Paralleled = true;
ParalleledSub.Add(key);
}
else
{
List<int> pschs = new List<int>();
foreach (Int16 ch in chinfo.pchMap)
{
if (chobj.Chid != ch)
{
pschs.Add(ch);
if (!pschList.Contains(ch))
{
pschList.Add(ch);
//string skey = dev.ipAddress + "-" + ch;
//ParalleledSub.Add(skey);
}
}
}
chobj.ParalleChannels = pschs.ToArray();
_realDataQueue.Add(key, chobj);
}

if (chobj.RealtimeAuxData == null)
{
chobj.RealtimeAuxData = new RealTimeAuxData();
}
chobj.RealtimeAuxData.singleSpecialV = dev.singleSpecialV;
chobj.RealtimeAuxData.singleSpecialVFlag = dev.singleSpecialVFlag;
chobj.RealtimeAuxData.singleSpecialT = dev.singleSpecialT;
chobj.RealtimeAuxData.voice = dev.voice;
chobj.RealtimeAuxData.singleSpecialTFlag = dev.singleSpecialTFlag;
chobj.RealtimeAuxData.singleSpecialP = dev.singleSpecialP;
chobj.RealtimeAuxData.singleSpecialPFlag = dev.singleSpecialPFlag;

if (chobj.RealtimeBmsData == null)
{
chobj.RealtimeBmsData = new RealtimeBmsData();
}
}
}
RemoveChinds(ParalleledSub);
}
}
finally
{
ModifyFlag = false;
}
}

public void UpDeviceChannels()
{
try
{
lock (lockobj)
{
ModifyFlag = true;
HisDataAnalyze.DataItem.AuxDataDisplay adc = HisDataAnalyze.DataItem.AuxDataDisplay.Load();
if (adc == null)
return;

for (int i = 0; i < _realDataQueue.Count; i++)
{
ChannelObject chobj = _realDataQueue.Values.ElementAt(i);

if (chobj.RealtimeAuxData == null)
{
chobj.RealtimeAuxData = new RealTimeAuxData();
}
chobj.RealtimeAuxData.singleSpecialV = adc.VParticularValue;
chobj.RealtimeAuxData.singleSpecialVFlag = (byte)(adc.IsVParticularValue ? 1 : 0);
chobj.RealtimeAuxData.singleSpecialT = adc.TParticularValue;
chobj.RealtimeAuxData.singleSpecialTFlag = (byte)(adc.IsTParticularValue ? 1 : 0);
if (chobj.RealtimeBmsData == null)
{
chobj.RealtimeBmsData = new RealtimeBmsData();
}
}
}
}
...全文
46 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧