宜昌华友成品
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1325 lines
59 KiB

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using ICommLayer;
using CommLayerFactory;
using DBFactory;
namespace ControlSystem
{
/// <summary>
/// Creator:Richard.liu
///
/// ����ص�ȫ�ֱ����Ķ���
/// </summary>
public static class CStaticClass
{
static StringBuilder sss = new StringBuilder();
static StringBuilder[] wv = {new StringBuilder("2") };
static StringBuilder[] witemnames ={ new StringBuilder("") };
static char[] dd = new char[1] { '.' };//20101124
static string[] sp;//20101124
static string _userID;
/// <summary>
/// �û�����
/// </summary>
public static string UserID
{
get { return CStaticClass._userID; }
set { CStaticClass._userID = value; }
}
static int _MessageIndex;
static bool _Order;//
static bool _ObtainManageTask;//
static bool _autoOrder;
static bool _handOrder;
static bool _tempOrder;
static ISendDeviceOrder sdo;
//20100108
static IGetDeviceState gds;
//20091102
public static int gcCount = 0;
//20091107
static string _movedDeviceAheadTrigger = "1";
/// <summary>
/// �ƶ��豸�Ƿ�����ǰ������ȡ
/// </summary>
public static string MovedDeviceAheadTrigger
{
get { return CStaticClass._movedDeviceAheadTrigger; }
set
{
if ((value == "0") || (value == "1"))
{
CStaticClass._movedDeviceAheadTrigger = value;
}
else
{
CStaticClass._movedDeviceAheadTrigger = "1";
}
}
}
static string _outDetectArrowIdleGoods = "1";
/// <summary>
/// �Ѷ��������Ƿ�����Ŀ�����ͻ����к�����
/// </summary>
public static string OutDetectArrowIdleGoods
{
get { return CStaticClass._outDetectArrowIdleGoods; }
set
{
if ((value == "0") || (value == "1"))
{
CStaticClass._outDetectArrowIdleGoods = value;
}
else
{
CStaticClass._outDetectArrowIdleGoods = "1";
}
}
}
static string _deviceErrorAutoModifyRoutePath = "0";
/// <summary>
/// �豸���������Զ�����·��
/// </summary>
public static string DeviceErrorAutoModifyRoutePath
{
get { return CStaticClass._deviceErrorAutoModifyRoutePath; }
set
{
if ((value == "0") || (value == "1"))
{
CStaticClass._deviceErrorAutoModifyRoutePath = value;
}
else
{
CStaticClass._deviceErrorAutoModifyRoutePath = "0";
}
}
}
static string _doubleForkWaitTime = "120";
/// <summary>
/// ˫�������������������ȴ���ʱ�䵥λ���룩��Ĭ��120��
/// </summary>
public static string DoubleForkWaitTime
{
get { return CStaticClass._doubleForkWaitTime; }
set
{
if (Microsoft.VisualBasic.Information.IsNumeric(_doubleForkWaitTime)==true )
{
CStaticClass._doubleForkWaitTime = value;
}
else
{
CStaticClass._doubleForkWaitTime = "120";
}
}
}
static string _transportTimeout = "5";
/// <summary>
/// ���ͳ�ʱ��������ʱ�䵥λ���֣���Ĭ��5����//20110608
/// </summary>
public static string TransportTimeout
{
get { return CStaticClass._transportTimeout; }
set
{
if (Microsoft.VisualBasic.Information.IsNumeric(_transportTimeout) == true)
{
CStaticClass._transportTimeout = value;
}
else
{
CStaticClass._transportTimeout = "5";
}
}
}
static string _agvAllowSingleFork = "0";
/// <summary>
/// AGV�Ƿ��������涯������Ĭ��˫��һ������ 0
/// </summary>
public static string AGVAllowSingleFork
{
get { return CStaticClass._agvAllowSingleFork; }
set
{
if ((value == "0") || (value == "1"))
{
CStaticClass._agvAllowSingleFork = value;
}
else
{
CStaticClass._agvAllowSingleFork = "0";
}
}
}
//20100108
/// <summary>
/// ����ͷ������IP
/// </summary>
public static string CameraIP = "1";
/// <summary>
/// ��½����ͷ���������û���ʶ
/// </summary>
public static string CameraUsername = "1";
/// <summary>
/// ��½����ͷ������������
/// </summary>
public static string CameraPassword = "1";
public static bool IfRemind = false;
public static DateTime routetime=DateTime.Now;
public static DBOperator dbo =new DBOperator();
public static DBOperator dbo1 = new DBOperator();
public static DBOperator dboM = new DBOperator("ManConnString", "ManDBFactory");
public static System.Windows.Forms.Form FormMonitor = null;
static bool _deviceInit;
static string _routeSearchMode="0";
static bool _realRefresh=true;
public static Model.MDevice devinfo28;
//20100609
public static Dictionary<int, System.IO.Ports.SerialPort> serialports=new Dictionary<int,System.IO.Ports.SerialPort>();
static Model.MDevice devinfo;
static string _manstatus = " F_Status<>-1 ";//Ĭ�ϣ���ʾ��������ȫ������
static string _monstatus = " F_Status<>-1 ";//Ĭ�ϣ���ʾ�豸ָ��ȫ������
static StringBuilder manZWhere = new StringBuilder();
/// <summary>
/// ��ȡ���������ţ�Z����between����OR��ϵ
/// </summary>
public static StringBuilder ManZWhere
{
get { return CStaticClass.manZWhere; }
set {
CStaticClass.manZWhere = value;
}
}
//20100607�������ݿ��๤����ʼ��
static string _manDBFactory = dboM.GetValue("ManDBFactory");
/// <summary>
/// ����ϵͳ�����ݿ⹤����SQLServerDBFactory��OracleDBFactory��OleDBFactory
/// </summary>
public static string ManDBFactory
{
get { return CStaticClass._manDBFactory; }
set
{
if ((value == "SQLServerDBFactory") || (value == "OracleDBFactory") || (value == "OleDBFactory"))
{
CStaticClass._manDBFactory = value;
}
else
{
CStaticClass._manDBFactory = "SQLServerDBFactory";
}
}
}
/// <summary>
/// ��ʾ��������ȫ������" F_Status<>-1 ";�ȴ�����" F_Status=0 "�����ж���" F_Status=1 "��
/// </summary>
public static string Manstatus
{
get { return CStaticClass._manstatus; }
set { CStaticClass._manstatus = value; }
}
/// <summary>
/// ��ʾ�豸ָ��ȫ������" F_Status<>-1 ";�ȴ�����" F_Status=0 "�����ж���" F_Status=1 "��
/// </summary>
public static string Monstatus
{
get { return CStaticClass._monstatus; }
set { CStaticClass._monstatus = value; }
}
/// <summary>
/// �Ƿ�ʵʱˢ�¼��غ͵��������б�
/// </summary>
public static bool RealRefresh
{
get { return CStaticClass._realRefresh; }
set { CStaticClass._realRefresh = value; }
}
/// <summary>
/// ·��������ʽ:0����������·��ѡ���̶�·�ߣ�1��ÿ�����ڹ����Ľڵ���Ϊ��ʼ�㣬��ĩ�˽ڵ�����������һ������·���Ľڵ�
/// </summary>
public static string RouteSearchMode
{
get { return CStaticClass._routeSearchMode; }
set {
if ((value == "0") || (value == "1"))
{
CStaticClass._routeSearchMode = value;
}
else
{
CStaticClass._routeSearchMode = "0";
}
}
}
/// <summary>
/// ִ���Զ������
/// </summary>
public static bool AutoOrder
{
get { return CStaticClass._autoOrder; }
set { CStaticClass._autoOrder = value; }
}
/// <summary>
/// ִ���ֹ������
/// </summary>
public static bool HandOrder
{
get { return CStaticClass._handOrder; }
set { CStaticClass._handOrder = value; }
}
/// <summary>
/// ִ����ʱ���������
/// </summary>
public static bool TempOrder
{
get { return CStaticClass._tempOrder; }
set { CStaticClass._tempOrder = value; }
}
/// <summary>
/// ���ط�����Ϣ����
/// </summary>
public static int MessageIndex
{
get { return CStaticClass._MessageIndex; }
set
{
if (value > 240)
{
value = 1;
}
CStaticClass._MessageIndex = value;
}
}
/// <summary>
/// ������Ƿ�����
/// </summary>
public static bool Order
{
get { return CStaticClass._Order; }
set { CStaticClass._Order = value; }
}
/// <summary>
/// �Ƿ���ȡ��������
/// </summary>
public static bool ObtainManageTask
{
get { return _ObtainManageTask; }
set { _ObtainManageTask = value; }
}
/// <summary>
/// �Ƿ�ִ���豸��ʼ������
/// </summary>
public static bool DeviceInit
{
get { return CStaticClass._deviceInit; }
set { CStaticClass._deviceInit = value; }
}
public static void ReConnect()
{
//20100127
//SimensProdave6.CSimensProdave6_S7.InitCount = 0;
SocketsTCPIP.CClientTCPIP.TcpIPInitCount = 0;
OPCClient.CCommonOPCClient.ConnectCount = new Dictionary<string, int>();
}
static StringBuilder sql = new StringBuilder();
public static int[] AllReturns;
static string GetDeviceS7Connection(int deviceindex)
{//20110216
DataView dv = dbo.ExceSQL("SELECT F_S7Connection FROM T_Base_Device WHERE (F_DeviceIndex = " + deviceindex + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
return dv[0]["F_S7Connection"].ToString();
}
else
{
return null;
}
}
/// <summary>
/// 20110216֧�ֶ���S7Connnection��̬OPC
/// </summary>
public static Dictionary <string,int[]> MutiS7ConnReturns=new Dictionary<string,int[]>();
/// <summary>
/// ȡ�����й��翪�ص��ź�
/// </summary>
public static void GetAllReturns()
{//20110216
try
{
DataView dv = dbo.ExceSQL("SELECT F_DeviceIndex,F_S7Connection FROM T_Base_Device WHERE (F_DeviceKindIndex = 28)").Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
gds = CommModeCreate.CreateGetDeviceState(Convert.ToInt32(dv[i]["F_DeviceIndex"]));
MutiS7ConnReturns[dv[i]["F_S7Connection"].ToString()] = gds.GetDeviceState(Convert.ToInt32(dv[i]["F_DeviceIndex"]), 0);
if (gds.CommLayerError != null)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("ȡ�����й��翪�ص��ź�ʱ��" + gds.CommLayerError) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "ȡ�����й��翪�ص��ź�ʱ��" + gds.CommLayerError, true);
}
}
}
}
else
{
MutiS7ConnReturns = null;
}
}
catch (Exception ex)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("ȡ�����й��翪�ص��ź�ʱ��" + ex.Message) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "ȡ�����й��翪�ص��ź�ʱ��" + ex.Message, true);
}
return;
}
}
/// <summary>
/// ȡ��ָ�����翪�أ�ȷ�ϰ�ť���豸�������źţ�0��1��
/// </summary>
/// <param name="deviceIdx">�豸����</param>
/// <returns>0��1</returns>
public static int GetDevicePhotoelectric(int deviceIdx)
{
try
{
//20110216
AllReturns = CStaticClass.MutiS7ConnReturns[GetDeviceS7Connection(deviceIdx)];
if (AllReturns != null)
{
#region ��ȡ��������ֵ
//DataView dvle = dbo.ExceSQL("SELECT F_DeviceIndex, F_DeviceKindIndex,F_DBWGetLength," +
// " F_DBW2Address FROM T_Base_Device WHERE ((F_DeviceKindIndex = 14)" +
// " OR (F_DeviceKindIndex = 18)) and (F_DBW2Address is not NULL) and F_DeviceIndex=" + deviceIdx + "").Tables[0].DefaultView;
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
int glen = 0;
int IfVis = 0;
if ((devinfo.DeviceKind == 14) || (devinfo.DeviceKind == 18))
{
//20110216
devinfo28 = Model.CGeneralFunction.GetDevice28AllDB1Data(new StringBuilder(devinfo.S7Connection));
int temp = devinfo.Dbw2Address - devinfo28.Dbw2Address;
if (Convert.ToInt32((devinfo.Dbw2Getlength * 8 - 1)) > 7)
{
glen = Convert.ToInt32((devinfo.Dbw2Getlength * 8 - 1)) - 8;
temp = temp + 1;
}
else
{
glen = Convert.ToInt32((devinfo.Dbw2Getlength * 8 - 1));
}
if (temp >= 0)
{
IfVis = CommonClassLib.CCarryConvert.GetBitFromInteger(AllReturns[temp], glen);
//if (dvle[0]["F_DeviceKindIndex"].ToString() == "18")
//{//�����������翪��0��̽�1��̽�������ȡ�����������߼�
// if (IfVis == 1)
// {
// IfVis = 0;
// }
// else
// {
// IfVis = 1;
// }
//}
return IfVis;
}
else
{
return -1;
}
}
else
{
return -1;
}
#endregion
}
else
{
return -1;
}
}
catch (Exception ex)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("ȡ��ָ�����翪�ص��ź�ʱ��" + ex.Message) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "ȡ��ָ�����翪�ص��ź�ʱ��" + ex.Message, true);
}
return -1;
}
}
/// <summary>
/// 20101118�����豸�ź�bitλ��ȡ��F_SplitByte���Ĺ���bitֵ��0,1
/// </summary>
/// <param name="deviceIdx"></param>
/// <param name="bit"></param>
/// <returns></returns>
public static int GetDevicePhotoelectric(int deviceIdx,int abit)
{
try
{
//20110216
AllReturns = CStaticClass.MutiS7ConnReturns[GetDeviceS7Connection(deviceIdx)];
if (AllReturns != null)
{
#region ��ȡ��������ֵ
//DataView dvle = dbo.ExceSQL("SELECT F_DeviceIndex, F_DeviceKindIndex,F_DBWGetLength," +
// " F_DBW2Address FROM T_Base_Device WHERE ((F_DeviceKindIndex = 14)" +
// " OR (F_DeviceKindIndex = 18)) and (F_DBW2Address is not NULL) and F_DeviceIndex=" + deviceIdx + "").Tables[0].DefaultView;
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
int glen = 0;
int IfVis = 0;
if (devinfo.SplitByte!=-1)
{
//20110216
devinfo28 = Model.CGeneralFunction.GetDevice28AllDB1Data(new StringBuilder(devinfo.S7Connection));
int temp = devinfo.SplitByte - devinfo28.Dbw2Address;
if (abit > 7)
{
glen = abit - 8;
temp = temp + 1;
}
else
{
glen = abit;
}
if (temp >= 0)
{
IfVis = CommonClassLib.CCarryConvert.GetBitFromInteger(AllReturns[temp], glen);
//if (dvle[0]["F_DeviceKindIndex"].ToString() == "18")
//{//�����������翪��0��̽�1��̽�������ȡ�����������߼�
// if (IfVis == 1)
// {
// IfVis = 0;
// }
// else
// {
// IfVis = 1;
// }
//}
return IfVis;
}
else
{
return -1;
}
}
else
{
return -1;
}
#endregion
}
else
{
return -1;
}
}
catch (Exception ex)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("ȡ��ָ�����翪�ص��ź�ʱ��" + ex.Message) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "ȡ��ָ�����翪�ص��ź�ʱ��" + ex.Message, true);
}
return -1;
}
}
/// <summary>
/// //20101124���ݡ��豸��.bitλ�����ַ�����ȡ��F_SplitByte���Ĺ���bitֵ��0,1
/// </summary>
/// <param name="deviceIdx"></param>
/// <param name="bit"></param>
/// <returns></returns>
public static int GetDevicePhotoelectric(string devicebit)
{
sp = devicebit.Split(dd);//20101124
if (sp.GetLength(0) <= 1) return -1;
int deviceIdx,abit;
int.TryParse(sp[0], out deviceIdx);
int.TryParse(sp[1], out abit);
try
{
//20110216
AllReturns = CStaticClass.MutiS7ConnReturns[GetDeviceS7Connection(deviceIdx)];
if (AllReturns != null)
{
#region ��ȡ��������ֵ
//DataView dvle = dbo.ExceSQL("SELECT F_DeviceIndex, F_DeviceKindIndex,F_DBWGetLength," +
// " F_DBW2Address FROM T_Base_Device WHERE ((F_DeviceKindIndex = 14)" +
// " OR (F_DeviceKindIndex = 18)) and (F_DBW2Address is not NULL) and F_DeviceIndex=" + deviceIdx + "").Tables[0].DefaultView;
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
int glen = 0;
int IfVis = 0;
if (devinfo.SplitByte != -1)
{
//20110216
devinfo28 = Model.CGeneralFunction.GetDevice28AllDB1Data(new StringBuilder(devinfo.S7Connection));
int temp = devinfo.SplitByte - devinfo28.Dbw2Address;
if (abit > 7)
{
glen = abit - 8;
temp = temp + 1;
}
else
{
glen = abit;
}
if (temp >= 0)
{
IfVis = CommonClassLib.CCarryConvert.GetBitFromInteger(AllReturns[temp], glen);
//if (dvle[0]["F_DeviceKindIndex"].ToString() == "18")
//{//�����������翪��0��̽�1��̽�������ȡ�����������߼�
// if (IfVis == 1)
// {
// IfVis = 0;
// }
// else
// {
// IfVis = 1;
// }
//}
return IfVis;
}
else
{
return -1;
}
}
else
{
return -1;
}
#endregion
}
else
{
return -1;
}
}
catch (Exception ex)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("ȡ��ָ�����翪�ص��ź�ʱ��" + ex.Message) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "ȡ��ָ�����翪�ص��ź�ʱ��" + ex.Message, true);
}
return -1;
}
}
/// <summary>
/// ȡ��ָ���豸�������豸״̬:[0]��д��־;[1]״̬;[2]�����ţ�[3]X����;[4]Y����;[5]�豸����
/// </summary>
/// <param name="deviceIdx">�豸����</param>
/// <returns></returns>
public static int[] GetDeviceState(int deviceIdx)
{
//20100108
//DataView dv;
//DataView dvM;
Model.MDevice askdev;
int[] states = new int[6];
//string headstr;
DataView dvbc;
try
{
//20110216
AllReturns = CStaticClass.MutiS7ConnReturns[GetDeviceS7Connection(deviceIdx)];
if (AllReturns != null)
{
#region ��ȡ�豸״̬
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
if (devinfo.Dbw2Address != -1)
{
//20100108
//DataView dv;
//DataView dvM;
//Model.MDevice askdev;
//20110216
devinfo28 = Model.CGeneralFunction.GetDevice28AllDB1Data(new StringBuilder(devinfo.S7Connection));
int temp = devinfo.Dbw2Address - devinfo28.Dbw2Address;
decimal glen = devinfo.Dbw2Getlength;
//20100108
states = new int[6];
wv[0].Remove(0, wv[0].Length);
wv[0].Append("2");
witemnames[0].Remove(0, witemnames[0].Length);
witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(",byte").Append(Convert.ToString(devinfo.Dbw2Address + 0));
sdo = CommModeCreate.CreateSendDeviceOrder(deviceIdx);
switch (devinfo.DeviceKind.ToString())
{
#region �ֳ����ƴ�����������Ϣ��16���ֽڣ�
case "22":
if (AllReturns[temp] != 1) return null;
states = new int[16];
states[0] = 0;
states[1] = deviceIdx;
states[2] = AllReturns[temp + 1];//������
states[3] = (AllReturns[temp + 2] << 8) + AllReturns[temp + 3];//�豸����
states[4] = (AllReturns[temp + 4] << 8) + AllReturns[temp + 5];//������
askdev = Model.CGetInfo.GetDeviceInfo(states[3]);
//states[2];//������
//states[3];//�豸��������ǰ�����豸��������
//states[4];//�����ţ���Ҫ�޸�Ŀ��λ�õ������ţ�
//20091102
if (askdev == null)
{
wv[0].Remove(0, wv[0].Length);
wv[0].Append("37");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "37�������豸�Ų�����");
return null;
}
int bcz = 0;
StringBuilder barcode = new StringBuilder();
for (int j = 6; j < 16; j++)
{
bcz = bcz + AllReturns[temp + j];
barcode.Append(Convert.ToChar(AllReturns[temp + j]).ToString().ToUpper());
states[j - 1] = AllReturns[temp + j];
}
//20090902������arraylength
if (IsEquals(devinfo.ReturnMessage, states, 5) == false)
{
devinfo.ReturnMessage = states;
Model.CGetInfo.SetDeviceMessage(devinfo);
sss.Remove(0, sss.Length);
sss.Append("**�������豸����" + states[1]).Append("**������" + states[2])
.Append("**�������豸����" + states[3]).Append("**������������" + states[4]).Append("**����������" + barcode);
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�յ��ֳ����ƴ�����������Ϣ", deviceIdx.ToString(), sss.ToString());
}
#region �����ط���ǰ�豸ָ��(1)
if (states[2] == 1)//������
{
if (states[4] == 0)//��������
{
if (bcz == 0)//��������
{
//32�����������ź������붼������
wv[0].Remove(0, wv[0].Length);
wv[0].Append("32");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "32�����������ź������붼������");
return null;
}
else//��������
{
#region ��������
//DataView dv = dbo.ExceSQL("SELECT F_BarCode, F_Askkind, F_DeviceIndex FROM T_Base_PLC_Ask where F_DeviceIndex=" + DeviceIndex).Tables[0].DefaultView;
//if (dv.Count > 0)
//{
// if (barcode == dv[i]["F_BarCode"].ToString())
// {
// return null;
// }
// else
// {
if (askdev.UseCommonDB == "1")
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_TxtParam = '").Append(
barcode).Append("' order by F_MonitorIndex asc");
}
else
{//20090928 and F_DeviceIndex=" + states[3] + "
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_TxtParam = '").Append(
barcode).Append("' order by F_MonitorIndex asc");
}
//20100108
dvbc = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvbc.Count > 0)
{
if (askdev.UseCommonDB == "1")
{
//20090915
sql.Remove(0, sql.Length);
sql.Append("update T_Monitor_Task set F_AheadDetect='',F_DeviceIndex=").Append(states[3]).Append(" where F_MonitorIndex=").Append(dvbc[0]["F_MonitorIndex"]).Append("");
dbo.ExceSQL(sql.ToString());
}
//wv[0] = "4";
//sdo.WriteDBData(witemnames, wv);
return states;
}
else
{
//35�������豸�ź������벻ƥ��
wv[0].Remove(0, wv[0].Length);
wv[0].Append("35");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "35�������豸�ź������벻ƥ��");
return null;
}
// }
//}
#endregion
}
}
else//��������
{
#region ��������
//DataView dv = dbo.ExceSQL("SELECT F_TaskIndex, F_Askkind, F_DeviceIndex FROM T_Base_PLC_Ask where F_DeviceIndex=" + DeviceIndex).Tables[0].DefaultView;
//if (dv.Count > 0)
//{
// if (states[4] == dv[i]["F_TaskIndex"].ToString())
// {
// return null;
// }
// else
// {
if (askdev.UseCommonDB == "1")
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_MonitorIndex = '").Append(
states[4]).Append("' order by F_MonitorIndex asc");
}
else
{//20090928 and F_DeviceIndex=" + states[3] + "
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_MonitorIndex = '").Append(
states[4]).Append("' order by F_MonitorIndex asc");
}
//20101008
dvbc = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvbc.Count > 0)
{
if (askdev.UseCommonDB == "1")
{
//20090915
sql.Remove(0, sql.Length);
sql.Append("update T_Monitor_Task set F_AheadDetect='',F_DeviceIndex=").Append(states[3]).Append(" where F_MonitorIndex=").Append(dvbc[0]["F_MonitorIndex"]);
dbo.ExceSQL(sql.ToString());
}
//RestoreDevice(Convert.ToInt32(dvbc[0]["F_MonitorIndex"]));
//wv[0] = "4";
//sdo.WriteDBData(witemnames, wv);
////��¼������
//dbo.ExceSQL("update T_Base_PLC_Ask set F_TaskIndex='" + states[4]
// + "' where F_DeviceIndex=" + DeviceIndex);
return states;
}
else
{
//36�������豸�ź������Ų�ƥ��
wv[0].Remove(0, wv[0].Length);
wv[0].Append("36");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "36�������豸�ź������Ų�ƥ��");
return null;
}
// }
//}
#endregion
}
}
#endregion
#region �����޸ĵ�ǰ�豸��ִ������Ŀ��λ��(2)
else if (states[2] == 2)//������
{
//�����޸ĵ�ǰ�豸��ִ������Ŀ��λ�õ�F_TaskIndex�ظ�ʱ��������Ӧ����
return states;
}
#endregion
#region �ϱ�����(3)
else if (states[2] == 3)//������
{
if (states[4] == 0)//��������
{
if (bcz == 0)//��������
{
//32�����������ź������붼������
wv[0].Remove(0, wv[0].Length);
wv[0].Append("32");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "32�����������ź������붼������");
return null;
}
else//��������
{
#region ��������
//20100108
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_TxtParam = '").Append(
barcode).Append("' order by F_MonitorIndex asc");
dvbc = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvbc.Count > 0)
{
return states;
}
else
{
//30����������������
wv[0].Remove(0, wv[0].Length);
wv[0].Append("30");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "30�����������Ų�����");
return null;
}
#endregion
}
}
else
{
#region ��������
//DataView dv = dbo.ExceSQL("SELECT F_TaskIndex, F_Askkind, F_DeviceIndex FROM T_Base_PLC_Ask where F_DeviceIndex=" + DeviceIndex).Tables[0].DefaultView;
//if (dv.Count > 0)
//{
// if (states[4] == dv[i]["F_TaskIndex"].ToString())
// {
// return null;
// }
// else
// {
//and F_DeviceIndex=" + states[3] + "
//20100108
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_MonitorIndex = '").Append(
states[4]).Append("' order by F_MonitorIndex asc");
dvbc = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvbc.Count > 0)
{
//wv[0] = "2";
//sdo.WriteDBData(witemnames, wv);
////��¼������
//dbo.ExceSQL("update T_Base_PLC_Ask set F_TaskIndex='" + states[4]
// + "' where F_DeviceIndex=" + DeviceIndex);
return states;
}
else
{
//31����������������
wv[0].Remove(0, wv[0].Length);
wv[0].Append("31");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "31�����������Ų�����");
return null;
}
// }
//}
#endregion
}
}
#endregion
#region ɾ����ǰ�豸��ִ�е�����(4)���������ߣ�
else if (states[2] == 4)//������
{
//20090915
if (states[4] == 0)//��������
{
if (bcz == 0)//��������
{
//32�����������ź������붼������
wv[0].Remove(0, wv[0].Length);
wv[0].Append("32");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "32�����������ź������붼������");
return null;
}
else//��������
{
#region ��������
//20100108
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_TxtParam = '").Append(
barcode).Append("' order by F_MonitorIndex asc");
dvbc = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvbc.Count > 0)
{
return states;
}
else
{
//30����������������
wv[0].Remove(0, wv[0].Length);
wv[0].Append("30");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "30�����������Ų�����");
return null;
}
#endregion
}
}
else
{//20090915
#region ��������
//20100108
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,").Append(
"F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 FROM T_Monitor_Task WHERE F_MonitorIndex = '").Append(
states[4]).Append("' order by F_MonitorIndex asc");
dvbc = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvbc.Count > 0)
{
return states;
}
else
{
//31����������������
wv[0].Remove(0, wv[0].Length);
wv[0].Append("31");
sdo.WriteDBData(witemnames, wv);//20091013
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�����ֳ����ƴ����������ķ�����Ϣ", deviceIdx.ToString(), "31�����������Ų�����");
return null;
}
#endregion
}
}
#endregion
break;
#endregion
#region ������������Ϣ
case "24":
if (AllReturns[temp] != 1) return null;
states[0] = 0;
states[1] = deviceIdx;
states[2] = AllReturns[temp + 1];//�����˶���:1-ȡ������;2-�Ż�����;3-������������
states[3] = AllReturns[temp + 2];//������������
//sdo.WriteDBData(witemnames, wv);
devinfo.ReturnMessage = states;
Model.CGetInfo.SetDeviceMessage(devinfo);
//string ssss = "";
//for (int j = 0; j <= 3; j++)
//{
// ssss += "**" + states[j].ToString();
//}
//CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "CGetDeviceState", deviceIdx.ToString(), ssss);
break;
#endregion
#region �����豸
case "1"://�Ѷ���
states[0] = AllReturns[temp];//��д��־
states[1] = AllReturns[temp + 1];//״̬
states[2] = (AllReturns[temp + 2] << 8) + AllReturns[temp + 3];//������
states[3] = AllReturns[temp + 7] + (AllReturns[temp + 6] << 8) + (AllReturns[temp + 5] << 16) + (AllReturns[temp + 4] << 32);//X����
states[4] = AllReturns[temp + 11] + (AllReturns[temp + 10] << 8) + (AllReturns[temp + 9] << 16) + (AllReturns[temp + 8] << 32);//Y����
states[5] = deviceIdx;//�豸������
if (IsEquals(devinfo.ReturnMessage, states, 3) == false)
{
devinfo.ReturnMessage = states;
Model.CGetInfo.SetDeviceMessage(devinfo);
sss.Remove(0, sss.Length);
sss.Append("**����־" + states[0]).Append("**״̬" + states[1]).Append("**������" + states[2])
.Append("**������" + states[3]).Append("**������" + states[4]);
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�յ��Ѷ���״̬", deviceIdx.ToString(), sss.ToString());
}
break;
case "2"://���ͻ�
states[0] = AllReturns[temp];//��д��־
states[1] = AllReturns[temp + 1];//״̬
states[2] = (AllReturns[temp + 2] << 8) + AllReturns[temp + 3];//������
states[3] = 0;
states[4] = 0;
states[5] = deviceIdx;//�豸������
if (IsEquals(devinfo.ReturnMessage, states, 3) == false)
{
devinfo.ReturnMessage = states;
Model.CGetInfo.SetDeviceMessage(devinfo);
sss.Remove(0, sss.Length);
sss.Append("**����־" + states[0]).Append("**״̬" + states[1]).Append("**������" + states[2]);
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "�յ����ͻ�״̬", deviceIdx.ToString(), sss.ToString());
}
break;
case "4"://RGV
states[0] = AllReturns[temp];//��д��־
states[1] = AllReturns[temp + 1];//״̬
states[2] = (AllReturns[temp + 2] << 8) + AllReturns[temp + 3];//������
states[3] = AllReturns[temp + 7] + (AllReturns[temp + 6] << 8) + (AllReturns[temp + 5] << 16) + (AllReturns[temp + 4] << 32);//X����
states[4] = 0;
states[5] = deviceIdx;//�豸������
if (IsEquals(devinfo.ReturnMessage, states, 3) == false)
{
devinfo.ReturnMessage = states;
Model.CGetInfo.SetDeviceMessage(devinfo);
sss.Remove(0, sss.Length);
sss.Append("**����־" + states[0]).Append("**״̬" + states[1]).Append("**������" + states[2]).Append("**X����" + states[3]);
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "CGetDeviceState", deviceIdx.ToString(), sss.ToString());
}
break;
#endregion
}
return states;
}
else
{
return null;
}
#endregion
}
else
{
return null;
}
}
catch (Exception ex)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("CStaticClassȡ��ָ���豸״̬ʱ��" + ex.Message) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "CStaticClassȡ��ָ���豸״̬ʱ��" + ex.Message, true);
}
return null;
}
finally
{//20100108
//dv=null;
//dvM = null;
askdev = null;
states = null;
dvbc = null;
}
}
public static string GetStringData(int deviceIdx)
{
try
{
//20110216
AllReturns = CStaticClass.MutiS7ConnReturns[GetDeviceS7Connection(deviceIdx)];
if (AllReturns != null)
{
#region ��ȡ�豸״̬
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
if (devinfo.Dbw2Address != -1)
{
//20110216
devinfo28 = Model.CGeneralFunction.GetDevice28AllDB1Data(new StringBuilder(devinfo.S7Connection));
int temp = devinfo.Dbw2Address - devinfo28.Dbw2Address;
decimal glen = devinfo.Dbw2Getlength;
string headstr = AllReturns[temp].ToString();
if (headstr != "1") return null;
wv[0].Remove(0, wv[0].Length);
wv[0].Append("2");
witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(",byte").Append(Convert.ToString(devinfo.Dbw2Address + 0));
sdo = CommModeCreate.CreateSendDeviceOrder(deviceIdx);
switch (devinfo.DeviceKind.ToString())
{
#region �ַ�����Ϣ
case "7"://������
sss.Remove(0, sss.Length);
for (int i = 1; i <= 10; i++)
{
sss.Append( Convert.ToChar(AllReturns[temp+i]));
}
//sdo.WriteDBData(witemnames, wv);
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "��PLC����",deviceIdx.ToString(), "����־1**���룺"+sss.ToString().ToUpper());
break;
case "21"://һ�Ź�����
sss.Remove(0, sss.Length);
for (int i = 1; i <= 32; i++)
{
sss.Append(Convert.ToChar(AllReturns[temp + i]));
}
//sdo.WriteDBData(witemnames, wv);
//CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "CGetDeviceState", deviceIdx.ToString(), strdata);
break;
#endregion
}
return sss.ToString().ToUpper() ;
}
else
{
return null;
}
#endregion
}
else
{
return null;
}
}
catch (Exception ex)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("CStaticClassȡ���豸�ַ�����Ϣʱ��" + ex.Message) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "CStaticClassȡ���豸�ַ�����Ϣʱ��" + ex.Message, true);
}
return null;
}
}
/// <summary>
/// �Ƚ�����ֵ��һά���������Ƿ�ֵ����
/// </summary>
/// <param name="array1">ֵ��һά����1</param>
/// <param name="array2">ֵ��һά����2</param>
/// <returns>�ȽϽ�����������true������false</returns>
public static bool IsEquals(Array array1, Array array2,int arraylength)
{//20090902������arraylength
//�Ƚ������Ƿ�һ��
if ((array1 == null) || (array2 == null)) return false;
if (!Object.ReferenceEquals(array1.GetType(), array2.GetType()))
{
return false;
}
//�Ƚϳ����Ƿ�һ��
if (array1.GetLength(0) != array2.GetLength(0))
{
return false;
}
//�Ƚϳ�Ա�Ƿ���Ӧ����
ValueType v1, v2;
for (int i = 0; i < arraylength; i++)
{
v1 = (ValueType)array1.GetValue(i);
v2 = (ValueType)array2.GetValue(i);
if (!v1.Equals(v2))
{
return false;
}
}
return true;
}
}
}