using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using ICommLayer;
using CommLayerFactory;
using DBFactory;
namespace ControlSystem
{
public class CMonitorDeviceState
{
CParsePLCData cppd = new CParsePLCData();
DBOperator dbo = new DBOperator();
DBOperator dboM = new DBOperator("ManConnString", "ManDBFactory");
private string _monitorDeviceStateError = "";
///
/// 实时监控设备状态时发生的故障
///
public string MonitorDeviceStateError
{
get { return _monitorDeviceStateError; }
set { _monitorDeviceStateError = value; }
}
public CMonitorDeviceState()
{
}
///
/// 实时监视每个设备(堆垛机、输送机、RGV)的运行、故障、入口探物、出口探物;
/// 反馈实时状态到FrmControlMonitor;反馈故障信息到管理的路径表IO_ROUTEPATH和调度T_Base_Device表F_ErrorCode
///
public void RealTimeMonitorDeviceState()
{
string sql = "SELECT F_DeviceIndex, F_DeviceKindIndex, F_BindingDevice, F_BindingDeviceOut,F_DeviceVisual, F_ControlName, F_Picture, F_ErrorCode, F_HaveGoods FROM T_Base_Device WHERE (F_DeviceKindIndex = 1) OR (F_DeviceKindIndex = 2) OR (F_DeviceKindIndex = 4)";
DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView;
for (int i = 0; i < dv.Count; i++)
{
int[] states= cppd.GetDeviceState(Convert.ToInt32(dv[i]["F_DeviceIndex"]));
if (states == null) continue;
if (states[1] == 1)//运行
{
}
if (states[1] >= 30)//故障
{
}
if (dv[i]["F_BindingDevice"] != DBNull.Value)//找到它对应的设备索引的F_ControlName
{
string sqlb = "SELECT F_DeviceIndex, F_DeviceKindIndex, F_BindingDevice, F_BindingDeviceOut,F_DeviceVisual, F_ControlName, F_Picture, F_ErrorCode, F_HaveGoods FROM T_Base_Device WHERE (F_DeviceKindIndex = " + dv[i]["F_BindingDevice"] + ") ";
DataView dvb = dbo.ExceSQL(sqlb).Tables[0].DefaultView;
if (dvb.Count > 0)
{
}
}
if (dv[i]["F_BindingDeviceOut"] != DBNull.Value)//找到它对应的设备索引的F_ControlName
{
string sqlb = "SELECT F_DeviceIndex, F_DeviceKindIndex, F_BindingDevice, F_BindingDeviceOut,F_DeviceVisual, F_ControlName, F_Picture, F_ErrorCode, F_HaveGoods FROM T_Base_Device WHERE (F_DeviceKindIndex = " + dv[i]["F_BindingDeviceOut"] + ") ";
DataView dvb = dbo.ExceSQL(sqlb).Tables[0].DefaultView;
if (dvb.Count > 0)
{
}
}
}
}
}
}