AHTC/RGD/RGD.DataService/BaseDeviceService.cs
2025-05-19 09:22:33 +08:00

434 lines
15 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using RGD.DBUtility;
using RGD.Model;
using System;
using System.Collections.Generic;
using System.Data;
namespace RGD.DataService
{
public static class BaseDeviceService
{
private static Dictionary<int, Model.MError> _DeviceErrors;
public static Dictionary<int, Model.MError> DeviceErrors
{
get { return _DeviceErrors; }
set { _DeviceErrors = value; }
}
public static void SetDeviceMessage(Model.MDevice deviceinfo)
{
_DeviceInfo[deviceinfo.DeviceIndex].ReturnMessage = deviceinfo.ReturnMessage;
}
/// <summary>
/// 初始化设备故障信息
/// </summary>
public static void AddDeviceErrors()
{
_DeviceErrors = new Dictionary<int, Model.MError>();
DataView dv = DbHelperSQL.Query("SELECT F_ErrorIndex, F_DeviceKindIndex, F_DeviceErrorIndex, F_ErrorName, F_ErrorLevel, F_ManageStatus FROM T_Base_Device_State where F_DeviceErrorIndex>=30").Tables[0].DefaultView;
for (int i = 0; i < dv.Count; i++)
{
Model.MError errs = new Model.MError();
errs.ErrorIndex = Convert.ToInt32(dv[i]["F_ErrorIndex"]);
errs.DeviceErrorIndex = Convert.ToInt32(dv[i]["F_DeviceErrorIndex"]);
errs.DeviceKindIndex = Convert.ToInt32(dv[i]["F_DeviceKindIndex"]);
errs.DeviceErrorIndex = Convert.ToInt32(dv[i]["F_DeviceErrorIndex"]);
errs.ErrorName = dv[i]["F_ErrorName"].ToString();
errs.ErrorLevel = Convert.ToInt32(dv[i]["F_ErrorLevel"]);
errs.ManageStatus = Convert.ToInt32(dv[i]["F_ManageStatus"]);
_DeviceErrors.Add(Convert.ToInt32(errs.DeviceKindIndex.ToString() + errs.DeviceErrorIndex.ToString()), errs);
}
}
/// <summary>
/// 通过设备类型+设备故障代码获取故障信息
/// </summary>
/// <param name="errID">设备类型+设备故障代码</param>
/// <returns></returns>
public static Model.MError GetErrorInfo(int errID)
{
MError value;
if (false == _DeviceErrors.TryGetValue(errID, out value))
{
// value = _DeviceErrors[1111];
}
return value;
}
#region
private static Dictionary<int, Model.MDevice> _DeviceInfo;
/// <summary>
/// 加载到内存中的设备信息集合
/// </summary>
public static Dictionary<int, Model.MDevice> DeviceInfo
{
get { return _DeviceInfo; }
set { _DeviceInfo = value; }
}
/// <summary>
/// 向内存中添加设备信息
/// </summary>
public static void AddDeviceInfo()
{
_DeviceInfo = new Dictionary<int, Model.MDevice>();
DataView dv = DbHelperSQL.Query("select * from T_Base_Device ").Tables[0].DefaultView;
for (int i = 0; i < dv.Count; i++)
{
Model.MDevice devinfo = new Model.MDevice();
if (dv[i]["F_AppendBarcode"] == DBNull.Value)
{
devinfo.AppendBarcode = 0;
}
else
{
devinfo.AppendBarcode = (int)dv[i]["F_AppendBarcode"];
}
if (dv[i]["F_BeDetected"] == DBNull.Value)
{
devinfo.BeDetected = null;
}
else
{
devinfo.BeDetected = dv[i]["F_BeDetected"].ToString();
}
if (dv[i]["F_BindingDevice"] == DBNull.Value)
{
devinfo.BindingDevice = null;
}
else
{
devinfo.BindingDevice = dv[i]["F_BindingDevice"].ToString();
}
if (dv[i]["F_BindingDeviceOut"] == DBNull.Value)
{
devinfo.BindingDeviceOut = null;
}
else
{
devinfo.BindingDeviceOut = dv[i]["F_BindingDeviceOut"].ToString();
}
if (dv[i]["F_CommType"] == DBNull.Value)
{
devinfo.CommType = null;
}
else
{
devinfo.CommType = dv[i]["F_CommType"].ToString();
}
if (dv[i]["F_DBW1Address"] == DBNull.Value)
{
devinfo.Dbw1Address = -1;
}
else
{
devinfo.Dbw1Address = (int)(dv[i]["F_DBW1Address"]);
}
if (dv[i]["F_DBWSendLength"] == DBNull.Value)
{
devinfo.Dbw1SendLength = 0;
}
else
{
devinfo.Dbw1SendLength = (int)dv[i]["F_DBWSendLength"];
}
if (dv[i]["F_DBW2Address"] == DBNull.Value)
{
devinfo.Dbw2Address = -1;
}
else
{
devinfo.Dbw2Address = (int)dv[i]["F_DBW2Address"];
}
if (dv[i]["F_DBWGetLength"] == DBNull.Value)
{
devinfo.Dbw2Getlength = 0;
}
else
{
devinfo.Dbw2Getlength = (decimal)dv[i]["F_DBWGetLength"];
}
if (dv[i]["F_DeviceIndex"] == DBNull.Value)
{
devinfo.DeviceIndex = 0;
}
else
{
devinfo.DeviceIndex = (int)dv[i]["F_DeviceIndex"];
}
if (dv[i]["F_DeviceKindIndex"] == DBNull.Value)
{
devinfo.DeviceKind = 0;
}
else
{
devinfo.DeviceKind = (int)dv[i]["F_DeviceKindIndex"];
}
if (dv[i]["F_DeviceName"] == DBNull.Value)
{
devinfo.DeviceName = null;
}
else
{
devinfo.DeviceName = (string)dv[i]["F_DeviceName"];
}
if (dv[i]["F_DeviceVisual"] == DBNull.Value)
{
devinfo.DeviceVisual = 0;
}
else
{
devinfo.DeviceVisual = (int)dv[i]["F_DeviceVisual"];
}
if (dv[i]["F_KeyDevice"] == DBNull.Value)
{
devinfo.IfKeyDevice = '0';
}
else
{
devinfo.IfKeyDevice = Convert.ToChar(dv[i]["F_KeyDevice"]);
}
if (dv[i]["F_MaxSendCount"] == DBNull.Value)
{
devinfo.MaxSendCount = 0;
}
else
{
devinfo.MaxSendCount = (int)dv[i]["F_MaxSendCount"];
}
if (dv[i]["F_NeedOptimize"] == DBNull.Value)
{
devinfo.NeedOptimize = '0';
}
else
{
devinfo.NeedOptimize = Convert.ToChar(dv[i]["F_NeedOptimize"]);
}
if (dv[i]["F_SendInterval"] == DBNull.Value)
{
devinfo.SendInterval = 0;
}
else
{
devinfo.SendInterval = (int)dv[i]["F_SendInterval"];
}
if (dv[i]["F_LocalIP"] == DBNull.Value)
{
devinfo.LocalIP = "";
}
else
{
devinfo.LocalIP = (string)dv[i]["F_LocalIP"];
}
if (dv[i]["F_LocalPort"] == DBNull.Value)
{
devinfo.LocalPort = 0;
}
else
{
devinfo.LocalPort = (int)dv[i]["F_LocalPort"];
}
if (dv[i]["F_RemoteIP"] == DBNull.Value)
{
devinfo.RemoteIP = "";
}
else
{
devinfo.RemoteIP = (string)dv[i]["F_RemoteIP"];
}
if (dv[i]["F_RemotePort"] == DBNull.Value)
{
devinfo.RemotePort = 0;
}
else
{
devinfo.RemotePort = (int)dv[i]["F_RemotePort"];
}
if (dv[i]["F_OPCProgID"] == DBNull.Value)
{
devinfo.OPCProgID = "";
}
else
{
devinfo.OPCProgID = (string)dv[i]["F_OPCProgID"];
}
if (dv[i]["F_ErrorTaskNo"] == DBNull.Value)
{
devinfo.ErrorTaskNo = 0;
}
else
{
devinfo.ErrorTaskNo = (int)dv[i]["F_ErrorTaskNo"];
}
if (dv[i]["F_SendOutDetect"] == DBNull.Value)
{
devinfo.SendOutDetect = "0";
}
else
{
devinfo.SendOutDetect = dv[i]["F_SendOutDetect"].ToString();
}
//
if (dv[i]["F_OnlyDetectIO"] == DBNull.Value)
{
devinfo.OnlyDetectIO = "0";
}
else
{
devinfo.OnlyDetectIO = dv[i]["F_OnlyDetectIO"].ToString();
}
if (dv[i]["F_UseCommonDB"] == DBNull.Value)
{
devinfo.UseCommonDB = "0";
}
else
{
devinfo.UseCommonDB = dv[i]["F_UseCommonDB"].ToString();
}
if (dv[i]["F_IfCorrelDoubleFork"] == DBNull.Value)
{
devinfo.IfCorrelDoubleFork = "0";
}
else
{
devinfo.IfCorrelDoubleFork = dv[i]["F_IfCorrelDoubleFork"].ToString();
}
if (dv[i]["F_DoubleForkDetect"] == DBNull.Value)
{
devinfo.DoubleForkDetect = "0";
}
else
{
devinfo.DoubleForkDetect = dv[i]["F_DoubleForkDetect"].ToString();
}
if (dv[i]["F_DoubleFork"] == DBNull.Value)
{
devinfo.DoubleFork = "0";
}
else
{
devinfo.DoubleFork = dv[i]["F_DoubleFork"].ToString();
}
//20100609
if (dv[i]["F_SerialPort"] == DBNull.Value)
{
devinfo.SerialPort = 0;
}
else
{
devinfo.SerialPort = Convert.ToInt32(dv[i]["F_SerialPort"]);
}
//20100609
if (dv[i]["F_CommSettings"] == DBNull.Value)
{
devinfo.CommSettings = "0";
}
else
{
devinfo.CommSettings = dv[i]["F_CommSettings"].ToString();
}
//20100714
if (dv[i]["F_S7Connection"] == DBNull.Value)
{
devinfo.S7Connection = "S7:[S7 connection_1]";
}
else
{
devinfo.S7Connection = dv[i]["F_S7Connection"].ToString();
}
//20101118
if (dv[i]["F_SplitByte"] == DBNull.Value)
{
devinfo.SplitByte = -1;
}
else
{
devinfo.SplitByte = Convert.ToInt32(dv[i]["F_SplitByte"]);
}
_DeviceInfo.Add(devinfo.DeviceIndex, devinfo);
}
}
/// <summary>
/// 更新内存中的设备可变信息故障码是否有物运行状态任务号当前X、Y坐标控制方式托盘条形码
/// </summary>
/// <param name="deviceinfo"></param>
public static void SetDeviceInfo(Model.MDevice deviceinfo)
{
_DeviceInfo[deviceinfo.DeviceIndex].ErrorCode = deviceinfo.ErrorCode;
_DeviceInfo[deviceinfo.DeviceIndex].HaveGoods = deviceinfo.HaveGoods;
_DeviceInfo[deviceinfo.DeviceIndex].RunState = deviceinfo.RunState;
_DeviceInfo[deviceinfo.DeviceIndex].TaskNo = deviceinfo.TaskNo;
_DeviceInfo[deviceinfo.DeviceIndex].XCoor = deviceinfo.XCoor;
_DeviceInfo[deviceinfo.DeviceIndex].YCoor = deviceinfo.YCoor;
_DeviceInfo[deviceinfo.DeviceIndex].ControlMode = deviceinfo.ControlMode;
_DeviceInfo[deviceinfo.DeviceIndex].Barcode = deviceinfo.Barcode;
}
/// <summary>
/// 通过设备索引反馈设备信息
/// </summary>
/// <param name="DeviceIndex">设备索引</param>
/// <returns></returns>
public static Model.MDevice GetDeviceInfo(int DeviceIndex)
{
if (_DeviceInfo.ContainsKey(DeviceIndex) == true)
{
return _DeviceInfo[DeviceIndex];
}
else
{
return null;
}
}
#endregion
#region
/// <summary>
/// 获得设备类型索引
/// </summary>
/// <param name="devIdx">设备索引</param>
/// <returns>设备类型索引</returns>
public static int GetDeviceKindIdx(int devIdx)
{
try
{
return GetDeviceInfo(devIdx).DeviceKind;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 发送设备的送出指令时,需要检测的光电开关设备索引
/// </summary>
/// <param name="devinx"></param>
/// <returns></returns>
public static string GetSendOutDetect(int devinx)
{
MDevice devinfo = BaseDeviceService.GetDeviceInfo(devinx);
if (devinfo.SendOutDetect == null) return "";
return devinfo.SendOutDetect;
}
/// <summary>
///设备状态变化时更新设备上一次的状态
/// </summary>
/// <param name="deviceinfo"></param>
public static void SetDeviceLastRunState(Model.MDevice deviceinfo)
{
_DeviceInfo[deviceinfo.DeviceIndex].LastRunState = deviceinfo.LastRunState;
}
#endregion
}
}