SCLS/SSWCS_JXDL(2019)/ControlSystem/CControl.cs

2714 lines
136 KiB
C#
Raw Permalink Normal View History

2025-05-19 09:45:29 +08:00
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.EnterpriseServices;
using System.Text;
using System.Data;
using System;
using CommLayerFactory;
using ICommLayer;
using DBFactory;
namespace ControlSystem
{
/// <summary>
/// Creator:Richard.liu
/// <20><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public class CControl
{
private Object thisLock = new Object();
DBOperator dbo =CStaticClass.dbo;
DBOperator dboM = CStaticClass.dboM;
Model.MError errs;
Model.MDevice devinfo;
ISendDeviceOrder sdo;
CCommonFunction ccf = new CCommonFunction();
// CGetState cgs = new CGetState();
//CGetState gs = new CGetState();
int _DeviceIdx = 0;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
int _routeID = 0;//·<><C2B7>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD>
int _serialNumber = 0;//·<><C2B7><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int _ManageTaskIdx = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int _ManageKindIdx = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int _DeviceOrder = 0;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
int _LockedState = 0;
int _Associate = 0;
int _ManTaskReserve = 0;
string _AheadDetect = "";
int _NumParam1=0;
int _NumParam2 = 0;
int _NumParam3 = 0;
int _NumParam4 = 0;
int _NumParam5 = 0;
int _NumParam6 = 0;
string _TxtParam = "-";
int _DeviceKind = 0;
int _OutsideAltDevice = 0;
int _InsideAltDevice = 0;
int _StartDevice = 0;
int _EndDevice = 0;
int _RouteKind = 0;
int _CorrelDoubleFork = -1;
//int _UseAwayFork = 1;
int _AgvNo = 65535;
string _CControlError = "";//<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
//20110329
int LastMachine = 0;//<2F><>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD>
int RightUseTimes = 0;//12049
int LeftUseTimes = 0;//12054
public string CControlError
{
get { return _CControlError; }
set { _CControlError = value; }
}
public CControl()
{
//dbo.Open();
}
//~CControl()
//{
// dbo.Close();
//}
public void StartOrder()
{
//<2F><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񵥵ġ<F1B5A5B5><C4A1><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>еĵ<D0B5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ռ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񵥣<EFBFBD>
//Ȼ<><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><E8B1B8>F_AheadDetect<63><74><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񵥣<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼִ<CABC><D6B4>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>еĹ<D0B5><C4B9><EFBFBD><EFBFBD>豸F_AssociateDeviceIndex,׼<><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ָ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>¼<EFBFBD><C2BC>״̬F_StatusΪ1,<2C><><EFBFBD><EFBFBD><EFBFBD>豸Ϊռ<CEAA><D5BC>״̬<D7B4><CCAC>T_Base_device<63><65>F_LockedState=<3D>豸ָ<E8B1B8><EFBFBD><EEB5A5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO_Control<6F><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>״̬FSTATUS=1;T_Manage_Task<73><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>״̬FSTATUS=1
//·<><C2B7><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>F_LockedDeviceIndex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
string taskkind =string.Empty ;
try
{
if (CStaticClass.AutoOrder == true)
{
taskkind = " (F_ManageTaskKindIndex = 1 or F_ManageTaskKindIndex = 2 or F_ManageTaskKindIndex = 4) "; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
}
else
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf(_CControlError) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", _CControlError, true);
}
return;
}
DataView dvM = new DataView();
string strM = "";
char[] sep = new char[1] { '-' };
string aa = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
//<2F><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
string strsql = "SELECT DISTINCT F_ManageTaskIndex AS MIndex,F_MonitorTaskLevel,F_ManageTaskKindIndex FROM T_Monitor_Task where " +
taskkind + " order by F_ManageTaskKindIndex desc, F_MonitorTaskLevel desc, F_ManageTaskIndex asc";
DataView dv = dbo.ExceSQL(strsql).Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
try
{
//1<><31><EFBFBD><EFBFBD>ȡÿ<C8A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>һ<EFBFBD><D2BB><EFBFBD>豸ָ<E8B1B8><D6B8>
strM = "select top 1 min(F_MonitorIndex) as minMidx,f_status from T_Monitor_Task where " + taskkind + " and F_ManageTaskIndex = " + dv[i]["MIndex"] + " GROUP BY F_MonitorIndex, F_Status";
dvM = dbo.ExceSQL(strM).Tables[0].DefaultView;
if (dvM.Count > 0 && dvM[0]["minMidx"] != DBNull.Value)
{
if (dvM[0]["F_Status"].ToString() == "0")
{
SendMonitorTask(Convert.ToInt32(dvM[0]["minMidx"]));
}
else
{
continue;
}
}
else
{
continue;
}
}
catch(Exception ex)
{
_CControlError = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>"+ex.Message ;
}
}//for<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//20091107
dv = null;
dvM = null;
return ;
}
else
{
//20091107
dv = null;
dvM = null;
//_CControlError = "û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>У<EFBFBD>";
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf(_CControlError) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus",_CControlError,true );
}
return;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// <20><>ȡÿ<C8A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,true<75><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false<73><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
/// </summary>
/// <param name="minMidx"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns>true<75><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false<73><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD></returns>
public bool GetFirstDeviceIFLocked(int minMidx, bool checkLockedstate)
{
char[] sep = new char[1] { '-' };
int msgIdx = 0;//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
int adidx = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD>豸ָ<E8B1B8><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataView dv;
try
{
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>Ϣ
if (GetSendInfo(minMidx) == false) { return true; }
int DeviceIdx = _DeviceIdx;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
int routeID = _routeID;//·<><C2B7>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD>
int serialNumber = _serialNumber;//·<><C2B7><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int ManageTaskIdx = _ManageTaskIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int ManageKindIdx = _ManageKindIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int DeviceOrder = _DeviceOrder;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
int LockedState = _LockedState;
int Associate = _Associate;
int ManTaskReserve = _ManTaskReserve;
string AheadDetect = _AheadDetect;
int NumParam1 = _NumParam1;
int NumParam2 = _NumParam2;
int NumParam3 = _NumParam3;
int NumParam4 = _NumParam4;
int NumParam5 = _NumParam5;
int NumParam6 = _NumParam6;
string TxtParam = _TxtParam;
int DeviceKind = _DeviceKind;
int OutsideAltDevice = _OutsideAltDevice;
int InsideAltDevice = _InsideAltDevice;
int StartDevice = _StartDevice;
int EndDevice = _EndDevice;
int RouteKind = _RouteKind;
int AgvNo = _AgvNo;
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ĵ<EFBFBD>
if (CStaticClass.DeviceErrorAutoModifyRoutePath == "1")
{//20100108
#region ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RGV<EFBFBD>йص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϸ<EFBFBD>·<EFBFBD><EFBFBD>
//20100108 <20><><EFBFBD>ͻ<EFBFBD><CDBB>Ľӻ<C4BD><D3BB>Խ<EFBFBD>ָ<EFBFBD><EFBFBD><EEB2BB><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
if ((_DeviceKind == 4) || ((_DeviceKind == 2) && ((_DeviceOrder == 3))) && (RouteKind != 3))
{
bool IfModify = false, IfUseNegativeDevice = false;//20100610
//20091102 RGV<47>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>ָ<EFBFBD><EFBFBD><EEB2BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
if ((_DeviceKind == 4) && (_DeviceOrder == 7) &&
(ccf.GetSerialNumberFromRouteDevice(_routeID, _DeviceIdx) >
ccf.GetSerialNumberFromRouteDevice(_routeID, _NumParam1)))
{
dv = dbo.ExceSQL("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = " + ManageTaskIdx + ") AND (F_ManageTASKKINDINDEX = 1)").Tables[0].DefaultView;
if (dv.Count > 0)
{
//20091218
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() == minMidx.ToString()))
{
IfModify = true;
IfUseNegativeDevice = true;//20100610
}
}
}
else if ((_DeviceKind == 4) && ((_DeviceOrder == 3) || (_DeviceOrder == 5)))
{//20100108<30>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>Խ<EFBFBD>Ӧ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
devinfo = Model.CGetInfo.DeviceInfo[DeviceIdx];
if ((devinfo.RunState == 0) && (devinfo.HaveGoods == true))
{
IfModify = true;
IfUseNegativeDevice = false;//20100610
}
devinfo = null;
}
else
{
IfModify = true;
IfUseNegativeDevice = true;//20100610
}
if (IfModify == true)
{
int altsn = ccf.GetSerialNumberFromRouteDevice(_routeID, _OutsideAltDevice);
string sql = "SELECT F_SerialNumber FROM T_Base_Device,T_Base_Route_Device,T_Base_Device_State where " +
" T_Base_Device.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and F_ErrorCode =F_DeviceErrorIndex and " +
" T_Base_Device_State.F_DeviceKindIndex = T_Base_Device.F_DeviceKindIndex AND T_Base_Device.F_ErrorCode > 0 AND " +
" T_Base_Route_Device.F_SerialNumber > " + _serialNumber + " AND T_Base_Route_Device.F_SerialNumber > " +
altsn + " AND T_Base_Route_Device.F_RouteIDSub = " + _routeID + " and F_ErrorLevel=2 ";
dv= dbo.ExceSQL(sql).Tables[0].DefaultView;
if (dv.Count > 0)
{
//<2F>ж<EFBFBD><D0B6>ܷ<EFBFBD><DCB7>ĵ<EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>;<3B><>ManageTaskIdx<64><78>ManageKindIdx <20>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
if (GetUsableDestination(_ManageTaskIdx, _ManageKindIdx) == true)
{
return true;
}
}
#region RGVĿ<EFBFBD><EFBFBD>λ<EFBFBD>ñ<EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
//20100610
devinfo = null;
if (_DeviceKind == 4)
{//RGV
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, _serialNumber)[0]);
}
else
{//<2F><><EFBFBD>ͻ<EFBFBD><CDBB>ͻ<EFBFBD>
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, _serialNumber)[0]);//RGV
int sn = 0;
if (devinfo != null)
{
sn = ccf.GetSerialNumberFromRouteDevice(_routeID, devinfo.DeviceIndex);
}
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, sn)[0]);//<2F>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>ͻ<EFBFBD>
}
if (devinfo != null)
{
if (devinfo.HaveGoods == true)
{//Ŀ<><C4BF>λ<EFBFBD>ñ<EFBFBD>ռ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
if (GetRGVIdleDestination(_ManageTaskIdx, _ManageKindIdx, devinfo.DeviceIndex, IfUseNegativeDevice) == true)
{
return true;
}
}
}
#endregion
}
}
#endregion
}
#endregion
//<2F>ж<EFBFBD>F_PriorMonitor<6F><72>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ھͲ<DABE><CDB2><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>С<EFBFBD>
//sql = "SELECT T_Monitor_Task.F_MonitorIndex FROM T_Monitor_Task,T_Monitor_Task T_Monitor_Task_1 WHERE "+
// " T_Monitor_Task.F_PriorMonitor = T_Monitor_Task_1.F_MonitorIndex AND (T_Monitor_Task.F_PriorMonitor IS NOT NULL)";
//dv = dbo.ExceSQL(sql).Tables[0].DefaultView;
//if (dv.Count > 0)
//{
// return true;
//}
if (_DeviceIdx == 1001)
{//20100512 AGV
if (AgvNo != 65535)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>AGV<47><56><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
LockedState = Convert.ToInt32(dbo.GetSingle("SELECT F_LockedState FROM T_Base_Device where F_DeviceIndex="+(1001+AgvNo)+""));
if(LockedState>0)return true;
}
if (AheadDetectOK(minMidx, _AheadDetect) == true)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
{
#region ˫<EFBFBD><EFBFBD>AGV<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>AheadDetectOK
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
if (Model.CGeneralFunction.DoubleForkIfSync(minMidx, _DeviceIdx, _DeviceKind) == true)
{
string[] df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
if (df != null)
{
if (AheadDetectOK(Convert.ToInt32(df[0]), df[1]) == false)//˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
return true;
}
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ǵ<EFBFBD>һ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
dv = dbo.ExceSQL("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = " + rman + ") AND (F_ManageTASKKINDINDEX = " + rmankind + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != df[0]))
{
return true;
}
}
#endregion
}
}
}
#endregion
return false;
}
else
{
return true;
}
}
else
{
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ռ<EFBFBD>ã<EFBFBD>RGV<47>ͶѶ<CDB6><D1B6><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>Ƿֲ<C7B7><D6B2><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ûִ<C3BB><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĵ<C2B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (((_LockedState == 0) && (checkLockedstate == true)) || (checkLockedstate == false))
{
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>RGV<EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񱻵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԤԼF_ManTaskReserve
if (_ManTaskReserve > 0)
{
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
string[] df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
if (df != null)
{
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
if ((_ManTaskReserve.ToString() != _ManageKindIdx.ToString() + _ManageTaskIdx.ToString()) && (_ManTaskReserve.ToString() != rmankind.ToString() + rman.ToString()))
{
return true;
}
}
else//20100702<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ʱ<EFBFBD><CAB1>ԤԼ<D4A4><D4BC>
{
object rob = dbo.GetSingle("SELECT F_RELATIVECONTORLID FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = "+_ManageKindIdx+") AND (FID = "+_ManageTaskIdx+") AND (F_RELATIVECONTORLID <> - 1)");
string rlres = string.Empty ;
if (rob != null)
{
rlres = _ManageKindIdx.ToString() + rob.ToString();
}
else
{
rob = dbo.GetSingle("SELECT FID FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = " + _ManageKindIdx + ") AND (F_RELATIVECONTORLID = " + _ManageTaskIdx + ") ");
if (rob != null)
{
rlres = _ManageKindIdx.ToString() + rob.ToString();
}
}
if ((_ManTaskReserve.ToString() != _ManageKindIdx.ToString() + _ManageTaskIdx.ToString())&&(_ManTaskReserve.ToString() !=rlres))
{
return true;
}
}
}
else
{
if (_ManTaskReserve.ToString() != _ManageKindIdx.ToString() + _ManageTaskIdx.ToString())
{
return true;
}
}
}
#endregion
#region <EFBFBD>жϴ<EFBFBD><EFBFBD>󳵵<EFBFBD><EFBFBD>˶<EFBFBD><EFBFBD><EFBFBD>3215<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>Ƿ񴥷<EFBFBD>3215-3213
//if ((_DeviceIdx == 3301) && (_DeviceOrder == 7) && ((_NumParam1 != 3215) && (_NumParam1 != 3233)))
//{
// DataView dvma = dbo.ExceSQL("select FID, F_ManageTaskKindIndex,FENDDEVICE from T_Manage_Task where F_ManageTaskKindIndex=" +
// ccf.GetManageTaskKindIndexFromMonitor(minMidx) + " and fid=" + ccf.GetManageTaskIndexfromMonitor(minMidx)
// + " and FENDDEVICE=3215").Tables[0].DefaultView;
// if (dvma.Count > 0)
// {
// int startdev = 3215;
// int dcode = 3213;
// if (CStaticClass.GetDevicePhotoelectric(32151) == 1)
// {
// DataView dv11 = dbo.ExceSQL("select FSTARTDEVICE,FENDDEVICE from T_Manage_Task where FSTARTDEVICE=" + startdev + " and FENDDEVICE=" + dcode + "").Tables[0].DefaultView;
// if (dv11.Count <= 0)
// {
// int fid = ccf.GetTempManageIdx();
// //ccf.RecordMaxTempManageTaskFID(fid);
// string warehouse = "13";
// DataView dvw = dbo.ExceSQL("SELECT F_WarehouseIndex FROM T_Warehouse").Tables[0].DefaultView;
// if (dvw.Count > 0)
// {
// warehouse = dvw[0]["F_WarehouseIndex"].ToString();
// }
// string sql = "INSERT INTO T_Manage_Task" +
// "(FID, F_ManageTaskKindIndex,FPALLETBARCODE,FMANAGETASKTYPE,FCONTROLTASKTYPE, FTASKLEVEL, FISRETURN," +
// "FWAREHOUSE, FSTARTCELL, FSTARTDEVICE, FENDDEVICE, FENDCELL, " +
// "FSTATUS, FBEGTIME, FENDTIME,FIntoStepOK,FREMARK,FLANEWAY,FSTACK)" +
// "VALUES (" + fid + ",2,'-','0','3','1','1','" + warehouse + "','-','"
// + startdev + "','" + dcode + "','-',"
// + "'0','-','-','0','',0,0)";
// dbo.ExceSQL(sql);
// }
// }
// }
//}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////3.5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//BlockDevice = ccf.GetBlockDevice(_DetailIndex);
//if ((BlockDevice != null) && (BlockDevice!= ""))
//{
// split = BlockDevice.Split(sep);
// adidx = GetMonitorTaskIndex(Convert.ToInt32(split[0]), Convert.ToInt32(split[1]));
// //6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// //CStaticClass.MessageIndex++;
// CStaticClass.MessageIndex = 1;
// msgIdx = (CStaticClass.MessageIndex);
// sdo = CommModeCreate.CreateSendDeviceOrder(Convert.ToInt32(split[1]));
// //<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD>
// bool sendok;
// if ((ccf.GetDeviceKindIdx(Convert.ToInt32(split[0])) == 1) || (ccf.GetDeviceKindIdx(Convert.ToInt32(split[0])) == 4) || (ccf.GetDeviceKindIdx(Convert.ToInt32(split[0])) == 6))
// {
// int[] gc = ccf.GetCoordinatesFromMonitorTask(adidx);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// if (gc != null)
// {
// //1<><31><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>RGV<47><56>6<EFBFBD><36>AGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><E8B1B8><EFBFBD><EFBFBD>F_NeedOptimize='1'<27><>
// //ֱ<><D6B1>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T_Monitor_Task_Child<6C><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// if (ccf.NeedOptimize(_DeviceIdx) == true)
// {
// ccf.InsertMonitorOptimizeChildTask(adidx);
// sendok = true;
// }
// else
// {
// sendok = sdo.SendDeviceOrder(msgIdx, adidx, Convert.ToInt32(split[1]),
// Convert.ToInt32(split[0]), gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
// }
// }
// else
// return true;
// }
// else
// {
// sendok = sdo.SendDeviceOrder(msgIdx, adidx, Convert.ToInt32(split[1]), Convert.ToInt32(split[0]));
// }
// if (sendok == false)
// {
// return true;
// }
//}
#endregion
#region ָ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD>
if (18007 == NumParam4)
{
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD>̻<EFBFBD>
// if (LastMachine == 0)//<2F><>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>̻<EFBFBD>
// {
// LastMachine = 12049;
// RightUseTimes=1;
// }
// else
// {
// if (RightUseTimes == 1)//<2F><><EFBFBD><EFBFBD>
// {
// LastMachine = 12049;
// RightUseTimes = 0;
// }
// else
// if (LeftUseTimes == 1)
// {
// LastMachine = 12054;
// LeftUseTimes = 0;
// }
// else
// if (LeftUseTimes == 0)
// {
// if (LastMachine == 12049)
// {
// LastMachine = 12054;
// LeftUseTimes = 1;
// }
// else
// {
// LastMachine = 12049;
// RightUseTimes = 1;
// }
// }
// else
// if (RightUseTimes == 0)
// {
// if (LastMachine == 12054)
// {
// LastMachine = 12049;
// RightUseTimes = 1;
// }
// else
// {
// LastMachine = 12054;
// LeftUseTimes = 1;
// }
// }
//}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĵ<EFBFBD><EFBFBD>̻<EFBFBD>
if (LastMachine == 0)//<2F><>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>̻<EFBFBD>
{
LastMachine = 12049;
RightUseTimes = 1;
}
else
{
if (LastMachine == 12049)
{
LastMachine = 12054;
LeftUseTimes = 1;
}
else
{
LastMachine = 12049;
RightUseTimes = 1;
}
}
#endregion
dbo.ExceSQL("update T_Monitor_Task set F_NumParam4= " + LastMachine + " where F_MonitorIndex= " + minMidx);
dbo.ExceSQL("UPDATE T_Manage_Task SET FENDDEVICE=" + LastMachine + " where FID=" + ManageTaskIdx + " and F_ManageTaskKindIndex=" + ManageKindIdx+ "");
return true;
}
#endregion
//3<><33>F_AheadDetect<63><74><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>顰;<3B><>)
if (AheadDetectOK(minMidx, _AheadDetect) == true)//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
{
#region ˫<EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>F_CorrelDoubleFork<EFBFBD>Ƿ<EFBFBD>AheadDetectOK
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
if (Model.CGeneralFunction.DoubleForkIfSync(minMidx, _DeviceIdx, _DeviceKind) == true)
{
string[] df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
if (df != null)
{
if (AheadDetectOK(Convert.ToInt32(df[0]), df[1]) == false)//˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
return true;
}
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ǵ<EFBFBD>һ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
dv = dbo.ExceSQL("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = " + rman + ") AND (F_ManageTASKKINDINDEX = "+rmankind+")").Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != df[0]))
{
return true;
}
}
#endregion
}
}
else
{//20100406<30>Ѷ<EFBFBD><D1B6><EFBFBD>ȡ<EFBFBD>ͻ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD>ȡ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD>Ϣ
}
}
#endregion
//<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>еĹ<D0B5><C4B9><EFBFBD><EFBFBD>豸F_AssociateDeviceIndex
//4<><34><EFBFBD>Ƿ<EFBFBD><C7B7>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD>
//AssociateDevice = ccf.GetAssociateDevice(minMidx);
if (_Associate != 0)
{
//5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĹ<D0B5><C4B9><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD>豸ָ<E8B1B8><D6B8>,<2C>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD>У<EFBFBD>
//<2F>ظ<EFBFBD><D8B8>ݹ鵽2
//split = AssociateDevice.Split(sep);
adidx = _Associate;
if (adidx != 0)
{
if (ccf.GetAssociateMonitor(minMidx) == 0)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("<22>豸ָ<E8B1B8>" + minMidx.ToString() + "<22>޷<EFBFBD><DEB7><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + adidx.ToString() + "<22><><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "<22>豸ָ<E8B1B8>" + minMidx.ToString() + "<22>޷<EFBFBD><DEB7><EFBFBD><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + adidx.ToString() + "<22><><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", true);
}
return true;
}
if (GetFirstDeviceIFLocked(adidx, false) == false)
{
//6<><36><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
//CStaticClass.MessageIndex++;
CStaticClass.MessageIndex = 1;
msgIdx = (CStaticClass.MessageIndex);
sdo = CommModeCreate.CreateSendDeviceOrder(_DeviceIdx);
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD>
bool sendok;
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 }; //ccf.GetCoordinatesFromMonitorTask(adidx);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((_DeviceKind == 1) || (_DeviceKind == 6))
{
//1<><31><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>RGV<47><56>6<EFBFBD><36>AGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><E8B1B8><EFBFBD><EFBFBD>F_NeedOptimize='1'<27><>
//ֱ<><D6B1>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T_Monitor_Task_Child<6C><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (ccf.NeedOptimize(_DeviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(adidx);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder,
_DeviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
}
}
else if (_DeviceKind == 4)
{
if (ccf.NeedOptimize(_DeviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(adidx);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder, _DeviceIdx, gc[2]);
}
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder, _DeviceIdx, gc[5]);
}
if (sendok == false)
{
return true;
}
else
{
//8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>¼<EFBFBD><C2BC>״̬F_StatusΪ1,<2C><><EFBFBD><EFBFBD><EFBFBD>豸Ϊռ<CEAA><D5BC>״̬<D7B4><CCAC>T_Base_device<63><65>F_LockedState=<3D>豸ָ<E8B1B8><EFBFBD><EEB5A5>
dbo.ExceSQL("update T_Monitor_Task set F_StartTime='" + DateTime.Now.ToString("u") + "',F_Status='1' where F_MonitorIndex=" + adidx);
//dbo.ExceSQL("update T_Base_device set F_LockedState=" + adidx + " where F_DeviceIndex=" + _DeviceIdx);
//<2F><><EFBFBD>ص<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>豸ֵ
_DeviceIdx = DeviceIdx;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
_routeID = routeID;//·<><C2B7>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD>
_serialNumber = serialNumber;//·<><C2B7><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ManageTaskIdx = ManageTaskIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ManageKindIdx = ManageKindIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_DeviceOrder = DeviceOrder;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
_LockedState = LockedState;
_Associate = Associate;
_ManTaskReserve = ManTaskReserve;
_AheadDetect = AheadDetect;
_NumParam1 = NumParam1;
_NumParam2 = NumParam2;
_NumParam3 = NumParam3;
_NumParam4 = NumParam4;
_NumParam5 = NumParam5;
_NumParam6 = NumParam6;
_TxtParam = TxtParam;
_DeviceKind = DeviceKind;
_OutsideAltDevice = OutsideAltDevice;
_InsideAltDevice = InsideAltDevice;
_StartDevice = StartDevice;
_EndDevice = EndDevice;
_RouteKind = RouteKind;
_AgvNo = AgvNo;
return false;
}
}
else
{
return true;
}
}
else//
{
//<2F><><EFBFBD>ص<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>豸ֵ
_DeviceIdx = DeviceIdx;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
_routeID = routeID;//·<><C2B7>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD>
_serialNumber = serialNumber;//·<><C2B7><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ManageTaskIdx = ManageTaskIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ManageKindIdx = ManageKindIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_DeviceOrder = DeviceOrder;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
_LockedState = LockedState;
_Associate = Associate;
_ManTaskReserve = ManTaskReserve;
_AheadDetect = AheadDetect;
_NumParam1 = NumParam1;
_NumParam2 = NumParam2;
_NumParam3 = NumParam3;
_NumParam4 = NumParam4;
_NumParam5 = NumParam5;
_NumParam6 = NumParam6;
_TxtParam = TxtParam;
_DeviceKind = DeviceKind;
_OutsideAltDevice = OutsideAltDevice;
_InsideAltDevice = InsideAltDevice;
_StartDevice = StartDevice;
_EndDevice = EndDevice;
_RouteKind = RouteKind;
_CControlError = "<22><><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>豸ָ<E8B1B8><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ·<CFB8><C2B7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD>豸ָ<E8B1B8>ƥ<EEB2BB>䣬ϵͳ<CFB5><CDB3>Ϊû<CEAA>й<EFBFBD><D0B9><EFBFBD><EFBFBD>豸ָ<E8B1B8><EFBFBD><EEB4A6><EFBFBD><EFBFBD>";
return false;
}
}
else
{
//<2F><><EFBFBD>ص<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>豸ֵ
_DeviceIdx = DeviceIdx;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
_routeID = routeID;//·<><C2B7>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD>
_serialNumber = serialNumber;//·<><C2B7><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ManageTaskIdx = ManageTaskIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_ManageKindIdx = ManageKindIdx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
_DeviceOrder = DeviceOrder;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
_LockedState = LockedState;
_Associate = Associate;
_ManTaskReserve = ManTaskReserve;
_AheadDetect = AheadDetect;
_NumParam1 = NumParam1;
_NumParam2 = NumParam2;
_NumParam3 = NumParam3;
_NumParam4 = NumParam4;
_NumParam5 = NumParam5;
_NumParam6 = NumParam6;
_TxtParam = TxtParam;
_DeviceKind = DeviceKind;
_OutsideAltDevice = OutsideAltDevice;
_InsideAltDevice = InsideAltDevice;
_StartDevice = StartDevice;
_EndDevice = EndDevice;
_RouteKind = RouteKind;
return false;
}
}
else
{
return true;
}
}
else
{
return true;
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv = null;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="minMidx"><3E><><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD></param>
/// <returns><3E>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>true<75><65>ʾ<EFBFBD>豸ִ<E8B1B8><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></returns>
public bool AheadDetectOK(int minMidx, string _AheadDetect)
{
//<2F><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>顰;<3B><>)
DataView dv;//20100319
DataView dvdv;
DataTable dt;
try
{
int[] States;
int DeviceIdx = _DeviceIdx;
int TaskIdx = minMidx;
int fid = ccf.GetManageTaskIndexfromMonitor(TaskIdx);
int mti = ccf.GetManageTaskKindIndexFromMonitor(TaskIdx);
int DeviceKind = ccf.GetDeviceKindIdx(DeviceIdx);//20100617
//20100706
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIdx);
if (devinfo.CommType == "OPCClient")//20100706 ֻ<><D6BB>OPCClientͨѶ<CDA8><D1B6><EFBFBD>͵ļ<CDB5><C4BC><EFBFBD><EFBFBD>豸״̬
{
#region OPCͨѶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//gds = CommModeCreate.CreateGetDeviceState(DeviceIdx);
try
{
//States = gds.GetDeviceState(DeviceIdx, TaskIdx);//1<><31><EFBFBD><EFBFBD>,2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,5<><EFBFBD><E8B1B8>
States = CStaticClass.GetDeviceState(DeviceIdx);
}
catch (Exception ex)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("<22><>ȡ״̬ʱ<CCAC><CAB1>" + ex.Message) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "<22><>ȡ״̬ʱ<CCAC><CAB1>" + ex.Message, true);
}
return false;
}
if (States == null)//û<><C3BB><EFBFBD>յ<EFBFBD><D5B5>κη<CEBA><CEB7><EFBFBD>ֵ
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>û<EFBFBD>յ<EFBFBD>PLC<4C><43><EFBFBD>ݣ<EFBFBD>") < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>û<EFBFBD>յ<EFBFBD>PLC<4C><43><EFBFBD>ݣ<EFBFBD>", true);
}
return false;
}
if ((States[1] == 1) || (States[1] >= 30))//<2F><><EFBFBD>л<EFBFBD><D0BB>߹<EFBFBD><DFB9><EFBFBD>
{
if (States[1] >= 30)
{
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIdx);
int ErrId = States[1];
//20090910
//<2F>й<EFBFBD><D0B9><EFBFBD>¼<EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
string devstr = "SELECT F_DeviceIndex FROM T_Base_Device where F_DeviceIndex=" + DeviceIdx + " and F_ErrorTaskNo=" + TaskIdx + "";
dt = dbo.ExceSQL(devstr).Tables[0];
if (dt.Rows.Count >= 1)
{
//dbo.ExceSQL("update T_Monitor_Task set F_Status= " + ErrId + " where (F_MonitorIndex= " + TaskIdx + ") and ((F_Status<> " + ErrId + ") and (F_Status<> 3))");
return false;
}
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dbo.ExceSQL("update T_Base_Device set F_ErrorTaskNo= " + TaskIdx + " where F_DeviceIndex= " + DeviceIdx);
if (CStaticClass.IsEquals(devinfo.ReturnMessage, States, 2) == true) return false;
//if ((_DeviceKind == 2) || (_DeviceKind == 4))
//{//<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
// sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
//}
//if (_DeviceKind == 1) //<2F>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>RGV
//{
// sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
// sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
//}
errs = Model.CGetInfo.GetErrorInfo(Convert.ToInt32(_DeviceKind.ToString() + States[1].ToString()));
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf("<22><EFBFBD><E8B1B8><EFBFBD><EFBFBD>" + DeviceIdx + "<22>й<EFBFBD><D0B9>ϣ<EFBFBD>" + errs.ErrorName) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", "<22><EFBFBD><E8B1B8><EFBFBD><EFBFBD>" + DeviceIdx + "<22>й<EFBFBD><D0B9>ϣ<EFBFBD>" + errs.ErrorName, true);
}
FrmMain.FormInstance.notifyIcon1.BalloonTipText = "<22><><EFBFBD><EFBFBD>:" + devinfo.DeviceName + "," + DeviceIdx + "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>" + errs.ErrorName;
FrmMain.FormInstance.notifyIcon1.ShowBalloonTip(10000, "<22><><EFBFBD><EFBFBD>", devinfo.DeviceName + "," + DeviceIdx + "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>" + errs.ErrorName, System.Windows.Forms.ToolTipIcon.Warning);
if (mti == 1)
{
dboM.ExceSQL("update IO_Control set ERROR_TEXT='" + <><D7BC>ִ<EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>" + devinfo.DeviceName + "," + DeviceIdx + errs.ErrorName + "' where Control_ID=" + fid);
}
dbo.ExceSQL("update T_Manage_Task set FERRORCODE='" + <><D7BC>ִ<EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>" + devinfo.DeviceName + "," + DeviceIdx + errs.ErrorName + "' where F_ManageTaskKindIndex=" + mti + " and FID=" + fid);
}
return false;
}
//20110724
if (devinfo.DeviceKind == 1 && States[3]== 0)//<2F>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0ʱ<30><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return false;
}
#endregion
}
else
{
//<2F>Ӽ<EFBFBD><D3BC><EFBFBD>20100319 AGV<47><56>ָ<EFBFBD><D6B8>67<36><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AGV<47>Ų<EFBFBD><C5B2><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1219<31><39><EFBFBD>ͳ<EFBFBD>ָ<EFBFBD>1220<32><30>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7>ͣ<EFBFBD><CDA3><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>Ҫ<EFBFBD>ȴ<EFBFBD>
//if (ccf.GetDeviceOrderFromMonitor(minMidx) == 67)
//{
// dv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = 1219) AND (F_DeviceCommandIndex = 6) AND (F_Status > 0)").Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// return false;
// }
// dv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = 1220) AND (F_Status > 0)").Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// return false;
// }
//}
}
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񵥶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//20101011
int CONTROLTASKTYPE = ccf.GetFCONTROLTASKTYPEFromManageTask(mti, fid);
if (ccf.GetCorrel_DeviceIndex(devinfo.DeviceIndex,true) == 0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>
{
string[] CorrelInfo = ccf.GetCorrel_DeviceInfo(devinfo.DeviceIndex,true);
if (CorrelInfo==null) return false;
//20100406<30><36><EFBFBD><EFBFBD><E2B6A5>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD>⣺1102<30><32>̽<EFBFBD>-11021<32><31><EFBFBD><EFBFBD>1121<32>͵<EFBFBD>λ<EFBFBD><CEBB>-11212<31><32><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>1102<30><32>̽<EFBFBD>-11022<32><32><EFBFBD><EFBFBD>
if(CONTROLTASKTYPE == 1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if ((CStaticClass.GetDevicePhotoelectric(CorrelInfo[5]) == 1) )//&& (CStaticClass.GetDevicePhotoelectric(CorrelInfo[2]) == 1))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>λ)
{
#region <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>CStaticClass.DoubleForkWaitTime<6D>涨ʱ<E6B6A8><CAB1><EFBFBD>ڵȴ<DAB5><C8B4><EFBFBD>1102<30><32>11027<32><37>ת<EFBFBD><D7AA><EFBFBD>ȴ<EFBFBD>
dv = dbo.ExceSQL("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =" + TaskIdx + ") AND (F_Remark <> '') AND (F_DeviceIndex=" + devinfo.DeviceIndex + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
if((Convert.ToDateTime(dv[0]["F_Remark"]).AddSeconds(Convert.ToInt32(CStaticClass.DoubleForkWaitTime)) > DateTime.Now) ||
// (GetIOControlStatus(minMidx) != Model.CGeneralFunction.TASKSINGLEFORKRUN) ||
((CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 1) && (CStaticClass.GetDeviceRunState(int.Parse(CorrelInfo[4])) == 0)))//20110106
{
if ((CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 1)
&& (CStaticClass.GetDeviceRunState(int.Parse(CorrelInfo[4])) == 0)
&& (CStaticClass.GetDevicePhotoelectric(CorrelInfo[1]) == 1))//1<><31>̽<EFBFBD><EFBFBD><EFA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ڸ<EFBFBD>λ//20110106
{
//<2F><><EFBFBD>ұ<EFBFBD><D2B1>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int mfid = GetEnableDoubleForkManageTask(1, devinfo.DeviceIndex, fid);
if (mfid > 0)
{
dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + mfid + " where F_ManageTaskKindIndex=" + mti + " and FID=" + fid);
dbo.ExecuteSql("update T_Manage_Task set FUseAwayFork='0',F_RELATIVECONTORLID=" + fid + " where F_ManageTaskKindIndex=" + mti + " and FID=" + mfid);
dbo.ExecuteSql("update T_Monitor_Task set F_UseAwayFork='0' where F_ManageTASKKINDINDEX=" + mti + " and F_ManageTaskIndex=" + mfid + "");
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ĵ<EFBFBD>
AlterRoutePath(mti, mfid, CONTROLTASKTYPE, '0', devinfo.DeviceIndex);
return true;
}
return false;
}
else
{
return false;
}
}
else
{//<2F><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>ǿ<EFBFBD><C7BF>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (CStaticClass.GetDeviceRunState(int.Parse(CorrelInfo[4])) == 1)//20110106
{
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
dbo.ExecuteSql("update T_Base_PLC_Ask set F_Remark='" + dtime + "' where (F_DeviceIndex=" + devinfo.DeviceIndex + ")");
//20110108
dbo.ExecuteSql("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and F_ManageTaskIndex=" + fid + "");
dbo.ExecuteSql("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and FID=" + fid + "");
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>ʱ
dbo.ExecuteSql("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=" + devinfo.DeviceIndex + ")");
//20110108
dbo.ExecuteSql("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and F_ManageTaskIndex=" + fid + "");
dbo.ExecuteSql("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and FID=" + fid + "");
dboM.ExceSQL("update IO_Control set CONTROL_STATUS=" + Model.CGeneralFunction.TASKSINGLEFORKRUN + " where CONTROL_ID=" + fid);
return true;
}
}
else//20101220<32><30>ʼ<EFBFBD><CABC>¼2<C2BC>б<EFBFBD><D0B1>ʼ<E4BFAA>ȴ<EFBFBD><C8B4><EFBFBD>ʱ<EFBFBD><CAB1>
{
dv = dbo.ExceSQL("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =0) AND (F_Remark = '') AND (F_DeviceIndex=" + devinfo.DeviceIndex + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
dbo.ExecuteSql("update T_Base_PLC_Ask set F_TaskIndex=" + TaskIdx + ",F_Remark='" + dtime + "' where (F_DeviceIndex=" + devinfo.DeviceIndex + ")");
dbo.ExecuteSql("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and F_ManageTaskIndex=" + fid + "");
dbo.ExecuteSql("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and FID=" + fid + "");
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ĵ<EFBFBD>
AlterRoutePath(mti, fid, CONTROLTASKTYPE, '1', devinfo.DeviceIndex);
return false;
}
else//20110401
{
dv = dbo.ExceSQL("SELECT FID,F_RELATIVECONTORLID FROM T_Manage_Task where F_RELATIVECONTORLID=-1 and F_ManageTaskKindIndex=" + mti + " and FID=" + fid+"").Tables[0].DefaultView;
if(dv.Count>0)
{
if (CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 1)//1<><31><EFBFBD>л<EFBFBD><D0BB><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return false;
}
}
}
}
#endregion
}
else
{
return false;
}
}
else
if (CONTROLTASKTYPE == 2)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>վ̨<D5BE>ͳ<EFBFBD>ָ<EFBFBD><D6B8>ʱ<EFBFBD>ж<EFBFBD>1<EFBFBD>л<EFBFBD><D0BB><EFBFBD>2<EFBFBD><32>λ<EFBFBD><CEBB><EFBFBD>л<EFBFBD>״̬
{
if ((CStaticClass.GetDevicePhotoelectric(CorrelInfo[5]) == 0) && (CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 0))
{
return false ;
}
}
}
#endregion
#region <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((_AheadDetect != "") && (_AheadDetect != null))
{
char[] cc = new char[1];
cc[0] = ';';
string[] AheadDetect = _AheadDetect.Split(cc);
char[] dd = new char[1] { '.' };//20101118
string[] DS;
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0B9A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IGetDeviceState<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//IGetDeviceState GDS;
int s = 0;
//int[] sss;
int fs = 1;
//int[] fsss;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><E7BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
for (int i = AheadDetect.GetLowerBound(0); i <= AheadDetect.GetUpperBound(0); i++)
{
if (AheadDetect[i].Trim().Length <= 0) continue;
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "H")//<2F><><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>̽<EFBFBD><CCBD>
{
DeviceKind = ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
if (DeviceKind == 9)
{//<2F><>̨<EFBFBD><CCA8>Ҫ<EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȡ
if (dboM.ExceSQL("SELECT FID FROM T_ITEMDEVICESTATION WHERE (FCODE = '" + AheadDetect[i].Trim().Substring(1) + "') AND (FSTATUS = '1002')").Tables[0].DefaultView.Count > 0)
{
fs = fs & 1;
}
else
{
fs = fs & 0;
}
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȡ
dvdv = dbo.ExceSQL("SELECT F_DeviceIndex, F_HaveGoods FROM T_Base_Device where F_DeviceIndex=" +
Convert.ToInt32(AheadDetect[i].Trim().Substring(1)) + "").Tables[0].DefaultView;
if (dvdv.Count > 0)
{
fs = fs & Convert.ToInt32(dvdv[0]["F_HaveGoods"]);
}
}
continue;
}
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "N")//<2F><><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>̽<EFBFBD><CCBD>
{
DeviceKind = ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
if (DeviceKind == 9)
{//<2F><>̨<EFBFBD><CCA8>Ҫ<EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȡ;20101028<32><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD>̨<EFBFBD><CCA8>վ̨<D5BE>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
//if (dboM.ExceSQL("SELECT FID FROM T_ITEMDEVICESTATION WHERE (FCODE = '" + AheadDetect[i].Trim().Substring(1) + "') AND (FSTATUS = '1002')").Tables[0].DefaultView.Count > 0)
//{
// fs = fs & 1;
//}
//else
//{
// fs = fs & 0;
//}
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ȡ
dvdv = dbo.ExceSQL("SELECT F_DeviceIndex, F_HaveGoods FROM T_Base_Device where F_DeviceIndex=" +
Convert.ToInt32(AheadDetect[i].Trim().Substring(1)) + "").Tables[0].DefaultView;
if (dvdv.Count > 0)
{
s = s + Convert.ToInt32(dvdv[0]["F_HaveGoods"]);
}
}
continue;
}
//20090803<30><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>idle
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "I")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>idle
{
States = CStaticClass.GetDeviceState(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
if (States != null)
{
s = s + States[1];
}
continue;
}
#region 20101118<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD>źţ<C5BA>D-12001.0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD>12001<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D12001.1<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD>12001<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//D-12001.2<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD>12001<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>D12001.3<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD>12001<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ͵<EFBFBD>λ<EFBFBD><EFBFBD>
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "D")
{
DS = AheadDetect[i].Trim().Substring(1).Split(dd);
int devicebyte = 0; int devbit = 0;
int.TryParse(DS[0], out devicebyte);
int.TryParse(DS[1], out devbit);
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><E2B8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><E3BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ǰ<EFBFBD>
if (devicebyte < 0)
{
//<2F><><EFBFBD><EFBFBD>ͨѶ<CDA8>ӿڻ<D3BF><DABB>ù<EFBFBD><C3B9><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//GDS = CommModeCreate.CreateGetDeviceState(-Convert.ToInt32(AheadDetect[i]));+
//fsss = GDS.GetDeviceState(-Convert.ToInt32(AheadDetect[i]), Convert.ToInt32(dvD[0]["F_MonitorIndex"]));
int fsn = CStaticClass.GetDevicePhotoelectric(-devicebyte, devbit);
//if (fsss == null)
//{
// this._CControlError = GDS.CommLayerError;
// return false;
//}
if (fsn == -1)//20101220
{
return false;
}
fs = fs & fsn;
}
else
{//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ͨѶ<CDA8>ӿڻ<D3BF><DABB>ù<EFBFBD><C3B9><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//GDS = CommModeCreate.CreateGetDeviceState(Convert.ToInt32(AheadDetect[i]));
//sss = GDS.GetDeviceState(Convert.ToInt32(AheadDetect[i]), Convert.ToInt32(dvD[0]["F_MonitorIndex"]));
int sssn = CStaticClass.GetDevicePhotoelectric(devicebyte, devbit);
//if (sss == null)
//{
// this._CControlError = GDS.CommLayerError;
// return false;
//}
if (sssn == -1)//20101220
{
return false;
}
s = s + sssn;
}
}
#endregion
}
if ((s == 0) && (fs == 1))
{
//if (CStaticClass.AGVAllowSingleFork == "0")//20100710
//{
// #region <20><>AGVȡ<56><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񣬼<EFBFBD><F1A3ACBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ż<EFBFBD><C5BC><EFBFBD><EFBFBD>һ
// string[] outstation = new string[4] { "2241", "2242", "3241", "3242" };
// if ((Array.IndexOf(outstation, DeviceIdx.ToString()) >= 0) && (Model.CGeneralFunction.GetDoubleForkMonitorInfo(TaskIdx, DeviceIdx) == null))
// {
// if ((DeviceIdx % 2) == 0)
// {
// dvdv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE F_DeviceIndex = " + (DeviceIdx - 1) + " AND F_Status > 0").Tables[0].DefaultView;
// if (dvdv.Count > 0)
// {
// return false;
// }
// if (CStaticClass.GetDevicePhotoelectric(ccf.GetBindingDeviceIndexOut(DeviceIdx - 1)) == 1)
// {
// return false;
// }
// }
// else
// {
// dvdv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE F_DeviceIndex = " + (DeviceIdx + 1) + " AND F_Status > 0").Tables[0].DefaultView;
// if (dvdv.Count > 0)
// {
// return false;
// }
// if (CStaticClass.GetDevicePhotoelectric(ccf.GetBindingDeviceIndexOut(DeviceIdx + 1)) == 1)
// {
// return false;
// }
// }
// }
// #endregion
//}
//return true;//20101011
}
else
{
return false;
}
}
else
{
//<2F><><EFBFBD>豸û<E8B1B8><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><E2BFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//return true;//20101011
}
#endregion
//20101011
#region ˫<EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD>֤˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ˫<EFBFBD><EFBFBD>޻<EFBFBD>λ
if ((devinfo.DeviceKind == 1) && (devinfo.IfCorrelDoubleFork == "1") && (ccf.GetDeviceOrderFromMonitor(minMidx) == 4) && (CONTROLTASKTYPE == 1))
{
string[] CorrelInfo = ccf.GetCorrel_DeviceInfo(minMidx);
if (CorrelInfo == null) return false;
string[] corrinfo=Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
if (corrinfo == null)
{
int IfCorrel = ccf.GetCorrel_DeviceIndex(minMidx);
if (IfCorrel == 0)//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD>ж<EFBFBD>1<EFBFBD><31><EFBFBD>޻<EFBFBD>20110108
{
if (CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) != 0)
{
return false;
}
//20110108
dbo.ExecuteSql("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and F_ManageTaskIndex=" + fid + "");
dbo.ExecuteSql("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and FID=" + fid + "");
//<2F><><EFBFBD><EFBFBD>޻<EFBFBD>λ<EFBFBD>ж<EFBFBD>
string ChangeForkCell = IfLimitCellChangeFork(minMidx);
if (ChangeForkCell != "-")//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ChangeEndCellCode(minMidx, ChangeForkCell, devinfo.DeviceIndex);
}
}
#region ˫<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>վ̨<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ˵ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>޻<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else if (IfCorrel> 0)
{
//string[] CorrelInfo = ccf.GetCorrel_DeviceInfo(minMidx);
//if (CorrelInfo == null) return false;
if(CStaticClass.GetDevicePhotoelectric(int.Parse(CorrelInfo[5])) == 1)
{
dv = dbo.ExceSQL("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =" + TaskIdx + ") AND (F_Remark <> '') AND (F_DeviceIndex=" + CorrelInfo[0] + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
CorrelInfo = ccf.GetCorrelOther_DeviceInfo(Convert.ToInt32(CorrelInfo[8]));//<2F><><EFBFBD><EFBFBD>վ̨<D5BE><CCA8><EFBFBD><EFBFBD>Ϣ
//(Convert.ToDateTime(dv[0]["F_Remark"]).AddSeconds(Convert.ToInt32(CStaticClass.DoubleForkWaitTime)) > DateTime.Now)
if ((GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN)
|| ((CStaticClass.GetDevicePhotoelectric(int.Parse(CorrelInfo[5])) == 1)) && (CStaticClass.GetDeviceRunState(int.Parse(CorrelInfo[4])) == 0))//20110106
{//û<><C3BB>ʱ<EFBFBD><CAB1><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((CStaticClass.GetDevicePhotoelectric(int.Parse(CorrelInfo[5])) == 1)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
&& (CStaticClass.GetDeviceRunState(int.Parse(CorrelInfo[4])) == 0))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//20110106
{
//<2F><><EFBFBD>ұ<EFBFBD><D2B1>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int mfid = GetEnableDoubleForkManageTask(1,devinfo.DeviceIndex, int.Parse(CorrelInfo[0]), fid);
if (mfid > 0)
{
#region ˫<EFBFBD><EFBFBD>ͬΪǰ<EFBFBD><EFBFBD><EFBFBD>޺<EFBFBD><EFBFBD>ߺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>޲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>
if ((IfInSameLimitX(fid, mfid,mti) == true) && (mti == 1))
{
dboM.ExecuteSql(" update IO_CONTROL set CONTROL_STATUS=" + Model.CGeneralFunction.TASKSINGLEFORKRUN + " WHERE (CONTROL_ID = " + fid + ")");
dboM.ExecuteSql(" update IO_CONTROL set CONTROL_STATUS=" + Model.CGeneralFunction.TASKSINGLEFORKRUN + " WHERE (CONTROL_ID = " + mfid + ")");
return true;
}
#endregion
dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + mfid + " where F_ManageTaskKindIndex=" + mti + " and FID=" + fid);
dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + fid + " where F_ManageTaskKindIndex=" + mti + " and FID=" + mfid);
return false;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{//<2F><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>ǿ<EFBFBD><C7BF>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (CStaticClass.GetDeviceRunState(int.Parse(CorrelInfo[4])) == 1)//20110106
{//<2F><><EFBFBD>ڶԵ<DAB6><D4B5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>¼<EFBFBD>ʱ
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
dbo.ExecuteSql("update T_Base_PLC_Ask set F_Remark='" + dtime + "' where (F_DeviceIndex=" + int.Parse(CorrelInfo[0]) + ")");
return false;
}
else
{//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>ǿ<EFBFBD><C7BF>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dbo.ExecuteSql("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=" + int.Parse(CorrelInfo[0]) + ")");
return true;
}
}
}
else
{
dv = dbo.ExceSQL("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =0) AND (F_Remark = '') AND (F_DeviceIndex=" + int.Parse(CorrelInfo[0]) + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
dbo.ExecuteSql("update T_Base_PLC_Ask set F_TaskIndex=" + TaskIdx + ",F_Remark='" + dtime + "' where (F_DeviceIndex=" + int.Parse(CorrelInfo[0]) + ")");
return false;
}
}
}
}
#endregion
}
else
{
#region ˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ˫<EFBFBD><EFBFBD>޻<EFBFBD>λ<EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD>޻<EFBFBD>λʹ<EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Ϊȡ<CEAA><C8A1><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><E6B5B9><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>׷<EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>λ---<2D><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>޻<EFBFBD>λ<EFBFBD><CEBB>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
if (CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 0)//˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ж<EFBFBD>1<EFBFBD><31><EFBFBD>л<EFBFBD>20110108
{
return false;
}
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
string ChangeForkCell = IfLimitCellChangeFork(minMidx);
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
string ChangeForkCell1 = IfLimitCellChangeFork(int.Parse(corrinfo[0]));
#endregion
if ((ChangeForkCell != "-") && (ChangeForkCell1 != "-"))
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸Ļ<DEB8>λ
}
else if ((ChangeForkCell != "-")&& (ChangeForkCell1 == "-"))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ChangeEndCellCode(minMidx, ChangeForkCell, devinfo.DeviceIndex);
}
else if ((ChangeForkCell1 != "-") && (ChangeForkCell == "-"))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ChangeEndCellCode(int.Parse(corrinfo[0]), ChangeForkCell1, devinfo.DeviceIndex);
}
#endregion
}
}
#endregion
#region ˫<EFBFBD><EFBFBD>AGV<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD>֤˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ˫<EFBFBD><EFBFBD>޻<EFBFBD>λ
//if ((devinfo.DeviceKind == 6) && (devinfo.IfCorrelDoubleFork == "1") && (ccf.GetDeviceOrderFromMonitor(minMidx) == 1) && (CONTROLTASKTYPE == 1))
//{
// string[] corrinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
// if (corrinfo == null)
// {
// #region ˫<><CBAB><EFBFBD>Ե<EFBFBD>վ̨<D5BE>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ˵ȴ<CBB5><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>޻<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// if (GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN)
// {//ûǿ<C3BB>Ƶ<EFBFBD><C6B5><EFBFBD>ִ<EFBFBD><D6B4>
// //<2F><><EFBFBD>ҹ<EFBFBD><D2B9><EFBFBD>վ̨
// int agvCorrel = GetAGVCorrelIndex(TaskIdx);
// if (agvCorrel != -1)
// {
// //<2F><><EFBFBD>ұ<EFBFBD><D2B1>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// int mfid = GetAGVEnableDoubleForkManageTask(1,agvCorrel);
// if (mfid > 0)
// {
// #region ˫<><CBAB>ͬΪǰ<CEAA><C7B0><EFBFBD>޺<EFBFBD><DEBA>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD>޲<EFBFBD><DEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
// if ((IfInSameLimitX(fid, mfid,mti) == true) && (mti==1))
// {
// dboM.ExecuteSql(" update IO_CONTROL set CONTROL_STATUS="+Model.CGeneralFunction.TASKSINGLEFORKRUN+" WHERE (CONTROL_ID = "+fid+")");
// dboM.ExecuteSql(" update IO_CONTROL set CONTROL_STATUS=" + Model.CGeneralFunction.TASKSINGLEFORKRUN + " WHERE (CONTROL_ID = " + mfid + ")");
// return true;
// }
// #endregion
// dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + mfid + " where F_ManageTaskKindIndex=" + mti + " and FID=" + fid);
// dbo.ExecuteSql("update T_Manage_Task set F_RELATIVECONTORLID=" + fid + " where F_ManageTaskKindIndex=" + mti + " and FID=" + mfid);
// return true;
// }
// else
// return false;
// }
// else
// return true ;
// }
// else
// {//<2F><><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// return true;
// }
// #endregion
// }
//}
#endregion
#region ˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
int StartDevice = _StartDevice;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int EndDevice = _EndDevice;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
int DeviceOrder = _DeviceOrder;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
int END = 12604;
string sqlstr = string.Empty;
#region <EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ж϶Ѷ<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>г<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޻<EFBFBD>
if (DeviceIdx == 11005 && DeviceOrder == 4 && CONTROLTASKTYPE == 2 && EndDevice == END)//
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
string checkdevice = "12603;12604";
int freecount = ccf.GetTransDeviceGoodsCounts(checkdevice);
if (freecount > 0)
{
return false;
}
sqlstr = string.Format("SELECT FID FROM T_Manage_Task WHERE FCONTROLTASKTYPE=1 and FSTARTDEVICE ={0}", END);
dv = dbo.ExceSQL(sqlstr).Tables[0].DefaultView;
if (dv.Count > 0)
{
return false;
}
}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ж<EFBFBD>
if (DeviceIdx == END && DeviceOrder == 6 && CONTROLTASKTYPE == 1)//
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
sqlstr = string.Format("SELECT FID FROM T_Manage_Task WHERE FCONTROLTASKTYPE=2 and FSTATUS > 0 and FENDDEVICE ={0}", END);
dv = dbo.ExceSQL(sqlstr).Tables[0].DefaultView;
if (dv.Count > 0)
{
return false;
}
}
#endregion
#endregion
return true;//20101011
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv = null;
dt = null;
dvdv = null;
}
}
/// <summary>
/// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
/// </summary>
/// <param name="minMidx"><3E>豸ָ<E8B1B8><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
public bool GetSendInfo(int minMidx)
{
DataView dvD ;
try
{
string strD = "";
strD = "SELECT F_DeviceKindIndex,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4," +
"F_NumParam5,F_NumParam6,F_TxtParam,F_AheadDetect,F_ManTaskReserve,F_LockedState," +
"F_Associate,F_SerialNumber,F_RouteID,F_DeviceIndex,F_DeviceCommandIndex," +
"F_MonitorIndex,F_ManageTaskIndex,F_ManageTaskKindIndex,F_OutsideAltDevice," +
"F_InsideAltDevice,F_StartDevice,F_EndDevice,F_RouteKind,F_CorrelDoubleFork,F_UseAwayFork,F_AgvNo " +
" FROM V_Monitor_Route_Device where F_MonitorIndex=" + minMidx;
dvD = dbo.ExceSQL(strD).Tables[0].DefaultView;
if (dvD.Count > 0)
{
if (dvD[0]["F_AheadDetect"] != DBNull.Value)
{
_AheadDetect = dvD[0]["F_AheadDetect"].ToString();
}
else
{
_AheadDetect = "";
}
if (dvD[0]["F_ManTaskReserve"] != DBNull.Value)
{
_ManTaskReserve = Convert.ToInt32(dvD[0]["F_ManTaskReserve"]);
}
else
{
_ManTaskReserve = 0;
}
if (dvD[0]["F_Associate"] != DBNull.Value)
{
_Associate = Convert.ToInt32(dvD[0]["F_Associate"]);
}
else
{
_Associate = 0;
}
if (dvD[0]["F_LockedState"] != DBNull.Value)
{
_LockedState = Convert.ToInt32(dvD[0]["F_LockedState"]);
}
else
{
_LockedState = 0;
}
if (dvD[0]["F_NumParam1"] != DBNull.Value)
{
_NumParam1 = Convert.ToInt32(dvD[0]["F_NumParam1"]);
}
else
{
_NumParam1 = 0;
}
if (dvD[0]["F_NumParam2"] != DBNull.Value)
{
_NumParam2 = Convert.ToInt32(dvD[0]["F_NumParam2"]);
}
else
{
_NumParam2 = 0;
}
if (dvD[0]["F_NumParam3"] != DBNull.Value)
{
_NumParam3 = Convert.ToInt32(dvD[0]["F_NumParam3"]);
}
else
{
_NumParam3 = 0;
}
if (dvD[0]["F_NumParam4"] != DBNull.Value)
{
_NumParam4 = Convert.ToInt32(dvD[0]["F_NumParam4"]);
}
else
{
_NumParam4 = 0;
}
if (dvD[0]["F_NumParam5"] != DBNull.Value)
{
_NumParam5 = Convert.ToInt32(dvD[0]["F_NumParam5"]);
}
else
{
_NumParam5 = 0;
}
if (dvD[0]["F_NumParam6"] != DBNull.Value)
{
_NumParam6 = Convert.ToInt32(dvD[0]["F_NumParam6"]);
}
else
{
_NumParam6 = 0;
}
if (dvD[0]["F_TxtParam"] != DBNull.Value)
{
_TxtParam = dvD[0]["F_TxtParam"].ToString();
}
else
{
_TxtParam = "-";
}
_serialNumber = Convert.ToInt32(dvD[0]["F_SerialNumber"]);
_routeID = Convert.ToInt32(dvD[0]["F_RouteID"]);
_DeviceIdx = Convert.ToInt32(dvD[0]["F_DeviceIndex"]);
_DeviceOrder = Convert.ToInt32(dvD[0]["F_DeviceCommandIndex"]);
_ManageKindIdx = Convert.ToInt32(dvD[0]["F_ManageTaskKindIndex"]);
_ManageTaskIdx = Convert.ToInt32(dvD[0]["F_ManageTaskIndex"]);
_DeviceKind = Convert.ToInt32(dvD[0]["F_DeviceKindIndex"]);
if (dvD[0]["F_OutsideAltDevice"] != DBNull.Value)
{
_OutsideAltDevice = Convert.ToInt32(dvD[0]["F_OutsideAltDevice"]);
}
else
{
_OutsideAltDevice = 0;
}
if (dvD[0]["F_InsideAltDevice"] != DBNull.Value)
{
_InsideAltDevice = Convert.ToInt32(dvD[0]["F_InsideAltDevice"]);
}
else
{
_InsideAltDevice = 0;
}
_StartDevice = Convert.ToInt32(dvD[0]["F_StartDevice"]);
_EndDevice = Convert.ToInt32(dvD[0]["F_EndDevice"]);
_RouteKind = Convert.ToInt32(dvD[0]["F_RouteKind"]);
if (dvD[0]["F_CorrelDoubleFork"] != DBNull.Value)
{
_CorrelDoubleFork = Convert.ToInt32(dvD[0]["F_CorrelDoubleFork"]);
}
else
{
_CorrelDoubleFork = -1;
}
if (dvD[0]["F_AgvNo"] != DBNull.Value)
{
_AgvNo = Convert.ToInt32(dvD[0]["F_AgvNo"]);
}
else
{
_AgvNo = 65535;
}
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dvD = null;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="MonitorIndex"></param>
/// <returns></returns>
public bool SendMonitorTask(int MonitorIndex)
{
lock (thisLock)
{
char[] sep = new char[1] { '-' };
int msgIdx = 0;//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
bool sendok;
//string aa222 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
#region ˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>ִ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰλ<EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
MonitorIndex = GetDoubleForkMinRouteTask(MonitorIndex);
#endregion
//string aa22 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>Ϣ
// 20121014
if (GetSendInfo(MonitorIndex) == false) { return false; }
#region <EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (ccf.GetManageTaskKindIndexFromMonitor(MonitorIndex) == 4)
{
//20120915
// if (AheadDetectOK(MonitorIndex, ccf.GetBeDetectedDevices(_DeviceIdx)) == false)
if (AheadDetectOK(MonitorIndex, ccf.GetBeDetectedDevices(_DeviceIdx)) == false) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return false;
}
//CStaticClass.MessageIndex++;
CStaticClass.MessageIndex = 1;
msgIdx = (CStaticClass.MessageIndex);
sdo = CommModeCreate.CreateSendDeviceOrder(_DeviceIdx);
int[] gc = new int[6] {_NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 };
if ((_DeviceKind == 1) || (_DeviceKind == 6))
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, _DeviceOrder,
_DeviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
// CommonClassLib.CCarryConvert.WriteDarkCasket("send", "1111", _DeviceIdx.ToString(), "------");
}
else if (_DeviceKind == 4)
{
if (ccf.NeedOptimize(_DeviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, _DeviceOrder, _DeviceIdx, gc[2]);
}
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, _DeviceOrder, _DeviceIdx, gc[5]);
}
if (sendok == false)
{
if (sdo.CommLayerError != null)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf(sdo.CommLayerError) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", sdo.CommLayerError, true);
}
}
return false;
}
else
{
//////////////////////////
ccf.SendOrderSuccess(_ManageKindIdx, _ManageTaskIdx, MonitorIndex, _DeviceIdx, _routeID);
#region ˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
if (Model.CGeneralFunction.DoubleForkIfSync(MonitorIndex, _DeviceIdx, _DeviceKind) == true)
{
string[] df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(MonitorIndex, _DeviceIdx);
if (df != null)
{
ccf.SendOrderSuccess(ccf.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0])), ccf.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0])), Convert.ToInt32(df[0]), Convert.ToInt32(df[2]), Convert.ToInt32(df[3]));
//dbo.ExceSQL("update T_Monitor_Task set F_CorrelDoubleFork=" + df[0] + " where F_MonitorIndex=" + MonitorIndex + "");
//dbo.ExceSQL("update T_Monitor_Task set F_CorrelDoubleFork=" + MonitorIndex + " where F_MonitorIndex=" + df[0] + "");
}
}
}
#endregion
return true;
}
}
#endregion
#region <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(taskkind == 1<EFBFBD><EFBFBD>2)
//(taskkind == 1<><31>2)<29>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///////////////////////////////////////
//2--6Ӧ<36><D3A6><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
///////////////////////////////////////
/////////////////////
//20100208
#region <EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RGV<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endregion
////////////////////
//2<><32><EFBFBD><EFBFBD>ȡÿ<C8A1><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>һ<EFBFBD><D2BB><EFBFBD>豸״̬
//string aa221 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
if (GetFirstDeviceIFLocked(MonitorIndex, true) == false)//û<>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//7<><37><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
//CStaticClass.MessageIndex++;
CStaticClass.MessageIndex = 1;
msgIdx = (CStaticClass.MessageIndex);
sdo = CommModeCreate.CreateSendDeviceOrder(_DeviceIdx);
//<2F>ж<EFBFBD><D0B6><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD>RGV<47>ͣ<EFBFBD><CDA3>ǣ<EFBFBD>
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 };//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (gc == null)
{
this._CControlError += "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><E8B1B8><EFBFBD>꣡";
return false;
}
if ((_DeviceKind == 1) || (_DeviceKind == 6))
{
//1<><31><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>RGV<47><56>6<EFBFBD><36>AGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><E8B1B8><EFBFBD><EFBFBD>F_NeedOptimize='1'<27><>
//ֱ<><D6B1>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>T_Monitor_Task_Child<6C><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (ccf.NeedOptimize(_DeviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, _DeviceOrder,
_DeviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
}
}
else if (_DeviceKind == 4) // RGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (ccf.NeedOptimize(_DeviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, _DeviceOrder, _DeviceIdx, gc[2]);
}
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, _DeviceOrder, _DeviceIdx, gc[5]); // <20><><EFBFBD>ͻ<EFBFBD><CDBB>ķ<EFBFBD><C4B7><EFBFBD>ָ<EFBFBD><D6B8> _NumParam4<6D><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾĿ<CABE><C4BF>λ<EFBFBD><CEBB>
if (_DeviceOrder == 7 || _DeviceOrder == 8)
{
// cgs.ActionComplete(_DeviceIdx, MonitorIndex, 1);
}
}
if (sendok == false)
{
if (sdo.CommLayerError != null)
{
if (FrmControlMonitor.FormInstance.GetObjectText("tsStatus").IndexOf(sdo.CommLayerError) < 0)
{
FrmControlMonitor.FormInstance.FlashPanit("tsStatus", sdo.CommLayerError, true);
}
}
return false;
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
{
//////////////////////////
dbo.ExecuteSql("update T_Monitor_Task set F_SendFlag='1' where F_MonitorIndex=" + MonitorIndex);//20100905ֻ<35>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ccf.SendOrderSuccess(_ManageKindIdx, _ManageTaskIdx, MonitorIndex, _DeviceIdx, _routeID);
#region ˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
if (Model.CGeneralFunction.DoubleForkIfSync(MonitorIndex, _DeviceIdx, _DeviceKind) == true)
{
string[] df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(MonitorIndex, _DeviceIdx);
if (df != null)
{
ccf.SendOrderSuccess(ccf.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0])), ccf.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0])), Convert.ToInt32(df[0]), Convert.ToInt32(df[2]), Convert.ToInt32(df[3]));
//dbo.ExceSQL("update T_Monitor_Task set F_CorrelDoubleFork=" + df[0] + " where F_MonitorIndex=" + MonitorIndex + "");
//dbo.ExceSQL("update T_Monitor_Task set F_CorrelDoubleFork=" + MonitorIndex + " where F_MonitorIndex=" + df[0] + "");
}
}
}
#endregion
return true;
}
}
else
{
return false;
}
#endregion
}
}
int GetDeviceFromMonitor(int monitorIndex)
{
DataView dv = dbo.ExceSQL("SELECT F_MonitorIndex, F_DeviceIndex FROM T_Monitor_Task WHERE (F_MonitorIndex = " + monitorIndex + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0]["F_DeviceIndex"]);
}
else
{
return -1;
}
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>õ<EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>վ̨
/// </summary>
/// <param name="manageTaskIdx"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="manageKindIdx"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
bool GetUsableDestination(int manageTaskIdx,int manageKindIdx )
{
//20100610<31><30><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD><D9B5>յ<EFBFBD><D5B5>
Dictionary<int, int> advDev=new Dictionary<int,int>();
object ob;
DataView dv = dbo.ExceSQL("SELECT * FROM T_Manage_Task WHERE (FID = " + manageTaskIdx + ") AND (F_ManageTaskKindIndex = " + manageKindIdx + ")").Tables[0].DefaultView;
if (dv.Count <= 0)
{
return false ;
}
DataRowView dr = dv[0];
//20091107
DataView dvIO = dboM.ExceSQL("select CONTROL_ID, CONTROL_STATUS from IO_Control where (CONTROL_ID = " + Convert.ToInt32(dr["FID"]) + ") AND ((CONTROL_STATUS=" + Model.CGeneralFunction.TASKALTERROUTEAPPLY + ") or (CONTROL_STATUS=" + Model.CGeneralFunction.TASKALTERROUTEREPLY + "))").Tables[0].DefaultView;
if (dvIO.Count <= 0)
{
//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĵ<DEB8><C4B5><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
if (dr["F_ManageTaskKindIndex"].ToString() != "1") return false;
string sql = "";
string adviceDev = "";
DataTable dtd = dbo.ExceSQL("SELECT F_TASKKIND, F_DESTINATION FROM T_Base_Destination WHERE (F_TASKKIND = " + dr["FCONTROLTASKTYPE"] + ") and (F_AbendStation=1) and (F_DESTINATION=" + dr["FENDDEVICE"] + ")").Tables[0];
if (dtd.Rows.Count > 0)//ԭ<><D4AD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>Ӧ<EFBFBD><D3A6>վ̨<D5BE><CCA8>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ̨<D5BE><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ı<EFBFBD>
{
adviceDev = dtd.Rows[0]["F_DESTINATION"].ToString();
return false;
}
else
{
//<2F><><EFBFBD>ҿ<EFBFBD><D2BF><EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD><CEBB>
DataTable dt = dbo.ExceSQL("SELECT F_TASKKIND, F_DESTINATION FROM T_Base_Destination WHERE (F_TASKKIND = " + dr["FCONTROLTASKTYPE"] + ") and (F_DESTINATION <>" + dr["FENDDEVICE"] + ") and (F_AbendStation=0)").Tables[0];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (CDisassembleTask.MinRouteID(Convert.ToInt32(dr["FSTARTDEVICE"]), Convert.ToInt32(dt.Rows[i]["F_DESTINATION"]), dr["FUseAwayFork"]) != -1)
{
//20100610ͳ<30>Ƶ<EFBFBD><C6B5>յ<EFBFBD><D5B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ob = dbo.GetSingle("SELECT count(FENDDEVICE) as counts FROM T_Manage_Task where FENDDEVICE='" + dt.Rows[i]["F_DESTINATION"] + "' and fstatus>0");
advDev.Add(Convert.ToInt32(dt.Rows[i]["F_DESTINATION"]),Convert.ToInt32(ob));
//20100610 break;
}
}
if (advDev.Count == 0)//20100610
{
return false;
}
else
{//20100610
int mincount=9999;
foreach (int aaa in advDev.Keys)
{
if (advDev[aaa] < mincount)
{
mincount = advDev[aaa];
adviceDev = aaa.ToString();
}
}
if (adviceDev == "")
{
return false;
}
}
}
else
{//20100610
return false;
}
}
//DataView DV = dboM.ExceSQL("select IO_CONTROL_APPLY_SEQ.NEXTVAL FROM DUAL").Tables[0].DefaultView;
//20101108int fid = dboM.GetManageTableIndex("IO_CONTROL_APPLY");
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
//20091128
dboM.TransBegin();
try
{
dboM.ExceSQL(" update IO_CONTROL set CONTROL_STATUS="+Model.CGeneralFunction.TASKALTERROUTEAPPLY+" where CONTROL_ID=" + dr["FID"] + "");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>//20101108CONTROL_APPLY_ID, " + fid + ",
sql = "INSERT INTO IO_CONTROL_APPLY ( CONTROL_ID,CONTROL_APPLY_TYPE,WAREHOUSE_CODE, STOCK_BARCODE, DEVICE_CODE, APPLY_TASK_STATUS, CREATE_TIME, " +
" CONTROL_APPLY_REMARK)" +
"VALUES (" + dr["FID"] + ",2,'" + dr["FSTARTWAREHOUSE"] + "','" + dr["FPALLETBARCODE"] + "','" + adviceDev + "',0,'" + dtime + "',null)";
dboM.ExceSQL(sql);
dboM.TransCommit();
//<2F><>ManageTaskIdx<64><78>ManageKindIdx <20>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
dbo.ExceSQL("UPDATE T_Monitor_Task SET F_Status = 3 WHERE (F_ManageTaskIndex = " + manageTaskIdx + ") AND (F_ManageTASKKINDINDEX =" + manageKindIdx + ")");
return true;
}
catch (Exception ex)
{
_CControlError = "<22><><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʱ<EFBFBD><CAB1>" + ex.Message;
dboM.TransRollback();
return false;
}
}
else
{
return false;
}
}
/// <summary>
/// <20><>ȡRGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>վ̨
/// </summary>
/// <param name="manageTaskIdx"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="manageKindIdx"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="IfUseNegativeDevice"><3E>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>豸ǰ<E8B1B8><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RGV<47><56><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
bool GetRGVIdleDestination(int manageTaskIdx, int manageKindIdx,int RGVGateDevice, bool IfUseNegativeDevice)
{
//20100610 t_Base_device <20><>F_UsableEndDevice<63>ֶδ<D6B6><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD>Եȵ<D4B5><C8B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԷֺŸ<D6BA><C5B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ڵ<EFBFBD>ǰ<EFBFBD>豸ǰ<E8B1B8><EFBFBD><E6A3A8><EFBFBD><EFBFBD>RGV<47><56><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>򣩣<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>RGVȡ<56><C8A1><EFBFBD>͵<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD>ʱʹ<CAB1>ã<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><><D6B1>RGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//T_Base_RGV_Gate<74><65><EFBFBD><EFBFBD><EFBFBD>ֶΡ<D6B6>F_EndDevice<63><65><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>RGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>Ķ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
//<2F><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ̨һ<CCA8><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>Ӧ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>վ̨<D5BE><CCA8><EFBFBD><EFBFBD>
//<2F>ɱ<EFBFBD><C9B1><EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD>õ<EFBFBD>ѡ<EFBFBD><D1A1>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>RGVĿ<56><C4BF>λ<EFBFBD>ÿ<EFBFBD><C3BF>С<EFBFBD><D0A1><EFBFBD><EFBFBD>Ŀ<EFA3BB><C4BF>λ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>еĵ<D0B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DataView dv;
DataRowView dr;
string sql = "";
string adviceDev = "";
char[] cc = new char[1] { ';' };
string[] sp;
DataView dvIO;
Dictionary<int, int> advDev=new Dictionary<int,int>();
object ob;
try
{
dv = dbo.ExceSQL("SELECT * FROM T_Manage_Task WHERE (FID = " + manageTaskIdx + ") AND (F_ManageTaskKindIndex = " + manageKindIdx + ")").Tables[0].DefaultView;
if (dv.Count <= 0)
{
return false;
}
dr = dv[0];
//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ĵ<DEB8><C4B5><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
if (dr["F_ManageTaskKindIndex"].ToString() != "1") return false;
dvIO = dboM.ExceSQL("select CONTROL_ID, CONTROL_STATUS from IO_Control where (CONTROL_ID = " + Convert.ToInt32(dr["FID"]) + ") AND ((CONTROL_STATUS=" + Model.CGeneralFunction.TASKALTERROUTEAPPLY + ") or (CONTROL_STATUS=" + Model.CGeneralFunction.TASKCANCEL + ") or(CONTROL_STATUS=" + Model.CGeneralFunction.TASKALTERROUTEREPLY + "))").Tables[0].DefaultView;
if (dvIO.Count <= 0)
{
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>T_Base_Device<EFBFBD><EFBFBD><EFBFBD><EFBFBD>F_UsableEndDevice<EFBFBD><EFBFBD><EFBFBD>ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD>
DataView dvu = dbo.ExceSQL("select F_UsableEndDevice from T_Base_Device where F_UsableEndDevice is not null and F_DeviceIndex=" + RGVGateDevice + "").Tables[0].DefaultView;
if (dvu.Count > 0)
{
int enddv = 0, DESTINATION = 0;
sp = dvu[0]["F_UsableEndDevice"].ToString().Split(cc);
for (int i = sp.GetLowerBound(0); i <= sp.GetUpperBound(0); i++)
{
if (Microsoft.VisualBasic.Information.IsNumeric(sp[i]) == false) continue;
enddv = Convert.ToInt32(sp[i]);
if (enddv < 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>豸ǰ<E8B1B8><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RGV<47><56><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (IfUseNegativeDevice == true)
{
enddv = -(enddv);
}
else
{
continue;
}
}
devinfo = Model.CGetInfo.GetDeviceInfo(enddv);
if ((devinfo.HaveGoods == true)||(devinfo.RunState==2))
{//Ŀ<><C4BF>λ<EFBFBD>ñ<EFBFBD>ռ<EFBFBD>û<EFBFBD><C3BB>߹<EFBFBD><DFB9><EFBFBD>
continue;
}
ob = dbo.GetSingle("SELECT F_EndDevice FROM T_Base_RGV_Gate WHERE (F_RGVGateDeviceIndex = " + enddv + ") AND (F_EndDevice IS NOT NULL)");
if (ob == null) continue;
DESTINATION = Convert.ToInt32(ob);
if (CDisassembleTask.MinRouteID(Convert.ToInt32(dr["FSTARTDEVICE"]), DESTINATION) != -1)
{
//20100609ͳ<39>Ƶ<EFBFBD><C6B5>յ<EFBFBD><D5B5><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ob = dbo.GetSingle("SELECT count(FENDDEVICE) as counts FROM T_Manage_Task where FENDDEVICE='" + DESTINATION + "' and fstatus>0");
advDev.Add(DESTINATION, Convert.ToInt32(ob));
}
}
}
else
{
return false;
}
dvu = null;
if (advDev.Count<=0)
{
return false;
}
else
{
int mincount = 9999;
foreach (int aaa in advDev.Keys)
{
if (advDev[aaa] < mincount)
{
mincount = advDev[aaa];
adviceDev = aaa.ToString();
}
}
if (adviceDev == "")
{
return false;
}
}
#endregion
//20101108int fid = dboM.GetManageTableIndex("IO_CONTROL_APPLY");
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
dboM.TransBegin();
try
{
dboM.ExceSQL(" update IO_CONTROL set CONTROL_STATUS=" + Model.CGeneralFunction.TASKALTERROUTEAPPLY + " where CONTROL_ID=" + dr["FID"] + " and CONTROL_STATUS<>" + Model.CGeneralFunction.TASKCANCEL + "");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>//20101108CONTROL_APPLY_ID," + fid + ",
sql = "INSERT INTO IO_CONTROL_APPLY ( CONTROL_ID, WAREHOUSE_CODE, STOCK_BARCODE, DEVICE_CODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_REMARK)" +
"VALUES (" + dr["FID"] + ",'" + dr["FENDWAREHOUSE"] + "','" + dr["FPALLETBARCODE"] + "','" + adviceDev + "',0,'" + dtime + "',null)";
dboM.ExceSQL(sql);
dboM.TransCommit();
//<2F><>ManageTaskIdx<64><78>ManageKindIdx <20>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
dbo.ExceSQL("UPDATE T_Monitor_Task SET F_Status = 3 WHERE (F_ManageTaskIndex = " + manageTaskIdx + ") AND (F_ManageTASKKINDINDEX =" + manageKindIdx + ")");
return true;
}
catch (Exception ex)
{
dboM.TransRollback();
_CControlError = "<22><><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʱ<EFBFBD><CAB1>" + ex.Message;
return false;
}
}
else
{
return false;
}
}
catch (Exception ex)
{
_CControlError = "<22><><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʱ<EFBFBD><CAB1>" + ex.Message;
return false;
}
finally
{
dv = null;
dr = null;
cc = null;
sp = null;
dvIO = null;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="controlTaskType"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="devindex"><3E><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <returns></returns>
int GetEnableDoubleForkManageTask(int controlTaskType, int devindex,int FID)
{
DataView dv0;
string sql = "SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex AND F_DeviceIndex=" + devindex + " and FCONTROLTASKTYPE=" + controlTaskType;
DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
dv0 = dbo.ExceSQL("select min(F_MonitorIndex) as mm from T_Monitor_Task where F_ManageTaskIndex=" + dv[i]["F_ManageTaskIndex"] + " and F_ManageTASKKINDINDEX=" + dv[i]["F_ManageTASKKINDINDEX"] + " ").Tables[0].DefaultView;
if (dv0.Count > 0)
{
if (dv0[0]["mm"].ToString() == dv[i]["F_MonitorIndex"].ToString())
{
if (FID != Convert.ToInt32(dv[i]["F_ManageTaskIndex"]))
{
return Convert.ToInt32( dv[i]["F_ManageTaskIndex"]);
}
}
}
}
return -1;
}
else
{
return -1;
}
}
/// <summary>
/// <20><><EFBFBD>öѶ<C3B6><D1B6><EFBFBD><EFBFBD>ڶԵ<DAB6>վ̨ȡ<CCA8><C8A1><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="controlTaskType"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="Stackdevindex"><3E>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <param name="StationDevice">վ̨<D5BE><EFBFBD><E8B1B8><EFBFBD><EFBFBD></param>
/// <param name="FID"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
int GetEnableDoubleForkManageTask(int controlTaskType, int Stackdevindex,int StationDevice, int FID)
{
DataView dv1 = dbo.ExceSQL("SELECT F_ZXY FROM T_Base_Lane_Gate,T_Base_LaneInfo WHERE "+
"(T_Base_Lane_Gate.F_LaneIndex = T_Base_LaneInfo.F_LaneDeviceIndex) and (T_Base_LaneInfo.F_StackIndex = " +
Stackdevindex + ") and (F_LaneGateDeviceIndex=" + StationDevice + ")").Tables[0].DefaultView;
if (dv1.Count <= 0) return -1;
char[] cc = new char[1] {'-' };
string[] zxy = dv1[0]["F_ZXY"].ToString().Split(cc);
DataView dv0;
string sql = "SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX "+
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND "+
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex AND F_DeviceIndex=" +
Stackdevindex + " and FCONTROLTASKTYPE=" + controlTaskType + " and F_NumParam1=" + zxy[0] +
" and F_NumParam2=" + zxy[1] + " and F_NumParam3=" + zxy[2] + "";
DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
dv0 = dbo.ExceSQL("select min(F_MonitorIndex) as mm from T_Monitor_Task where F_ManageTaskIndex=" + dv[i]["F_ManageTaskIndex"] + " and F_ManageTASKKINDINDEX=" + dv[i]["F_ManageTASKKINDINDEX"] + " ").Tables[0].DefaultView;
if (dv0.Count > 0)
{
if (dv0[0]["mm"].ToString() == dv[i]["F_MonitorIndex"].ToString())
{
if (FID != Convert.ToInt32(dv[i]["F_ManageTaskIndex"]))
{
return Convert.ToInt32(dv[i]["F_ManageTaskIndex"]);
}
}
}
}
return -1;
}
else
{
return -1;
}
}
/// <summary>
///
/// </summary>
/// <param name="Mankind"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="FID"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="ControlTaskType"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="UseAwayFork"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
void AlterRoutePath(int Mankind,int FID,int ControlTaskType,char UseAwayFork,int NowDevice)
{
DataView dv; DataView dv1; DataView dvnew;
//<2F><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ǰ<EFBFBD><C7B0>·<EFBFBD><C2B7><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>ƥ<EFBFBD><EFBFBD><E4A3AC>ƥ<EFBFBD><C6A5><EFBFBD>ĸĵ<C4B8>
try
{
dv = dbo.ExceSQL("SELECT T_Monitor_Task.F_MonitorIndex,T_Monitor_Task.F_DeviceIndex FROM T_Monitor_Task,T_Base_Route_Device where "+
" T_Monitor_Task.F_RouteID = T_Base_Route_Device.F_RouteIDSub AND T_Monitor_Task.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and T_Monitor_Task.F_ManageTaskIndex="+
FID+" and T_Monitor_Task.F_ManageTASKKINDINDEX="+Mankind+" and T_Base_Route_Device.F_UseAwayFork<>'"+UseAwayFork+"'").Tables[0].DefaultView;
if (dv.Count > 0)
{
dv = dbo.ExceSQL("select * from T_Manage_Task where F_ManageTaskKindIndex=" + Mankind + " and FID=" + FID).Tables[0].DefaultView;
if (dv.Count > 0)
{
//20100702
string sql = "SELECT T_Base_Route_Device.F_RouteIDSub FROM T_Base_Route,T_Base_Route_Device where T_Base_Route.F_RouteID = T_Base_Route_Device.F_RouteID " +
" and (T_Base_Route_Device.F_UseAwayFork = '" + UseAwayFork + "') AND (T_Base_Route_Device.F_DeviceIndex = " + NowDevice + ") AND (T_Base_Route.F_StartDevice = " +
dv[0]["FSTARTDEVICE"] + ") AND (T_Base_Route.F_EndDevice = " + dv[0]["FENDDEVICE"] + " and F_RouteKind="+ControlTaskType+")";
dv1 = dbo.ExceSQL(sql).Tables[0].DefaultView;
if (dv1.Count > 0)
{
int routeidNew=Convert.ToInt32( dv1[0][0]);
//ɾ<><C9BE>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>񣬲<EFBFBD><F1A3ACB2><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dbo.ExceSQL("DELETE FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " + FID + ") AND (F_ManageTASKKINDINDEX ="+Mankind+")");
if (CDisassembleTask.CreateMonitor(Mankind, FID, routeidNew, dv[0], 3) > 0)
{
dvnew = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " +
FID + ") AND (F_ManageTASKKINDINDEX = "+Mankind+") AND (F_DeviceIndex = " +
NowDevice + ") AND (F_RouteID = " + routeidNew +
") AND (F_Status = 3) ").Tables[0].DefaultView;
if (dvnew.Count > 0)
{
dbo.ExceSQL("delete from T_Monitor_Task where F_MonitorIndex<" + dvnew[0]["F_MonitorIndex"] + " and (F_ManageTaskIndex = " +
FID + ") AND (F_ManageTASKKINDINDEX = "+Mankind+") AND (F_Status = 3)");
dbo.ExceSQL("update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " +
FID + ") AND (F_ManageTASKKINDINDEX = "+Mankind+") AND (F_Status = 3)");
}
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv = null;
dv1 = null;
dvnew = null;
}
}
int GetDoubleForkMinRouteTask(int taskno)
{
DataView dv;
//<2F><><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>taskno<6E><6F><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>taskno
//˫<><EFBFBD><E6B2BB>ͬ<EFBFBD><CDAC><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵱ǰ<EBB5B1>Ѷ<EFBFBD><D1B6><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>taskno
int manKind=Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(taskno);
int manFid=Model.CGeneralFunction.GetManageTaskIndexfromMonitor(taskno);
int deviceindex = Model.CGeneralFunction.GetDeviceIndexFromMonitor(taskno);
int devKind=Model.CGeneralFunction.GetDeviceKindIdx(deviceindex);
int devOrder = Model.CGeneralFunction.GetDeviceOrderFromMonitor(taskno);
devinfo = Model.CGetInfo.GetDeviceInfo(deviceindex);
// string aa1212q = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
int nX=Model.CGeneralFunction.GetXCoorFromMonitor(taskno,deviceindex,devOrder);
int nY=Model.CGeneralFunction.GetYCoorFromMonitor(taskno,deviceindex,devOrder);
// string aa212q = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
double nXY = 0, doubleXY = 0;
int doubleX=Model.CGeneralFunction.GetDoubleForkX(manKind,manFid,deviceindex,devOrder);
//string aa212 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
int doubleY=Model.CGeneralFunction.GetDoubleForkY(manKind,manFid,deviceindex,devOrder);
// string aa122 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
if (devinfo.IfCorrelDoubleFork == "1")
{
string[] df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(taskno, deviceindex);
if(df==null)return taskno;
if (Model.CGeneralFunction.DoubleForkIfSync(taskno, deviceindex, devKind) == false)
{
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ǵ<EFBFBD>һ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
dv = dbo.ExceSQL("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = " + rman + ") AND (F_ManageTASKKINDINDEX = " + rmankind + ")").Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != df[0]))
{
return taskno;
}
}
#endregion
if (devKind == 1)//<2F>Ѷ<EFBFBD><D1B6><EFBFBD>
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD>
if(devOrder==5)//<2F>ͻ<EFBFBD>ָ<EFBFBD><D6B8>ʱ<EFBFBD>ж<EFBFBD>20110425
{
if (false == IfExcuteFirst(taskno))
{
return Convert.ToInt32(df[0]);
}
if (false == IfExcuteFirst(Convert.ToInt32(df[0])))
{
return taskno;
}
}
nXY = Math.Pow((double)(nX - devinfo.XCoor), 2) + (Math.Pow((double)(nY - devinfo.YCoor), 2));
doubleXY = Math.Pow((double)(doubleX - devinfo.XCoor), 2) + (Math.Pow((double)(doubleY - devinfo.YCoor), 2));
if (nXY < doubleXY)
{
return taskno;
}
else
{
return Convert.ToInt32(df[0]);
}
}
else if (devKind == 6)//AGV
{
nXY =Convert.ToInt32(dbo.GetSingle("SELECT F_Sequence FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = "+nX+")"));
doubleXY = Convert.ToInt32(dbo.GetSingle("SELECT F_Sequence FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = " + doubleX + ")"));
if (nXY < doubleXY)
{
return taskno;
}
else
{
return Convert.ToInt32(df[0]);
}
}
else
{
return taskno;
}
}
else
{
return taskno;
}
}
else
{
return taskno;
}
}
int CountAGVTask(int taskno)
{//<2F><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ÿ<><C3BF>AGVͨ<56><CDA8>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AGV<47><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//F_status>0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><32><CAB1><EFBFBD>ж<EFBFBD>F_status>0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>taskno˫<6F><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD>򷵻<EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//F_status>0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><32><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
int devindex = GetDeviceFromMonitor(taskno);
int devorder = ccf.GetDeviceOrderFromMonitor(taskno);
int devStation=Model.CGeneralFunction.GetXCoorFromMonitor(taskno, devindex, devorder);
string bt = " < 3000 ";
if (devStation < 3000)
{//<2F><>¥
bt = " < 3000 ";
}
else
{//<2F><>¥
bt = " > 3000 ";
}
int agvc = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_Status > 0) AND (F_NumParam1 "+bt+") AND (F_DeviceIndex = 1001)").Tables[0].DefaultView.Count;
if (agvc == 1)
{
if (Model.CGeneralFunction.GetDoubleForkMonitorInfo(taskno, devindex,0) ==true)
{
return 3;
}
else
{
return 0;
}
}
else if (agvc == 0)
{
return 0;
}
else
{
return 3;
}
}
bool IFAGVGate(int devIndex)
{
if (dbo.ExceSQL("SELECT F_AGVGateDeviceIndex FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = "+devIndex +")").Tables[0].DefaultView.Count > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 20121030
/// </summary>
/// <param name="TaskIndex"></param>
/// <returns></returns>
string IfLimitCellChangeFork(int TaskIndex)
{
// int[] zxy = ccf.GetCoordinatesFromMonitorTask(TaskIndex);
// int xCoor = zxy[4];
// string zxystr = (zxy[0].ToString().Length == 1 ? "0" + zxy[0].ToString() : zxy[0].ToString()) + "-" +
// ((zxy[1].ToString().Length == 1) ? ("0" + zxy[1].ToString()) : (zxy[1].ToString())) + "-" +
// ((zxy[2].ToString().Length == 1) ? ("0" + zxy[2].ToString()) : (zxy[2].ToString()));
// // string zxystr = (zxy[3].ToString().Length == 1 ? "0" + zxy[3].ToString() : zxy[3].ToString()) + "-" +
// //((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString())) + "-" +
// //((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString()));
// string UseAwayFork=Model.CGeneralFunction.GetUseAwayFork(TaskIndex);//1,Զ<><D4B6><EFBFBD>棻0<E6A3BB><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棻'-'<27><>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// //<2F>ж<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>޻<EFBFBD>λ<EFBFBD><CEBB>Ӧ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>
// DataView dv = dbo.ExceSQL("SELECT F_MoveCellCode FROM T_Base_Lane_Gate,T_Base_LaneInfo where T_Base_Lane_Gate.F_LaneIndex = T_Base_LaneInfo.F_LaneDeviceIndex and (T_Base_LaneInfo.F_ForwardLimitX = " + xCoor + ") and F_ZXY='" + zxystr + "'").Tables[0].DefaultView;
// // DataView dv = dbo.ExceSQL("SELECT F_MoveCellCode FROM T_Base_LaneInfo where F_ForwardLimitX = " + xCoor + "").Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// if (UseAwayFork == "1")
// {
// return dv[0]["F_MoveCellCode"].ToString();
// }
// }
// //<2F>жϺ<D0B6><CFBA><EFBFBD><EFBFBD>޻<EFBFBD>λ<EFBFBD><CEBB>Ӧ<EFBFBD><D3A6>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>
// dv = dbo.ExceSQL("SELECT F_MoveCellCode FROM T_Base_Lane_Gate,T_Base_LaneInfo where T_Base_Lane_Gate.F_LaneIndex = T_Base_LaneInfo.F_LaneDeviceIndex and (T_Base_LaneInfo.F_BackLimitX = " + xCoor + ") and F_ZXY='" + zxystr + "'").Tables[0].DefaultView;
// //dv = dbo.ExceSQL("SELECT F_MoveCellCode FROM T_Base_LaneInfo where F_BackLimitX = " + xCoor + "").Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// if (UseAwayFork == "0")
// {
// return dv[0]["F_MoveCellCode"].ToString();
// }
// }
return "-";
}
bool IfExcuteFirst(int TaskIndex)
{
int[] zxy = ccf.GetCoordinatesFromMonitorTask(TaskIndex);
string zxystr = (zxy[3].ToString().Length == 1 ? "0" + zxy[0].ToString() : zxy[3].ToString()) + "-" +
((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString())) + "-" +
((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString()));
DataView dv = dbo.ExceSQL("SELECT F_MoveCellCode FROM T_Base_LaneInfo WHERE (F_MoveCellCode = '" + zxystr + "')").Tables[0].DefaultView;
if (dv.Count > 0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
{
return false;
}
return true;
}
/// <summary>
/// <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>޻<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
/// </summary>
/// <param name="taskindex"><3E><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="ChangeForkCell"><3E>ɸ<EFBFBD><C9B8>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD></param>
void ChangeEndCellCode(int taskindex, string ChangeForkCell,int StackIndex)
{
char[] cc=new char[1]{'-'};
string[] endCell = ChangeForkCell.Split(cc);
int fid = ccf.GetManageTaskIndexfromMonitor(taskindex);
int Mankind = ccf.GetManageTaskKindIndexFromMonitor(taskindex);
//dbo.TransBegin();
try
{
DataView dv = dbo.ExceSQL("SELECT F_LaneGateDeviceIndex FROM T_Base_Lane_Gate,T_Base_Device WHERE (T_Base_Lane_Gate.F_LaneGateDeviceIndex = T_Base_Device.F_DeviceIndex) and (F_ZXY = '" + ChangeForkCell + "')").Tables[0].DefaultView;
if (dv.Count > 0)
{
dbo.ExecuteSql("update T_Monitor_Task set F_AheadDetect=F_AheadDetect+'" + ";N" + dv[0]["F_LaneGateDeviceIndex"].ToString() + "', F_NumParam4=" + endCell[0] + ",F_NumParam5=" + endCell[1]
+ ",F_NumParam6=" + endCell[2] + " where F_ManageTaskIndex=" + fid + " and F_ManageTASKKINDINDEX=" + Mankind + " and F_DeviceIndex=" + StackIndex);
dbo.ExecuteSql("update T_Manage_Task set FExceptionNO=" + Model.CGeneralFunction.TASKCHANGEFORK + " where FID=" + fid + " and F_ManageTaskKindIndex=" + Mankind);
}
//dbo.TransCommit();
}
catch(Exception ex)
{
throw ex;
//dbo.TransRollback();
}
}
int GetIOControlStatus(int TaskIndex)
{
int mankind = ccf.GetManageTaskKindIndexFromMonitor(TaskIndex);
int Fid = ccf.GetManageTaskIndexfromMonitor(TaskIndex);
if (mankind == 1)
{
object ob=dboM.GetSingle("SELECT CONTROL_STATUS FROM IO_CONTROL WHERE (CONTROL_ID = "+Fid+")");
if (ob != null)
{
return Convert.ToInt32(ob);
}
else
{
return Model.CGeneralFunction.TASKSINGLEFORKRUN;
}
}
else
{
return Model.CGeneralFunction.TASKSINGLEFORKRUN;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>AGV˫<56><CBAB><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>վ̨,<2C><>-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
/// </summary>
/// <param name="taskindex"><3E>豸ָ<E8B1B8><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
int GetAGVCorrelIndex(int taskindex)
{
object ob = dbo.GetSingle("SELECT F_NumParam2 FROM T_Monitor_Task WHERE (F_MonitorIndex = "+taskindex+")");
if (ob != null)
{
int cs = Convert.ToInt32(ob);
if (cs % 2 == 0)
{
return (cs-1);
}
else
{
return (cs + 1);
}
}
else
{
return -1;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>AGV<47>ڴ<EFBFBD>վ̨ȡ<CCA8><C8A1><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="controltype"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="stationIndex">AGVվ̨<D5BE><CCA8><EFBFBD><EFBFBD></param>
/// <returns></returns>
int GetAGVEnableDoubleForkManageTask(int controltype, int stationIndex)
{
string sql = "SELECT T_Monitor_Task.F_ManageTaskIndex "+
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND "+
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex and FCONTROLTASKTYPE=" +
controltype + " and F_NumParam2=" + stationIndex + " and F_DeviceIndex=1001 and F_DeviceCommandIndex=1";
DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0]["F_ManageTaskIndex"]);
}
else
return -1;
}
bool IfInSameLimitX(int fid, int mfid,int manKind)
{
//DataView dv = dbo.ExceSQL("SELECT F_ForwardLimitX,F_BackLimitX,FEndCol FROM T_Manage_Task,T_Base_LaneInfo WHERE T_Manage_Task.FLANEWAY = T_Base_LaneInfo.F_LaneDeviceIndex and (F_ManageTaskKindIndex = " + manKind + ") AND (FID = " + fid + ")").Tables[0].DefaultView;
//if (dv.Count == 0)
//{
// return false;
//}
//DataView dv1 = dbo.ExceSQL("SELECT F_ForwardLimitX,F_BackLimitX,FEndCol FROM T_Manage_Task,T_Base_LaneInfo WHERE T_Manage_Task.FLANEWAY = T_Base_LaneInfo.F_LaneDeviceIndex and (F_ManageTaskKindIndex = " + manKind + ") AND (FID = " + mfid + ")").Tables[0].DefaultView;
//if (dv1.Count == 0)
//{
// return false;
//}
//if ((dv[0]["FEndCol"].ToString() == dv[0]["F_ForwardLimitX"].ToString()) && (dv1[0]["F_ForwardLimitX"].ToString() == dv1[0]["FEndCol"].ToString()))
//{
// return true;
//}
//if ((dv[0]["FEndCol"].ToString() == dv[0]["F_BackLimitX"].ToString()) && (dv1[0]["F_BackLimitX"].ToString() == dv1[0]["FEndCol"].ToString()))
//{
// return true;
//}
return false;
}
}
}