You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3601 lines
201 KiB
3601 lines
201 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using ICommLayer;
|
|
using DBFactory;
|
|
using System.Data;
|
|
using Microsoft.VisualBasic;
|
|
namespace OPCClient
|
|
{
|
|
public class CSendDeviceOrder : ISendDeviceOrder
|
|
{
|
|
Model.MDevice devinfo;
|
|
string _commLayerError;
|
|
StringBuilder sql = new StringBuilder();
|
|
StringBuilder sss = new StringBuilder();
|
|
|
|
public string CommLayerError
|
|
{
|
|
get { return _commLayerError; }
|
|
set { _commLayerError = value; }
|
|
}
|
|
DBOperator dbo = CCommonOPCClient.dbo;
|
|
//Model.MDevice devinfo;
|
|
public CSendDeviceOrder()
|
|
{
|
|
dbo.Open();
|
|
}
|
|
/// <summary>
|
|
/// ½ûÓûõ²æ
|
|
/// </summary>
|
|
/// <param name="monitorIndex"></param>
|
|
/// <returns></returns>
|
|
public int getOrderFromMonitor(int monitorIndex,int deviceIndex)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select F_deviceCommandIndex from T_MONITOR_TASK where F_monitorIndex=").Append(monitorIndex).Append("and F_deviceIndex=").Append(deviceIndex);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if (dv[0]["F_deviceCommandIndex"] == DBNull.Value) return -1;
|
|
return Convert.ToInt32(dv[0]["F_deviceCommandIndex"]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{//20100108
|
|
throw ex;
|
|
}
|
|
finally
|
|
{//20100108
|
|
dv.Dispose();
|
|
|
|
}
|
|
}
|
|
//мӿØÖÆÈÎÎñºÅ
|
|
public int GetFCONTROLTASKTYPEFromManageTask(int taskKindIndex, int Managefid)
|
|
{
|
|
//20100108
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT FCONTROLTASKTYPE FROM T_Manage_Task WHERE (FID = ").Append(Managefid).Append(") AND (F_ManageTaskKindIndex = ").Append(taskKindIndex).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if (dv[0]["FCONTROLTASKTYPE"] == DBNull.Value) return -1;
|
|
return Convert.ToInt32(dv[0]["FCONTROLTASKTYPE"]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{//20100108
|
|
throw ex;
|
|
}
|
|
finally
|
|
{//20100108
|
|
dv.Dispose();
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// ·¢ËͶѶâ»úÃüÁî ¶Ñ¶â»ú µ¥²æ¶Ñ¶â»ú ¶à²æ¶Ñ¶â»ú ¶Ñ¶â»ú ¶Ñ¶â»úµÄ·¢ËÍÈÎÎñ
|
|
/// </summary>
|
|
/// <param name="MessageIndex">ÏûÏ¢±àºÅ</param>
|
|
/// <param name="TaskIndex">ÈÎÎñ±àºÅ</param>
|
|
/// <param name="Order">¶Ñ¶â»úÃüÁî×Ö</param>
|
|
///1-¸´Î»
|
|
///2-½«È¡
|
|
///3-½«ËÍ
|
|
///4-È¡»õ
|
|
///5-·Å»õ
|
|
///6-È¡·Å»õ
|
|
/// <param name="DeviceIndex">É豸±àºÅ</param>
|
|
/// <param name="StartX">Æðʼx×ø±ê£¬ÅÅ-ÑØ¹ìµÀ·½Ïò</param>
|
|
/// <param name="StartY">Æðʼy×ø±ê£¬²ã-¸ß¶È·½Ïò</param>
|
|
/// <param name="StartZ">Æðʼz×ø±ê£¬ÁÐ-ÃæÏò¶Ñ¶â»ú²Ù×÷Ãæ°å£¬1-×ó²à£¬2-ÓÒ²à</param>
|
|
/// <param name="EndX">Ä¿±êx×ø±ê£¬ÁÐ-ÑØ¹ìµÀ·½Ïò</param>
|
|
/// <param name="EndY">Ä¿±êy×ø±ê£¬²ã-¸ß¶È·½Ïò</param>
|
|
/// <param name="EndZ">Ä¿±êz×ø±ê£¬ÅÅ-ÃæÏò¶Ñ¶â»ú²Ù×÷Ãæ°å£¬1-×ó²à£¬2-ÓÒ²à</param>
|
|
/// <returns>·¢ËͶѶâ»úÃüÁîÊÇ·ñ³É¹¦</returns>
|
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ)
|
|
{//20120820
|
|
//return false;
|
|
string barcode = GetBarcodeFromMonitorIndex(TaskIndex);
|
|
int sn = 0; int UseAwayFork = 0;
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
|
|
//ɽ¶«Ð»ª±êʶÊDz»ÊÇͬ²½·¢ËÍ
|
|
int sdxhmutitasks = 0;
|
|
//µ÷ÊÔÔÝʱעÊÓ
|
|
if (devinfo.XCoor == 0) return false;//ceshi
|
|
try
|
|
{
|
|
int[] sendmes = new int[10] { MessageIndex, TaskIndex, Order, DeviceIndex, StartX, StartY, StartZ, EndX, EndY, EndZ };
|
|
devinfo.SendMessage = sendmes;
|
|
Model.CGetInfo.SetDeviceMessage(devinfo);
|
|
|
|
|
|
if (devinfo == null)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£ºÔÚÉ豸±íÖÐûÕÒµ½É豸ËùÒý£¡";
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
if (devinfo.DeviceKind != 1)
|
|
{//¶Ñ¶â»úʹÓô˷½·¨
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎ󣺶Ѷâ»úºÍRGVÒÔÍâµÄÉ豸ʹÓô˷½·¨²»ÕýÈ·!";
|
|
return false;
|
|
}
|
|
#region ¶Ñ¶â»ú
|
|
|
|
if (devinfo.DeviceKind == 1)
|
|
{
|
|
int[] startz = new int[devinfo.ForkAmount];
|
|
int[] endz = new int[devinfo.ForkAmount];
|
|
if (devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
#region ¶à²æ¶Ñ¶â»ú
|
|
//¶Ñ¶â»úµÄÔµãÊôÐÔ
|
|
char[] sp = new char[1] { ',' };
|
|
string[] yd = devinfo.StackZeroColLayer.Split(sp);
|
|
int zeroXcoor = 0;
|
|
if (yd.GetLength(0) > 0)
|
|
{
|
|
zeroXcoor = Convert.ToInt32(yd[0]);
|
|
}
|
|
else
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎ󣺶Ѷâ»úµÄÔµã×ø±êûÓÐÌîд!";
|
|
return false;
|
|
}
|
|
for (int i = 0; i < devinfo.ForkAmount; i++)
|
|
{
|
|
startz[i] = 0;
|
|
endz[i] = 0;
|
|
}
|
|
|
|
|
|
#region ¶Ñ¶â»úµÄË«²æÈ¡»õÖ¸ÁÔڴ˾ö¶¨·ÖÅä»õ²æ¡¢Í¬²½»¹ÊÇÒì²½·¢ËÍ
|
|
//¶Ñ¶â»úÈ¡»õʱºò·ÖÅä»õ²æ
|
|
if ((Order == 4) || (Order == 2))
|
|
{
|
|
|
|
EndX = 0; EndY = 0; EndZ = 0;
|
|
//»ñÈ¡µ÷¶ÈÈÎÎñÀàÐÍ
|
|
int mti = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(TaskIndex);
|
|
//ÈÎÎñºÅ
|
|
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
|
|
//¿ØÖÆÈÎÎñÀàÐÍ
|
|
int controlTaskType = GetFCONTROLTASKTYPEFromManageTask(mti, fid);
|
|
#region ·ÖÅä»õ²æ£¬Ð޸ķ¾¶µÄË«²æ×Ô¹ØÁªÕ¾Ì¨ÐÅÏ¢
|
|
|
|
//Èç¹û²»ÊÇ¶à²æ¹ØÁªÈÎÎñ£ºST_CELLµÄFDoubleFork=0£¬ÔòÆæÊýÁÐʹÓýü»õ²æ£¬Å¼ÊýÁÐʹÓÃÔ¶»õ²æ£»·ñÔò»õ²æ°´ÕÕST_CELLµÄFDoubleForkµÄÖµ
|
|
Dictionary<int, string[]> rr = Model.CGeneralFunction.GetDoubleForkMonitorInfo(TaskIndex, DeviceIndex);
|
|
if (rr == null)
|
|
{
|
|
#region ÎÞ¹ØÁªÈÎÎñ
|
|
|
|
//Èç¹ûF_UseAwayFork='0',·ÖÅä»õ²æ£¬·ñÔòÒѾ·ÖÅäºÃ»õ²æÎÞÐèÔÙ·ÖÅä
|
|
if (Model.CGeneralFunction.GetUseAwayFork(TaskIndex) == "0")
|
|
{
|
|
|
|
#region ×¢ÊÍqdsr
|
|
//if (devinfo != null)
|
|
//{
|
|
|
|
// //int stackno = 0;
|
|
// //if (devinfo.VirtualStack > 0)
|
|
// //{
|
|
// // stackno = devinfo.VirtualStack;
|
|
// //}
|
|
// //else
|
|
// //{
|
|
// // stackno = DeviceIndex;
|
|
// //}
|
|
|
|
// ////²»¹ØÁªÈÎÎñ·Ö²æ Çൺ˼ÈñË«²æ¶Ñ¶â»úµ¥²æÈÎÎñ·ÖÅä»õ²æ Çൺ˼ÈñдËÀ
|
|
// //if ( StartX == 3)
|
|
// //{
|
|
// // UseAwayFork = 1;
|
|
// //}
|
|
// //else if ( StartX == 26)
|
|
// //{
|
|
// // UseAwayFork = 2;
|
|
// //}
|
|
// //else
|
|
// //{
|
|
// // UseAwayFork = Model.CGeneralFunction.GetDoubleForkFromST_CELL(StartZ, StartX, StartY, Model.CGeneralFunction.GetWAREHOUSEFromSTCELL(stackno));
|
|
// //}
|
|
// int stackno = 0;
|
|
// if (devinfo.VirtualStack > 0)
|
|
// {
|
|
// stackno = devinfo.VirtualStack;
|
|
// }
|
|
// else
|
|
// {
|
|
// stackno = DeviceIndex;
|
|
// }
|
|
|
|
// UseAwayFork = Model.CGeneralFunction.GetDoubleForkFromST_CELL(StartZ, StartX, StartY, Model.CGeneralFunction.GetWAREHOUSEFromSTCELL(stackno));
|
|
// if (UseAwayFork == 0)
|
|
// {
|
|
|
|
// #region ÏïµÀ»õλÅжÏÊÇ·ñΪ¼«ÏÞÁУ¬ÒÔ¼«ÏÞÁÐΪ׼·ÖÅä»õ²æ
|
|
// sql.Clear();
|
|
// sql.Append("SELECT F_ForwardLimitX,F_BackLimitX FROM T_Base_LaneInfo WHERE F_StackIndex = ").Append(stackno).Append(" and F_ForwardLimitX>0 and F_BackLimitX>0");
|
|
// DataView dvl = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
// if ((devinfo.IfCorrelDoubleFork == "1") && (dvl.Count > 0))
|
|
// {
|
|
|
|
// if (zeroXcoor < Convert.ToInt32(dvl[0]["F_ForwardLimitX"]))
|
|
// {//Èç¹ûÔµãÁÐ×ø±êСÓÚForwardLimitX£¬¼ì²éForwardLimitXÖÁForwardLimitX+(n-2)£»
|
|
// if ((StartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) >= 0) && ((StartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (StartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) + 1);
|
|
// }
|
|
// else if ((EndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) >= 0) && ((EndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (EndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) + 1);
|
|
// }
|
|
// }
|
|
// else if (zeroXcoor > Convert.ToInt32(dvl[0]["F_ForwardLimitX"]))
|
|
// {//Èç¹ûÔµãÁÐ×ø±ê´óÓÚForwardLimitX£¬¼ì²éForwardLimitXÖÁForwardLimitX-(n-2).
|
|
// if ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - StartX >= 0) && ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - StartX <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - StartX + 1);
|
|
// }
|
|
// else if ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - EndX >= 0) && ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - EndX <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - EndX + 1);
|
|
// }
|
|
// }
|
|
|
|
// if (zeroXcoor < Convert.ToInt32(dvl[0]["F_BackLimitX"]))
|
|
// {//Èç¹ûÔµãÁÐ×ø±êСÓÚF_BackLimitX£¬¼ì²éF_BackLimitXÖÁF_BackLimitX-(n-2)£»
|
|
// if ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - StartX >= 0) && ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - StartX <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (devinfo.ForkAmount - (Convert.ToInt32(dvl[0]["F_BackLimitX"]) - StartX));
|
|
// }
|
|
// else if ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - EndX >= 0) && ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - EndX <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (devinfo.ForkAmount - (Convert.ToInt32(dvl[0]["F_BackLimitX"]) - EndX));
|
|
// }
|
|
|
|
// }
|
|
// else if (zeroXcoor > Convert.ToInt32(dvl[0]["F_BackLimitX"]))
|
|
// {//Èç¹ûÔµãÁÐ×ø±ê´óÓÚF_BackLimitX£¬¼ì²éF_BackLimitXÖÁF_BackLimitX+(n-2).
|
|
// if ((StartX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) >= 0) && ((StartX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (devinfo.ForkAmount - (StartX - Convert.ToInt32(dvl[0]["F_BackLimitX"])));
|
|
// }
|
|
// else if ((EndX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) >= 0) && ((EndX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
// {
|
|
// UseAwayFork = (devinfo.ForkAmount - (EndX - Convert.ToInt32(dvl[0]["F_BackLimitX"])));
|
|
// }
|
|
// }
|
|
|
|
|
|
// }
|
|
// #endregion
|
|
// }
|
|
// if (UseAwayFork == 0)
|
|
// {
|
|
// //¶Ô»õ²æÈ¡ÓàÊý
|
|
// if ((StartX % devinfo.ForkAmount) == 0)
|
|
// {
|
|
// UseAwayFork = devinfo.ForkAmount;
|
|
// }
|
|
// else
|
|
// {
|
|
// UseAwayFork = StartX % devinfo.ForkAmount;
|
|
// }
|
|
// }
|
|
//}
|
|
#endregion
|
|
//FDoubleFork ¿ÉÒÔÔÚSTCELL ±íÖÐÖ¸¶¨»õ²æ
|
|
UseAwayFork = Model.CGeneralFunction.GetDoubleForkFromST_CELL(StartZ, StartX, StartY, Model.CGeneralFunction.GetWAREHOUSEFromSTCELL(DeviceIndex));
|
|
if (UseAwayFork == 0)
|
|
{
|
|
#region CATL YB2
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
|
|
if (devinfo != null)
|
|
{
|
|
|
|
int stackno = 0;
|
|
if (devinfo.VirtualStack > 0)
|
|
{
|
|
stackno = devinfo.VirtualStack;
|
|
}
|
|
else
|
|
{
|
|
stackno = DeviceIndex;
|
|
}
|
|
#region ÏïµÀ»õλÅжÏÊÇ·ñΪ¼«ÏÞÁУ¬ÒÔ¼«ÏÞÁÐΪ׼·ÖÅä»õ²æ
|
|
sql.Clear();
|
|
sql.Append("SELECT F_ForwardLimitX,F_BackLimitX FROM T_Base_LaneInfo WHERE F_StackIndex = ").Append(stackno).Append(" and F_ForwardLimitX>0 and F_BackLimitX>0");
|
|
DataView dvl = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if ((devinfo.IfCorrelDoubleFork == "1") && (dvl.Count > 0))
|
|
{
|
|
|
|
if (zeroXcoor < Convert.ToInt32(dvl[0]["F_ForwardLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±êСÓÚForwardLimitX£¬¼ì²éForwardLimitXÖÁForwardLimitX+(n-2)£»
|
|
if ((StartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) >= 0) && ((StartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (StartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) + 1);
|
|
}
|
|
else if ((EndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) >= 0) && ((EndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (EndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) + 1);
|
|
}
|
|
}
|
|
else if (zeroXcoor > Convert.ToInt32(dvl[0]["F_ForwardLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±ê´óÓÚForwardLimitX£¬¼ì²éForwardLimitXÖÁForwardLimitX-(n-2).
|
|
if ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - StartX >= 0) && ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - StartX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - StartX + 1);
|
|
}
|
|
else if ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - EndX >= 0) && ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - EndX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - EndX + 1);
|
|
}
|
|
}
|
|
|
|
if (zeroXcoor < Convert.ToInt32(dvl[0]["F_BackLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±êСÓÚF_BackLimitX£¬¼ì²éF_BackLimitXÖÁF_BackLimitX-(n-2)£»
|
|
if ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - StartX >= 0) && ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - StartX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (Convert.ToInt32(dvl[0]["F_BackLimitX"]) - StartX));
|
|
}
|
|
else if ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - EndX >= 0) && ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - EndX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (Convert.ToInt32(dvl[0]["F_BackLimitX"]) - EndX));
|
|
}
|
|
|
|
}
|
|
else if (zeroXcoor > Convert.ToInt32(dvl[0]["F_BackLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±ê´óÓÚF_BackLimitX£¬¼ì²éF_BackLimitXÖÁF_BackLimitX+(n-2).
|
|
if ((StartX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) >= 0) && ((StartX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (StartX - Convert.ToInt32(dvl[0]["F_BackLimitX"])));
|
|
}
|
|
else if ((EndX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) >= 0) && ((EndX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (EndX - Convert.ToInt32(dvl[0]["F_BackLimitX"])));
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
if (UseAwayFork == 0)
|
|
{
|
|
if ((StartX % devinfo.ForkAmount) == 0)
|
|
{
|
|
UseAwayFork = devinfo.ForkAmount;
|
|
}
|
|
else
|
|
{
|
|
UseAwayFork = StartX % devinfo.ForkAmount;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
if (UseAwayFork > devinfo.ForkAmount)
|
|
{
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍ¶à²æ¶Ñ¶â»úÃüÁî", DeviceIndex.ToString(), barcode.ToCharArray() + "£¬·ÖÅä»õ²æÊ§°Ü£¬ÅÅ£º" + StartZ.ToString() + "ÁУº" + StartX.ToString() + "²ã£º" + StartY.ToString() + "£¬»õ²æ×ÜÊý" + devinfo.ForkAmount.ToString() + "£¬·ÖÅäµÄʵ¼Ê»õ²æ" + UseAwayFork.ToString());
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + barcode + "£¬·ÖÅä»õ²æÊ§°Ü£¬ÅÅ£º" + StartZ.ToString() + "ÁУº" + StartX.ToString() + "²ã£º" + StartY.ToString() + "£¬»õ²æ×ÜÊý" + devinfo.ForkAmount.ToString() + "£¬·ÖÅäµÄʵ¼Ê»õ²æ" + UseAwayFork.ToString();
|
|
return false;
|
|
}
|
|
|
|
//2220173-ʱ´ú¼ªÀû Ôö¼Ó¶Ñ¶â»ú·¢ËÍǰ¼ì²âÅж϶Ѷâ»ú»õ²æÊÇ·ñ±»½ûÓà ½ûÓÃʱ ¸ü¸Ä»õ²æ
|
|
if (ChangeForkWhenEnableUsed(DeviceIndex) != 0)//˵Ã÷ÓнûÓûõ²æ µ¥¶À×ßÂß¼
|
|
{
|
|
//if (UseAwayFork == ChangeForkWhenEnableUsed(DeviceIndex))//ÅäµÄ²æ == ½ûÓõĻõ²æ
|
|
//{
|
|
//¸Ä²æ ¸Ä¼ì²âÌõ¼þ
|
|
//Õâ¸öλÖõĻõ²æ ÊǸù¾ÝÁÐÖµ¸Õ¸ÕÉèÖÃµÄ »¹Ã»¸üиøÊý¾Ý¿â ÏȽøÈ¥¸üÐÂÒ»´Î µ«²»Ò»¶¨ÊÇ¿ÉÓõĻõ²æ µÚ¶þ´Î·¢ËÍʱ ½øÈëusefork£¡=0 È¥ÄÇÔÚ¸üÐÂΪ¿ÉÓõÄ
|
|
//Èç¹ûÔÚÕâÅÐ¶Ï ÊÇ·ñ==²»¿ÉÓûõ²æ ÐèÒªÔڴ˸üÐÂÊý¾Ý¿âÖлõ²æ ͬʱҲÐèÒª´¦ÀíÌáǰ¼ì²âÌõ¼þ
|
|
ChangForkForTask(fid, TaskIndex, UseAwayFork, DeviceIndex, mti);
|
|
return false;
|
|
//}
|
|
//else
|
|
//{
|
|
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
// add for CATL YB2 Ìæ»»Ìáǰ¼ì²âºÍվ̨ ͬʱ¿¼Âǵ÷Õû·¾¶Ëùѡվ̨ºÍÌáǰ¼ì²â
|
|
bool rp = SetLaneGateReplace(mti, fid, DeviceIndex, TaskIndex, UseAwayFork);
|
|
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_UseAwayFork = '").Append(UseAwayFork).Append("' WHERE (F_ManageTaskIndex = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(") AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Manage_Task SET FUseAwayFork = '").Append(UseAwayFork).Append("' WHERE (FID = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
if (rp == true) return false;//20120217
|
|
}
|
|
//// add for CATL YB2 Ìæ»»Ìáǰ¼ì²âºÍվ̨ ͬʱ¿¼Âǵ÷Õû·¾¶Ëùѡվ̨ºÍÌáǰ¼ì²â
|
|
//bool rp = SetLaneGateReplace(mti, fid, DeviceIndex, TaskIndex, UseAwayFork);
|
|
|
|
//sql.Clear();
|
|
//sql.Append("UPDATE T_Monitor_Task SET F_UseAwayFork = '").Append(UseAwayFork).Append("' WHERE (F_ManageTaskIndex = ")
|
|
// .Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
// .Append(mti).Append(") AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
//dbo.ExecuteSql(sql.ToString());
|
|
//sql.Clear();
|
|
//sql.Append("UPDATE T_Manage_Task SET FUseAwayFork = '").Append(UseAwayFork).Append("' WHERE (FID = ")
|
|
// .Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
// .Append(mti).Append(")");
|
|
//dbo.ExecuteSql(sql.ToString());
|
|
//if (rp == true) return false;//20120217
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(TaskIndex));
|
|
if (UseAwayFork > devinfo.ForkAmount)
|
|
{
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍ¶à²æ¶Ñ¶â»úÃüÁî", DeviceIndex.ToString(), barcode.ToCharArray() + "£¬»ñÈ¡ÈÎÎñʱ·ÖÅäµÄ»õ²æ´íÎó£¬ÅÅ£º" + StartZ.ToString() + "ÁУº" + StartX.ToString() + "²ã£º" + StartY.ToString() + "£¬»õ²æ×ÜÊý" + devinfo.ForkAmount.ToString() + "£¬·ÖÅäµÄʵ¼Ê»õ²æ" + UseAwayFork.ToString());
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + barcode + "£¬»ñÈ¡ÈÎÎñʱ·ÖÅäµÄ»õ²æ´íÎó£¬ÅÅ£º" + StartZ.ToString() + "ÁУº" + StartX.ToString() + "²ã£º" + StartY.ToString() + "£¬»õ²æ×ÜÊý" + devinfo.ForkAmount.ToString() + "£¬·ÖÅäµÄʵ¼Ê»õ²æ" + UseAwayFork.ToString();
|
|
return false;
|
|
}
|
|
//2220173-ʱ´ú¼ªÀû Ôö¼Ó¶Ñ¶â»ú·¢ËÍǰ¼ì²âÅж϶Ѷâ»ú»õ²æÊÇ·ñ±»½ûÓà ½ûÓÃʱ ¸ü¸Ä»õ²æ
|
|
if (ChangeForkWhenEnableUsed(DeviceIndex) != 0)//˵Ã÷ÓнûÓûõ²æ µ¥¶À×ßÂß¼
|
|
{
|
|
if (UseAwayFork == ChangeForkWhenEnableUsed(DeviceIndex))//ÅäµÄ²æ == ½ûÓõĻõ²æ
|
|
{
|
|
//¸Ä²æ ¸Ä¼ì²âÌõ¼þ
|
|
ChangForkForTask(fid, TaskIndex, UseAwayFork, DeviceIndex, mti);
|
|
return false;
|
|
}
|
|
//else
|
|
//{
|
|
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
// add for CATL YB2 Ìæ»»Ìáǰ¼ì²âºÍվ̨ ͬʱ¿¼Âǵ÷Õû·¾¶Ëùѡվ̨ºÍÌáǰ¼ì²â
|
|
bool rp = SetLaneGateReplace(mti, fid, DeviceIndex, TaskIndex, UseAwayFork);
|
|
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_UseAwayFork = '").Append(UseAwayFork).Append("' WHERE (F_ManageTaskIndex = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(") AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Manage_Task SET FUseAwayFork = '").Append(UseAwayFork).Append("' WHERE (FID = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
if (rp == true) return false;//20120217
|
|
}
|
|
|
|
////ͬʱ¿¼Âǵ÷Õû·¾¶Ëùѡվ̨ºÍÌáǰ¼ì²â add for CATL YB2 ¸ü»»ÁËËÍ»õÖÕµãվ̨
|
|
//bool rp = SetLaneGateReplace(mti, fid, DeviceIndex, TaskIndex, UseAwayFork);//20120217
|
|
//sql.Clear();
|
|
//sql.Append("UPDATE T_Monitor_Task SET F_UseAwayFork = '").Append(UseAwayFork).Append("' WHERE (F_ManageTaskIndex = ")
|
|
// .Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
// .Append(mti).Append(") AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
//dbo.ExecuteSql(sql.ToString());
|
|
//sql.Clear();
|
|
//sql.Append("UPDATE T_Manage_Task SET FUseAwayFork = '").Append(UseAwayFork).Append("' WHERE (FID = ")
|
|
// .Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
// .Append(mti).Append(")");
|
|
//dbo.ExecuteSql(sql.ToString());
|
|
//if (rp == true) return false;//20120217
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region ÓйØÁªÈÎÎñ
|
|
Dictionary<int, double> minzerodis = new Dictionary<int, double>();
|
|
Dictionary<int, string[]> rrnew = rr;
|
|
int mintask = 0; double minDist = 0; int[] tasks;
|
|
while (rrnew.Keys.Count > 0)
|
|
{
|
|
tasks = new int[rrnew.Keys.Count];
|
|
rrnew.Keys.CopyTo(tasks, 0);
|
|
//¼ÆËãÈÎÎñÀëÔµãµÄ¾àÀëÓÉСµ½´óÅÅÐò ¾àÀëÔµãÁÐСµÄΪ1²æ ´óµÄΪ2²æ stcell¿ÉÒ²ÔÚFDOUBLEFORK ÅäÖÃ
|
|
// T_BASE_STACKINFO ÅäÖÃÔµãÁÐ
|
|
Model.CGeneralFunction.GetMinZeroDistanceTask(tasks, devinfo, Order, out mintask, out minDist);
|
|
minzerodis.Add(mintask, minDist);
|
|
rrnew.Remove(mintask);
|
|
}
|
|
int forkno = 1; int tempStartX = 0, tempEndX = 0;
|
|
bool Ifreturn = false;
|
|
foreach (int task in minzerodis.Keys)
|
|
{
|
|
UseAwayFork = 0;
|
|
mti = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(task);
|
|
fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(task);
|
|
|
|
if (Model.CGeneralFunction.GetUseAwayFork(task) == "0")
|
|
{
|
|
//δ·ÖÅä»õ²æ£¬ÅжÏÊÇ·ñΪ¼«ÏÞ»õ룬n²æ¿¼ÂǼ«ÏÞ»õλµÄn-1ÁУ»
|
|
#region ÏïµÀ»õλÅжÏÊÇ·ñΪ¼«ÏÞÁУ¬ÒÔ¼«ÏÞÁÐΪ׼·ÖÅä»õ²æ
|
|
int stackno = 0;
|
|
if (devinfo.VirtualStack > 0)
|
|
{
|
|
stackno = devinfo.VirtualStack;
|
|
}
|
|
else
|
|
{
|
|
stackno = DeviceIndex;
|
|
}
|
|
//³ö¿âÈÎÎñ²»Åжϼ«ÏÞ»õλ add for CATL YB2 ²»´æÔÚ¼«ÏÞ»õλ
|
|
if (controlTaskType != 2)
|
|
{
|
|
sql.Clear();
|
|
//ÅжÏǰºó¼«ÏÞ»õλÊÇ·ñ´æÔÚ²¢ÇÒ¶¼ÊÇ´óÓÚ0µÄ
|
|
sql.Append("SELECT F_ForwardLimitX,F_BackLimitX FROM T_Base_LaneInfo WHERE F_StackIndex = ").Append(stackno).Append(" and F_ForwardLimitX>0 and F_BackLimitX>0");
|
|
DataView dvl = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
#region ¼«ÏÞ»õλ·ÖÅäÅжÏ
|
|
if ((devinfo.IfCorrelDoubleFork == "1") && (dvl.Count > 0))
|
|
{
|
|
tempStartX = Model.CGeneralFunction.GetXCoorFromMonitor(task, DeviceIndex, 4);
|
|
tempEndX = Model.CGeneralFunction.GetXCoorFromMonitor(task, DeviceIndex, 5);
|
|
|
|
if (zeroXcoor < Convert.ToInt32(dvl[0]["F_ForwardLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±êСÓÚForwardLimitX£¬¼ì²éForwardLimitXÖÁForwardLimitX+(n-2)£»
|
|
if ((tempStartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) >= 0) && ((tempStartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (tempStartX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) + 1);
|
|
}
|
|
else if ((tempEndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) >= 0) && ((tempEndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (tempEndX - Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) + 1);
|
|
}
|
|
}
|
|
else if (zeroXcoor > Convert.ToInt32(dvl[0]["F_ForwardLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±ê´óÓÚForwardLimitX£¬¼ì²éForwardLimitXÖÁForwardLimitX-(n-2).
|
|
if ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - tempStartX >= 0) && ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - tempStartX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - tempStartX + 1);
|
|
}
|
|
else if ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - tempEndX >= 0) && ((Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - tempEndX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (Convert.ToInt32(dvl[0]["F_ForwardLimitX"]) - tempEndX + 1);
|
|
}
|
|
}
|
|
|
|
if (zeroXcoor < Convert.ToInt32(dvl[0]["F_BackLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±êСÓÚF_BackLimitX£¬¼ì²éF_BackLimitXÖÁF_BackLimitX-(n-2)£»
|
|
if ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - tempStartX >= 0) && ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - tempStartX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (Convert.ToInt32(dvl[0]["F_BackLimitX"]) - tempStartX));
|
|
}
|
|
else if ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - tempEndX >= 0) && ((Convert.ToInt32(dvl[0]["F_BackLimitX"]) - tempEndX <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (Convert.ToInt32(dvl[0]["F_BackLimitX"]) - tempEndX));
|
|
}
|
|
|
|
}
|
|
else if (zeroXcoor > Convert.ToInt32(dvl[0]["F_BackLimitX"]))
|
|
{//Èç¹ûÔµãÁÐ×ø±ê´óÓÚF_BackLimitX£¬¼ì²éF_BackLimitXÖÁF_BackLimitX+(n-2).
|
|
if ((tempStartX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) >= 0) && ((tempStartX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (tempStartX - Convert.ToInt32(dvl[0]["F_BackLimitX"])));
|
|
}
|
|
else if ((tempEndX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) >= 0) && ((tempEndX - Convert.ToInt32(dvl[0]["F_BackLimitX"]) <= (devinfo.ForkAmount - 2))))
|
|
{
|
|
UseAwayFork = (devinfo.ForkAmount - (tempEndX - Convert.ToInt32(dvl[0]["F_BackLimitX"])));
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
//ºÍ¶Ñ¶â»úÔµã×ø±ê×ö²îÈ¡¾ø¶ÔÖµ£¬Öµ×îСµÄÊÇ1²æ£¬»õ²æÒѾ·ÖÅä¹ýµÄ²»ÒªÖظ´
|
|
//Èç¹û·ÖÅäµÄ
|
|
if (UseAwayFork == 0)
|
|
{
|
|
//ÔÀ´·ÖÅä»õ²æ
|
|
//UseAwayFork = forkno;
|
|
//Çൺ˼ÈñеķÖÅä»õ²æ ¹ØÁªÈÎÎñÀïÃæ ÈÎÎñºÅСµÄ·ÖÅäµ½2²æ ÈÎÎñºÅ´óµÄ·ÖÅäµ½1
|
|
//Èý¸ö²ÎÊý µÚÒ»¸ö²ÎÊýÊǵ÷¶ÈÈÎÎñºÅ ÕâÀïÖ±½Ó·ÖÅäÁË·¢Ë͵Ļõ²æ
|
|
//Èç¹ûÊdzö¿âÈÎÎñ
|
|
// UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(task, DeviceIndex, Order));
|
|
UseAwayFork = forkno;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(task));
|
|
}
|
|
#region Èç¹û»õ²æÒѾ±»¹ØÁªÈÎÎñÕ¼Ó㬼«ÏÞÁлá³öÏÖ£¬ÐèÒªÌÞ³ý¹ØÁª¹ØÏµ
|
|
if (IfDeleteRelative(mti, fid, task, UseAwayFork) == true)
|
|
{
|
|
return false;
|
|
}
|
|
#endregion
|
|
#region ³¬³öÊý¾Ý¿â±íÖлõ²æµÄÊýÁ¿±¨¾¯Ìáʾ
|
|
if (UseAwayFork > devinfo.ForkAmount)
|
|
{
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍ¶à²æ¶Ñ¶â»úÃüÁî", DeviceIndex.ToString(), barcode.ToCharArray() + "£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ´íÎó£¬ÅÅ£º" + StartZ.ToString() + "ÁУº" + StartX.ToString() + "²ã£º" + StartY.ToString() + "£¬»õ²æ×ÜÊý" + devinfo.ForkAmount.ToString() + "£¬·ÖÅäµÄʵ¼Ê»õ²æ" + UseAwayFork.ToString());
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + barcode + "£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ´íÎó£¬ÅÅ£º" + StartZ.ToString() + "ÁУº" + StartX.ToString() + "²ã£º" + StartY.ToString() + "£¬»õ²æ×ÜÊý" + devinfo.ForkAmount.ToString() + "£¬·ÖÅäµÄʵ¼Ê»õ²æ" + UseAwayFork.ToString();
|
|
|
|
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET F_RELATIVECONTORLID = - 1 WHERE (F_ManageTaskKindIndex = {0}) AND (FID = {1})", mti, fid));
|
|
return false;
|
|
}
|
|
#endregion
|
|
//Ô³ÌÐò ÒòÇൺ˼ÈñÐÞ¸Ä
|
|
forkno = UseAwayFork;
|
|
//Çൺ˼Èñ
|
|
//if (controlTaskType != 2)
|
|
//{
|
|
// forkno = UseAwayFork;
|
|
//}
|
|
|
|
//2220173-ʱ´ú¼ªÀû Ôö¼Ó¶Ñ¶â»ú·¢ËÍǰ¼ì²âÅж϶Ѷâ»ú»õ²æÊÇ·ñ±»½ûÓà ½ûÓÃʱ ¸ü¸Ä»õ²æ
|
|
//UseAwayFork = ChangeForkWhenEnableUsed(DeviceIndex, UseAwayFork);
|
|
|
|
//20111226ͬʱ¿¼Âǵ÷Õû·¾¶Ëùѡվ̨ºÍÌáǰ¼ì²â
|
|
//20200318ÕâÐÞ¸ÄÁËÒ»»ØÌáǰ¼ì²â
|
|
bool rp = SetLaneGateReplace(mti, fid, DeviceIndex, task, UseAwayFork);//20120217
|
|
if (rp == true) Ifreturn = true;
|
|
// ³ö¿âË«²æ¹ØÁªÈÎÎñ·Ö²æ
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_UseAwayFork = '").Append(UseAwayFork).Append("' WHERE (F_ManageTaskIndex = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(") AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Manage_Task SET FUseAwayFork = '").Append(UseAwayFork).Append("' WHERE (Fid = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(") ");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//Ô³ÌÐòµÄ´úÂë
|
|
forkno++;
|
|
}
|
|
if (Ifreturn == true) return false;
|
|
#endregion
|
|
}
|
|
#endregion
|
|
|
|
#region ͬ²½»¹ÊÇÒì²½·¢ËÍ
|
|
|
|
|
|
int[] mutitasks = Model.CGeneralFunction.MutiForkIfSync(TaskIndex, DeviceIndex, devinfo.DeviceKind);
|
|
if (mutitasks != null)
|
|
{
|
|
#region ×¢ÊÍ
|
|
//foreach (int temptask in mutitasks)
|
|
//{
|
|
// UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(temptask));
|
|
// if (temptask == TaskIndex)
|
|
// {
|
|
// //ɽ¶«Ð»ªÌØÊâ´¦Àí ¸æËßµçÆø»õ²æ ²¢ÇÒ 2²æ¶ÔÓ¦µÄÁв»¼õ1
|
|
// if (StartX > zeroXcoor)
|
|
// {
|
|
// StartX = StartX - (UseAwayFork - 1);
|
|
// }
|
|
// else
|
|
// {
|
|
// StartX = StartX + (UseAwayFork - 1);
|
|
// }
|
|
// }
|
|
// startz[UseAwayFork - 1] = Model.CGeneralFunction.GetZCoorFromMonitor(temptask, DeviceIndex, Order);
|
|
// if (startz[UseAwayFork - 1] != 0)
|
|
// {
|
|
// if (startz[UseAwayFork - 1] % 2 == 0)
|
|
// {
|
|
// startz[UseAwayFork - 1] = 2;
|
|
// }
|
|
// else
|
|
// {
|
|
// startz[UseAwayFork - 1] = 1;
|
|
// }
|
|
// }
|
|
//}
|
|
#endregion
|
|
foreach (int temptask in mutitasks)
|
|
{
|
|
UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(temptask));
|
|
if (temptask == TaskIndex)
|
|
{
|
|
if (StartX > zeroXcoor)
|
|
{
|
|
StartX = StartX - (UseAwayFork - 1);//ÓÃ1²æ¶¨Î»
|
|
}
|
|
else
|
|
{
|
|
StartX = StartX + (UseAwayFork - 1);
|
|
}
|
|
}
|
|
startz[UseAwayFork - 1] = Model.CGeneralFunction.GetZCoorFromMonitor(temptask, DeviceIndex, Order);
|
|
if (startz[UseAwayFork - 1] != 0)
|
|
{
|
|
// 2220173-ʱ´ú¼ªÀû
|
|
if (DeviceIndex == 10001)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 1:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 2:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10002)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 2:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 3:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10003)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 3:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 4:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10004)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 5:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 6:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10005)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 6:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 7:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10006)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 7:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 8:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
//if (startz[UseAwayFork - 1] % 2 == 0)
|
|
//{
|
|
// startz[UseAwayFork - 1] = 2;
|
|
//}
|
|
//else
|
|
//{
|
|
// startz[UseAwayFork - 1] = 1;
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(TaskIndex));
|
|
if (StartX > zeroXcoor)
|
|
{
|
|
StartX = StartX - (UseAwayFork - 1);
|
|
|
|
}
|
|
else
|
|
{
|
|
StartX = StartX + (UseAwayFork - 1);
|
|
}
|
|
|
|
startz[UseAwayFork - 1] = StartZ;
|
|
if (startz[UseAwayFork - 1] != 0)
|
|
{
|
|
// 2220173-ʱ´ú¼ªÀû
|
|
if (DeviceIndex == 10001)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 1:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 2:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10002)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 2:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 3:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10003)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 3:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 4:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10004)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 5:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 6:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10005)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 6:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 7:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10006)
|
|
{
|
|
switch (startz[UseAwayFork - 1])
|
|
{
|
|
case 7:
|
|
startz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 8:
|
|
startz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
//if (startz[UseAwayFork - 1] % 2 == 0)
|
|
//{
|
|
// startz[UseAwayFork - 1] = 2;
|
|
//}
|
|
//else
|
|
//{
|
|
// startz[UseAwayFork - 1] = 1;
|
|
//}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region ¶Ñ¶â»úµÄË«²æËÍ»õÖ¸ÁÔڴ˾ö¶¨Í¬²½»¹ÊÇÒì²½·¢ËÍ
|
|
|
|
if ((Order == 5) || (Order == 3))
|
|
{
|
|
UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(TaskIndex));
|
|
if (UseAwayFork == 0)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎ󣺶Ѷâ»ú»õ²æÎ´·ÖÅ䣡ÈÎÎñºÅ" + TaskIndex;
|
|
return false;
|
|
}
|
|
#region ͬ²½»¹ÊÇÒì²½·¢ËÍ
|
|
int[] mutitasks = Model.CGeneralFunction.MutiForkIfSync(TaskIndex, DeviceIndex, devinfo.DeviceKind);
|
|
if (mutitasks != null)
|
|
{
|
|
#region ×¢ÊÍ
|
|
//foreach (int temptask in mutitasks)
|
|
//{
|
|
// UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(temptask));
|
|
// if (temptask == TaskIndex)
|
|
// {
|
|
// if (EndX > zeroXcoor)
|
|
// {
|
|
// if (EndX == 27 && UseAwayFork == 2)
|
|
// {
|
|
// EndX = 27;
|
|
// }
|
|
// else
|
|
// {
|
|
// EndX = EndX - (UseAwayFork - 1);
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// EndX = EndX + (UseAwayFork - 1);
|
|
// }
|
|
// }
|
|
// endz[UseAwayFork - 1] = Model.CGeneralFunction.GetZCoorFromMonitor(temptask, DeviceIndex, Order);
|
|
// if (endz[UseAwayFork - 1] != 0)
|
|
// {
|
|
// if (endz[UseAwayFork - 1] % 2 == 0)
|
|
// {
|
|
// endz[UseAwayFork - 1] = 2;
|
|
// }
|
|
// else
|
|
// {
|
|
// endz[UseAwayFork - 1] = 1;
|
|
// }
|
|
// }
|
|
//}
|
|
#endregion
|
|
//add for CATL YB2
|
|
foreach (int temptask in mutitasks)
|
|
{
|
|
UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(temptask));
|
|
if (temptask == TaskIndex)
|
|
{
|
|
if (EndX > zeroXcoor)
|
|
{
|
|
EndX = EndX - (UseAwayFork - 1);
|
|
}
|
|
else
|
|
{
|
|
EndX = EndX + (UseAwayFork - 1);
|
|
}
|
|
}
|
|
endz[UseAwayFork - 1] = Model.CGeneralFunction.GetZCoorFromMonitor(temptask, DeviceIndex, Order);
|
|
if (endz[UseAwayFork - 1] != 0)
|
|
{
|
|
// 2220173-ʱ´ú¼ªÀû
|
|
if (DeviceIndex == 10001)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 1:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 2:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10002)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 2:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 3:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10003)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 3:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 4:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10004)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 5:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 6:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10005)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 6:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 7:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10006)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 7:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 8:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
//if (endz[UseAwayFork - 1] % 2 == 0)
|
|
//{
|
|
// endz[UseAwayFork - 1] = 2;
|
|
//}
|
|
//else
|
|
//{
|
|
// endz[UseAwayFork - 1] = 1;
|
|
//}
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
#region ×¢ÊÍ
|
|
//if (EndX > zeroXcoor)
|
|
//{
|
|
// if (UseAwayFork == 2 && EndX == 27)
|
|
// {
|
|
// EndX = 27;
|
|
// }
|
|
// else
|
|
// {
|
|
// EndX = EndX - (UseAwayFork - 1);
|
|
// }
|
|
//}
|
|
//else
|
|
//{
|
|
// EndX = EndX + (UseAwayFork - 1);
|
|
//}
|
|
|
|
//endz[UseAwayFork - 1] = EndZ;
|
|
//if (endz[UseAwayFork - 1] != 0)
|
|
//{
|
|
// if (endz[UseAwayFork - 1] % 2 == 0)
|
|
// {
|
|
// endz[UseAwayFork - 1] = 2;
|
|
// }
|
|
// else
|
|
// {
|
|
// endz[UseAwayFork - 1] = 1;
|
|
// }
|
|
//}
|
|
#endregion
|
|
if (EndX > zeroXcoor)
|
|
{
|
|
EndX = EndX - (UseAwayFork - 1);
|
|
}
|
|
else
|
|
{
|
|
EndX = EndX + (UseAwayFork - 1);
|
|
}
|
|
|
|
endz[UseAwayFork - 1] = EndZ;
|
|
if (endz[UseAwayFork - 1] != 0)
|
|
{
|
|
// 2220173-ʱ´ú¼ªÀû
|
|
if (DeviceIndex == 10001)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 1:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 2:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10002)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 2:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 3:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10003)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 3:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 4:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10004)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 5:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 6:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10005)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 6:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 7:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10006)
|
|
{
|
|
switch (endz[UseAwayFork - 1])
|
|
{
|
|
case 7:
|
|
endz[UseAwayFork - 1] = 1;
|
|
break;
|
|
case 8:
|
|
endz[UseAwayFork - 1] = 2;
|
|
break;
|
|
}
|
|
}
|
|
//if (endz[UseAwayFork - 1] % 2 == 0)
|
|
//{
|
|
// endz[UseAwayFork - 1] = 2;
|
|
//}
|
|
//else
|
|
//{
|
|
// endz[UseAwayFork - 1] = 1;
|
|
//}
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
//9,11,13
|
|
int arrAmout = 9 + (devinfo.ForkAmount - 1) * 2;
|
|
int arrsn = 0; StringBuilder strap = new StringBuilder();
|
|
StringBuilder[] itemnames = new StringBuilder[arrAmout];
|
|
StringBuilder[] itemvalues = new StringBuilder[arrAmout];
|
|
for (int i = 0; i < arrAmout; i++)
|
|
{
|
|
itemnames[i] = new StringBuilder();
|
|
itemvalues[i] = new StringBuilder();
|
|
}
|
|
#region ×¢ÊÍ
|
|
//ÅжÏÊÇͬ²½»¹ÊDz»ÊÇͬ²½£¬ÊÇͬ²½Ôö¼Óͬ²½±êʶ3
|
|
//²»ÊÇͬ²½Åжϵ±Ç°·¢ËÍÈÎÎñµÄ»õ²æ Èç¹ûÊÇ2²æÔòÐèÒª½«È¡»õºÍËÍ»õµÄÁмÓ1 ÔòÔÚ»õ²æµÄ×Ö¶Îд2
|
|
//Èç¹ûÊÇ1²æ ÔòÔÚ»õ²æµÄ×Ö¶Îд 1
|
|
//if (sdxhmutitasks == 1)
|
|
//{
|
|
// //ɽ¶«ÐÁ»¯ »õ²æ±êʶλ
|
|
// sdxhmutitasks = 3;
|
|
//}
|
|
//else
|
|
//{
|
|
// //Èç¹ûÊÇ1²æ »õ²æ±êʶ¾Í·¢1
|
|
// if (UseAwayFork == 1)
|
|
// {
|
|
// sdxhmutitasks = 1;
|
|
// }
|
|
// else if (UseAwayFork == 2)
|
|
// {
|
|
// //»õ²æÊÇ2²æµÄ»° È¡ËÍ»õÁж¼Òª¼Ó1
|
|
// StartX += 1;
|
|
// EndX += 1;
|
|
// sdxhmutitasks = 2;
|
|
// }
|
|
//}
|
|
#endregion
|
|
#endregion
|
|
//¶à²æ¶Ñ¶â»ú ¸øËü·¢È¥15ÁÐÈ¡»õ ËûÊǽü²æÍ£ÔÚ15ÁÐ
|
|
sn = devinfo.Dbw1Address;
|
|
//Ë«²æ¶Ñ¶â»ú µÚÒ»×Ö½Ú¶Áд±ê־λ µÚÒ»±éÏÈÇåÍ·ºÍÃüÁî×Ö
|
|
//itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
//itemvalues[0].Append("0");
|
|
////µÚ¶þ×Ö½Ú ÃüÁî×Ö µÚÒ»±éÏÈÇåÍ·ºÍÃüÁî×Ö
|
|
//itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
//itemvalues[1].Append("0");
|
|
//µÚ3¡¢4×Ö½ÚÊÇÈÎÎñºÅ ʹÓÃint ÀàÐÍ Á½¸ö×Ö½Ú ²»ÄÜ´óÓÚ30000
|
|
itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
|
|
itemvalues[2].Append(TaskIndex.ToString());
|
|
//µÚ5×Ö½Ú È¡»õÁÐX×ø±êÑØ¹ìµÀ·½Ïò
|
|
itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",b");
|
|
itemvalues[3].Append(StartX.ToString());
|
|
//µÚ6×Ö½Ú È¡»õ²ã Y ×ø±ê
|
|
itemnames[4].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 5)).Append(",b");
|
|
itemvalues[4].Append(StartY.ToString());
|
|
//µÚ7¡¢8×Ö½Ú È¡»õÅÅ z[i] ×ø±ê Ë«²æ½ü²æºÍÔ¶²æÅÅ×ø±ê
|
|
for (int i = 1; i <= devinfo.ForkAmount; i++)
|
|
{
|
|
itemnames[4 + i].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 5 + i)).Append(",b");
|
|
itemvalues[4 + i].Append(startz[i - 1].ToString());
|
|
strap.Append(i.ToString()).Append("²æÈ¡ÅÅZ:").Append(startz[i - 1].ToString()).Append(";");
|
|
}
|
|
arrsn = 4 + devinfo.ForkAmount;
|
|
//µÚ9×Ö½Ú ËÍ»õÁÐX×ø±ê
|
|
itemnames[arrsn + 1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + arrsn + 2)).Append(",b");
|
|
itemvalues[arrsn + 1].Append(EndX.ToString());
|
|
//µÚ10×Ö½Ú ËÍ»õ²ãY×ø±ê
|
|
itemnames[arrsn + 2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + arrsn + 3)).Append(",b");
|
|
itemvalues[arrsn + 2].Append(EndY.ToString());
|
|
//µÚ11¡¢12×Ö½ÚËÍ»õλÅÅZ[1] ºÍ Z[2]
|
|
for (int i = 1; i <= devinfo.ForkAmount; i++)
|
|
{
|
|
itemnames[arrsn + 2 + i].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + arrsn + 3 + i)).Append(",b");
|
|
itemvalues[arrsn + 2 + i].Append(endz[i - 1].ToString());
|
|
strap.Append(i.ToString()).Append("²æËÍÅÅZ:").Append(endz[i - 1].ToString()).Append(";");
|
|
}
|
|
//µÚ13×Ö½ÚÊÇ»õ²æ±êʶ 1ÊÇ1²æ 2ÊÇ2²æ 3ÊÇͬ²½·¢ËÍ É½¶«ÐÁ»¯
|
|
//itemnames[12].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 12 )).Append(",b");
|
|
//itemvalues[12].Append(sdxhmutitasks.ToString());
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[0].Append(MessageIndex.ToString());
|
|
itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
itemvalues[1].Append(Order.ToString());
|
|
|
|
//itemnames[arrsn + 3 + devinfo.ForkAmount].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
//itemvalues[arrsn + 3 + devinfo.ForkAmount].Append(Order.ToString());
|
|
//itemnames[arrsn + 3 + devinfo.ForkAmount + 1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
//itemvalues[arrsn + 3 + devinfo.ForkAmount + 1].Append(MessageIndex.ToString());
|
|
|
|
//OPC ServerµÄ»úÆ÷Ãû³Æ»òÕßIPµØÖ·
|
|
CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
|
|
//OPC ServerµÄ³ÌÐò±êʶ£¬ÀýÈ磺OPC.SimaticNET
|
|
CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
|
|
// ½¨Á¢PLCÁ¬½ÓµÄID£¬ÀýÈ磺"S7:[S7 connection_1]"
|
|
CCommonOPCClient.PlcConnectionID = devinfo.S7Connection;
|
|
// add for CATL YB2 Òì²½·¢ËÍ AWriteAllItemValue SyncWriteAllItemValue(itemnames, itemvalues)
|
|
// //È¥µôÔÓеÄ"ÏÈдÈëºóÐø×Ö½Ú, ºóдÈëÏûϢͷ"µÄдOPCÊý¾ÝÂß¼, ÐÞ¸ÄΪ"ÿ´ÎͨÐÅֻдÈëÒ»´ÎOPCÊý¾Ý"
|
|
if (CCommonOPCClient.AWriteAllItemValue(itemnames, itemvalues) == false)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + CCommonOPCClient.OpcError;
|
|
return false;
|
|
}
|
|
//itemvalues[0].Remove(0, itemvalues[0].Length);
|
|
//itemvalues[0].Append(MessageIndex.ToString());
|
|
//itemvalues[1].Remove(0, itemvalues[1].Length);
|
|
//itemvalues[1].Append(Order.ToString());
|
|
//// add for CATL YB2 Òì²½·¢ËÍ AWriteAllItemValue SyncWriteAllItemValue(itemnames, itemvalues)
|
|
//if (CCommonOPCClient.AWriteAllItemValue(itemnames, itemvalues) == false)
|
|
//{
|
|
// _commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + CCommonOPCClient.OpcError;
|
|
// return false;
|
|
//}
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + TaskIndex.ToString())
|
|
.Append("**ÆðʼÅÅ" + StartZ.ToString()).Append("**ÆðʼÁÐ" + StartX.ToString()).Append("**Æðʼ²ã" + StartY.ToString())
|
|
.Append("**ÖÕÖ¹ÅÅ" + EndZ.ToString()).Append("**ÖÕÖ¹ÁÐ" + EndX.ToString()).Append("**ÖÕÖ¹²ã" + EndY.ToString())
|
|
.Append(";").Append(strap).Append("**»õ²æ" + sdxhmutitasks.ToString());
|
|
|
|
// add for CATL YB2 ¿ØÖƺÚÏ»×ÓдÈëÁ¿
|
|
if (MessageIndex == 0 || MessageIndex == 1 || MessageIndex == 2 || MessageIndex == 4)
|
|
{
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËͶѶâ»úÃüÁî", DeviceIndex.ToString(), sss.ToString());
|
|
}
|
|
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍ¶à²æ¶Ñ¶â»úÃüÁî", DeviceIndex.ToString(), sss.ToString());
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region µ¥²æ¶Ñ¶â»ú DB1дֵ
|
|
//֪ͨ¶Ñ¶â»úÍÐÅÌÀàÐÍ
|
|
StringBuilder[] itemnames = { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") };
|
|
StringBuilder[] itemvalues = { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") };
|
|
#region ת»»£¨Z£©ÅÅ×ø±ê
|
|
int a = 2;
|
|
int Z = 0;
|
|
//StackReach ±íʾ¼¸½øÉì
|
|
//if (devinfo.StackReach == 2)
|
|
//{
|
|
// a = 4;
|
|
//}
|
|
//if (DeviceIndex == 11001)
|
|
//{
|
|
// #region Ë«Éì¶Ñ¶â»ú 134ÅÅ
|
|
// if (StartZ != 0)
|
|
// {
|
|
// Z = StartZ % a;
|
|
// if (Z == 0)
|
|
// {
|
|
// StartZ = a;
|
|
// }
|
|
// else
|
|
// {
|
|
// StartZ = Z;
|
|
// }
|
|
|
|
// }
|
|
// if (EndZ != 0)
|
|
// {
|
|
// Z = EndZ % a;
|
|
// if (Z == 0)
|
|
// {
|
|
// EndZ = a;
|
|
// }
|
|
// else
|
|
// {
|
|
// EndZ = Z;
|
|
// }
|
|
// }
|
|
// #endregion
|
|
//}
|
|
//else if (DeviceIndex == 11002 || DeviceIndex == 11003)
|
|
//{
|
|
// a = 3;
|
|
// if (StartZ != 0)
|
|
// {
|
|
// Z = StartZ % a;
|
|
// if (Z == 2)
|
|
// {
|
|
// StartZ = 1;
|
|
// }
|
|
// else if (Z == 0)
|
|
// {
|
|
// StartZ = 3;
|
|
// }
|
|
// else
|
|
// {
|
|
// StartZ = 4;
|
|
// }
|
|
|
|
// }
|
|
// if (EndZ != 0)
|
|
// {
|
|
// Z = EndZ % a;
|
|
// if (Z == 2)
|
|
// {
|
|
// EndZ = 1;
|
|
// }
|
|
// else if (Z == 0)
|
|
// {
|
|
// EndZ = 3;
|
|
// }
|
|
// else
|
|
// {
|
|
// EndZ = 4;
|
|
// }
|
|
|
|
// }
|
|
//}
|
|
|
|
|
|
#region µ¥Ë«²æ¶Ñ¶â»úµÄ Z ת»»
|
|
|
|
// 2220173-ʱ´ú¼ªÀû
|
|
//10001--1/2 10002--2/3 10003--3/4
|
|
//10004--5/6 10005--6/7 10006--7/8
|
|
//StartZ
|
|
if (DeviceIndex == 10001)
|
|
{
|
|
if (StartZ != 0)
|
|
{
|
|
switch (StartZ)
|
|
{
|
|
case 1:
|
|
StartZ = 1;
|
|
break;
|
|
case 2:
|
|
StartZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10002)
|
|
{
|
|
if (StartZ != 0)
|
|
{
|
|
switch (StartZ)
|
|
{
|
|
case 2:
|
|
StartZ = 1;
|
|
break;
|
|
case 3:
|
|
StartZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10003)
|
|
{
|
|
if (StartZ != 0)
|
|
{
|
|
switch (StartZ)
|
|
{
|
|
case 3:
|
|
StartZ = 1;
|
|
break;
|
|
case 4:
|
|
StartZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10004)
|
|
{
|
|
if (StartZ != 0)
|
|
{
|
|
switch (StartZ)
|
|
{
|
|
case 5:
|
|
StartZ = 1;
|
|
break;
|
|
case 6:
|
|
StartZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10005)
|
|
{
|
|
if (StartZ != 0)
|
|
{
|
|
switch (StartZ)
|
|
{
|
|
case 6:
|
|
StartZ = 1;
|
|
break;
|
|
case 7:
|
|
StartZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10006)
|
|
{
|
|
if (StartZ != 0)
|
|
{
|
|
switch (StartZ)
|
|
{
|
|
case 7:
|
|
StartZ = 1;
|
|
break;
|
|
case 8:
|
|
StartZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
//EndZ
|
|
if (DeviceIndex == 10001)
|
|
{
|
|
if (EndZ != 0)
|
|
{
|
|
switch (EndZ)
|
|
{
|
|
case 1:
|
|
EndZ = 1;
|
|
break;
|
|
case 2:
|
|
EndZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10002)
|
|
{
|
|
if (EndZ != 0)
|
|
{
|
|
switch (EndZ)
|
|
{
|
|
case 2:
|
|
EndZ = 1;
|
|
break;
|
|
case 3:
|
|
EndZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10003)
|
|
{
|
|
if (EndZ != 0)
|
|
{
|
|
switch (EndZ)
|
|
{
|
|
case 3:
|
|
EndZ = 1;
|
|
break;
|
|
case 4:
|
|
EndZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10004)
|
|
{
|
|
if (EndZ != 0)
|
|
{
|
|
switch (EndZ)
|
|
{
|
|
case 5:
|
|
EndZ = 1;
|
|
break;
|
|
case 6:
|
|
EndZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10005)
|
|
{
|
|
if (EndZ != 0)
|
|
{
|
|
switch (EndZ)
|
|
{
|
|
case 6:
|
|
EndZ = 1;
|
|
break;
|
|
case 7:
|
|
EndZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if (DeviceIndex == 10006)
|
|
{
|
|
if (EndZ != 0)
|
|
{
|
|
switch (EndZ)
|
|
{
|
|
case 7:
|
|
EndZ = 1;
|
|
break;
|
|
case 8:
|
|
EndZ = 2;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
//if (StartZ != 0)
|
|
//{
|
|
// //µ¥²æ¶Ñ¶â»ú¶Ô2È¡Óà ÓàÊýΪ0 ¾ÍÈÃZ µÈÓÚ2 £¬ ÓàÊý²»Îª0 ¾ÍÈÃZ µÈÓÚ1
|
|
// //¶Ñ¶â»ú×ó1 ÓÒ 2
|
|
// Z = StartZ % a;
|
|
// if (Z == 0)
|
|
// {
|
|
// StartZ = 2;
|
|
// }
|
|
// else
|
|
// {
|
|
// StartZ = 1;
|
|
// }
|
|
//}
|
|
//if (EndZ != 0)
|
|
//{
|
|
// Z = EndZ % a;
|
|
// if (Z == 0)
|
|
// {
|
|
// EndZ = 2;
|
|
// }
|
|
// else
|
|
// {
|
|
// EndZ = 1;
|
|
// }
|
|
//}
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
|
|
//int Pallettype = GetGoodsTypeFromManageTask(TaskIndex);
|
|
|
|
//sn »ñÈ¡ Dbw1Address µÄÆðʼµØÖ·
|
|
sn = Convert.ToInt32(devinfo.Dbw1Address);
|
|
//µÚÈýËÄ×Ö½ÚÊÇÈÎÎñºÅ B ÊÇ×Ö½Ú DÊÇË«×Ö i ÊÇint RÊÇʵÊý ·¢¸ø3ºÍ4×Ö½Ú
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
|
|
itemvalues[0].Append(TaskIndex.ToString());//ÈÎÎñºÅ
|
|
//µÚ5×Ö½Ú È¡»õλX×ø±ê
|
|
itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",b");
|
|
itemvalues[1].Append((StartX).ToString());
|
|
//µÚ6×Ö½Ú È¡»õλ Y ×ø±ê
|
|
itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 5)).Append(",b");
|
|
itemvalues[2].Append(StartY.ToString());
|
|
//µÚ7×Ö½Ú È¡»õλZ ×ø±ê
|
|
itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 6)).Append(",b");
|
|
itemvalues[3].Append(StartZ.ToString());
|
|
//µÚ8×Ö½Ú ËÍ»õλ X ×ø±ê
|
|
itemnames[4].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 7)).Append(",b");
|
|
itemvalues[4].Append((EndX).ToString());
|
|
//µÚ9×Ö½Ú ËÍ»õλ Y ×ø±ê
|
|
itemnames[5].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 8)).Append(",b");
|
|
itemvalues[5].Append(EndY.ToString());
|
|
//µÚ10¸ö×Ö½Ú ËÍ»õλÅÅ Z ×ø±ê
|
|
itemnames[6].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 9)).Append(",b");
|
|
itemvalues[6].Append(EndZ.ToString());
|
|
//µÚÒ»×Ö½Ú ¶Áд±ê־λ 0ÊÇÉÏλ»ú¶Ô ¶Ñ¶â»ú±¨¸æÔËÐÐÓ¦´ð 1-Ï´ïÈÎÎñ±êʶ 2-ÉÏλ»ú¶ÔÏÂλ»úÉϱ¨Íê³É״̬µÄÓ¦´ð 4- ¸´Î»
|
|
itemnames[7].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[7].Append("0");
|
|
//µÚ¶þ¸ö×Ö½Ú Ö¸Áî 1 ÕÙ»Ø 2 3 4 5 6
|
|
itemnames[8].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
itemvalues[8].Append("0");//ÃüÁî×Ö
|
|
|
|
//ÍÐÅÌÀàÐÍ
|
|
//itemnames[9].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 10)).Append(",b");
|
|
//itemvalues[9].Append(Pallettype.ToString());
|
|
|
|
|
|
CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
|
|
// OPC ServerµÄ³ÌÐò±êʶ£¬ÀýÈ磺OPC.SimaticNET
|
|
CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
|
|
// ½¨Á¢PLCÁ¬½ÓµÄID£¬ÀýÈ磺"S7:[S7 connection_1]"
|
|
CCommonOPCClient.PlcConnectionID = devinfo.S7Connection;
|
|
if (CCommonOPCClient.SyncWriteAllItemValue(itemnames, itemvalues) == false)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + CCommonOPCClient.OpcError;
|
|
return false;
|
|
}
|
|
//ÿ´ÎÏòDB1дÊýµÄʱºòÏÈÇåÍ·ºÍÃüÁî ÇåÍêÖ®ºóÔÚд
|
|
itemvalues[7].Remove(0, itemvalues[7].Length);
|
|
itemvalues[7].Append(MessageIndex.ToString());
|
|
itemvalues[8].Remove(0, itemvalues[8].Length);
|
|
itemvalues[8].Append(Order.ToString());
|
|
//ͬ²½Ð´ÈëËùÓеÄÏîĿֵ
|
|
if (CCommonOPCClient.SyncWriteAllItemValue(itemnames, itemvalues) == false)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + CCommonOPCClient.OpcError;
|
|
return false;
|
|
}
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + TaskIndex.ToString())
|
|
.Append("**ÆðʼÅÅ" + StartZ.ToString()).Append("**ÆðʼÁÐ" + StartX.ToString()).Append("**Æðʼ²ã" + StartY.ToString())
|
|
.Append("**ÖÕÖ¹ÅÅ" + EndZ.ToString()).Append("**ÖÕÖ¹ÁÐ" + EndX.ToString()).Append("**ÖÕÖ¹²ã" + EndY.ToString());
|
|
//.Append("**ÖÕÖ¹ÅÅ" + EndZ.ToString()).Append("**ÖÕÖ¹ÁÐ" + EndX.ToString()).Append("**ÖÕÖ¹²ã" + EndY.ToString()).Append("**ÍÐÅÌÀàÐÍ" + Pallettype.ToString());
|
|
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËͶѶâ»úÃüÁî:", DeviceIndex.ToString(), sss.ToString());
|
|
//if (WriteBarcode(DeviceIndex, TaskIndex) == false)
|
|
//{
|
|
// return false;
|
|
//}
|
|
|
|
#endregion
|
|
}
|
|
if (WriteBarcode(DeviceIndex, TaskIndex) == false)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
devinfo = null;
|
|
}
|
|
}
|
|
bool IfDeleteRelative(int mti, int fid, int moniTask,int useawayfork)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
int relfid= Model.CGeneralFunction.GetRelativeControlID(mti, fid);
|
|
sql.Clear();
|
|
sql.Append("SELECT DISTINCT T_Manage_Task.FID FROM T_Manage_Task,T_Monitor_Task where ")
|
|
.Append(" T_Manage_Task.F_ManageTaskKindIndex = T_Monitor_Task.F_ManageTASKKINDINDEX ")
|
|
.Append(" AND T_Manage_Task.FID = T_Monitor_Task.F_ManageTaskIndex and ")
|
|
.Append(" (T_Manage_Task.F_RELATIVECONTORLID = ").Append(relfid).Append(") AND (T_Monitor_Task.F_UseAwayFork = '").Append(useawayfork).Append("') ")
|
|
.Append(" AND (T_Monitor_Task.F_ManageTASKKINDINDEX = ").Append(mti).Append(") AND (T_Monitor_Task.F_ManageTaskIndex <> ").Append(fid).Append(")");
|
|
|
|
dv=dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
dbo.ExecuteSql(string .Format("UPDATE T_Manage_Task SET F_RELATIVECONTORLID = - 1 WHERE (F_ManageTaskKindIndex = {0}) AND (FID = {1})",mti,fid));
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
|
|
}
|
|
private void GetLaneGateDeviceZXY(int StackIndex, int laneGate, out string DeviceZXY)
|
|
{
|
|
|
|
DeviceZXY = string.Empty;
|
|
sql.Clear();
|
|
sql.Append(string.Format("SELECT T_Base_Lane_Gate.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={0} and T_Base_Lane_Gate.F_LaneGateDeviceIndex={1}", StackIndex, laneGate));
|
|
DataView dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
DeviceZXY = dv[0][0].ToString();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ·¢ËÍ´©Ë󳵡¢ÊäËÍ»úÉ豸ÃüÁî ÊäËÍ»ú ´©Ëó³µ ÊäËÍ»ú ´©Ëó³µ ÊäËÍ»ú ´©Ëó³µ ÊäËÍ»ú ´©Ëó³µ µÄ·¢ËÍÈÎÎñDB1
|
|
/// </summary>
|
|
/// <param name="MessageIndex">ÏûÏ¢±àºÅ</param>
|
|
/// <param name="TaskIndex">ÈÎÎñ±àºÅ</param>
|
|
/// <param name="Order">ÃüÁî×Ö</param>
|
|
/// ´©Ëó³µÃüÁî×Ö£º
|
|
///1-¸´Î»
|
|
///2-×ó½Ó»õ
|
|
///3-×óËÍ»õ
|
|
///4-ÓÒ½Ó»õ
|
|
///5-ÓÒËÍ»õ
|
|
///6-Í£Ö¹
|
|
///7-Ô˶¯£¨Ô˶¯µ½µÚ4¡¢5×Ö½ÚÖ¸¶¨µÄÄ¿±êÉ豸ËùÒý£©
|
|
///ÊäËÍ»úÃüÁî×Ö£º
|
|
///1-Èë¿â£¨³¯Ïò¿â£©
|
|
///2-³ö¿â£¨±³Ïò¿â£©
|
|
///3-ËÍ»õ
|
|
///4-½Ó»õ
|
|
///5-Í£Ö¹
|
|
/// <param name="DeviceIndex">É豸±àºÅ</param>
|
|
///<param name="ArrowDeviceIndex">¶ÔÓÚÊäËÍ»ú¡¢´©Ëó³µ´ú±íÄ¿±êÉ豸ËùÒý£¬
|
|
/// 0-´ú±íµ¥Ò»É豸¿ØÖÆ£¬ÎÞÄ¿±êÉ豸ËùÒý£»1¡65535´ú±íÄ¿±êÉ豸ËùÒý£¨ÖÕµãÊäËÍ»úµÄÉ豸ËùÒý£©</param>
|
|
/// <returns>·¢ËÍ´©Ë󳵡¢ÊäËÍ»úÉ豸ÃüÁîÊÇ·ñ³É¹¦</returns>
|
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int ArrowDeviceIndex)
|
|
{
|
|
|
|
StringBuilder[] itemnames;
|
|
StringBuilder[] itemvalues;
|
|
StringBuilder strTask=new StringBuilder();
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
|
|
if (devinfo.XCoor == 0 && devinfo.YCoor == 0 && devinfo.DeviceKind == 4) return false;//20130510
|
|
// Ë«¶¥Éý2²æÖÕµãλÖà add for CATL YB2
|
|
int ArrowDeviceIndex2 = 0;
|
|
int taskindex1 = 0;
|
|
int taskindex2 = 0;
|
|
string barcode = GetBarcodeFromMonitorIndex(TaskIndex);
|
|
try
|
|
{
|
|
#region add for CATL YB2 ÅжÏվ̨ÊDz»ÊÇË«ÈÎÎñվ̨ ·ÖÅäÈÎÎñºÅºÍÖÕµãλÖÃ
|
|
// add for CATL YB2 Ôö¼Ó¹ØÁªÈÎÎñÅжϣ¬Åжϵ±Ç°ÈÎÎñÊDz»ÊǹØÁªÈÎÎñ£¬ÊǹØÁªÈÎÎñҪȡÁ½¸öÈÎÎñºÅºÍÁ½¸öÖÕµãλÖÃ
|
|
//ÈÎÎñÀàÐÍ
|
|
int kindIndex = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(TaskIndex);
|
|
//ÈÎÎñºÅ
|
|
int manageTaskIndexYB = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
|
|
//¿ØÖÆÈÎÎñÀàÐÍ
|
|
int dcontrolTaskType = GetFCONTROLTASKTYPEFromManageTask(kindIndex, manageTaskIndexYB);
|
|
// add for CATL YB2 »ñÈ¡¹ØÁªÈÎÎñºÅ
|
|
string doubleRel = "-1";
|
|
// ÅжϹØÁªÈÎÎñºÅ ³ö¿âµÄÈÎÎñÀàÐÍ »ñÈ¡¹ØÁªÈÎÎñºÅ || dcontrolTaskType == 4
|
|
// 4ÀàÐÍ֮ǰ¶Ñ¶â»úµ¼²æ Óà ÏÖ³¡µ÷ÊÔ±ä¸üΪ¿ØÖÆÈÎÎñÀàÐÍ 2 ¶ÔÆë½øÐÐË«²æ³ö¿âÅä¶Ô || dcontrolTaskType == 4
|
|
if (dcontrolTaskType == 2 )
|
|
{
|
|
doubleRel = GetRativeControlId(TaskIndex);
|
|
}
|
|
|
|
// ÅжÏÊDz»ÊǹØÁªÈÎÎñ²¢ÇÒ£¬ÊDz»ÊÇË«²æ¹ØÁªÕ¾Ì¨
|
|
// ÐèÒªµÄÌõ¼þ Á½¸öСÈÎÎñºÅ Á½¸öÖÕµãλÖà ºÍ¶ÔÓ¦µÄ»õ²æ
|
|
if (Convert.ToInt32(doubleRel) != -1 && devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
// ´ËÅжÏÀïÊÇË«²æ¹ØÁªÈÎÎñ²¢ÇÒÊÇË«¶¥Éýվ̨µÄʱºò ·ÖÅäÈÎÎñºÅºÍÄ¿±êÉ豸վ̨ºÅ
|
|
// È¡³ö¹ØÁªÈÎÎñ¶ÔÓÃµÄ Á½ÌõÈÎÎñµÄ´óÈÎÎñºÅºÍ»õ²æºÅ
|
|
int[] taskFork = Model.CGeneralFunction.DoubleMinMonitorIndex(Convert.ToInt32(doubleRel));
|
|
// Èç¹û´æÔÚË«¶¥Éý ÐèÒª»ñÈ¡Á½¸öÖÕµãλÖÃ
|
|
// È¡³öÁ½¸ö ÖÕµãλÖà 1²æµÄ¸³Öµ¸ø ArrowDeviceIndex£¬2²æ¸³Öµ¸øArrowDeviceIndex2 2²æÏÈ·¢
|
|
// È¡³ö ¹ØÁªÈÎÎñµÄ ¶ÔÓ¦µÄ ÖÕµãλÖà СÈÎÎñºÅ »õ²æºÅ µÄÊý×é ·µ»ØÖµ »òÕß null
|
|
int[] station1 = GetDouArrowDeviceIndex(taskFork[0], taskFork[1]);
|
|
int[] station2 = GetDouArrowDeviceIndex(taskFork[2], taskFork[3]);
|
|
#region վ̨1 ¶ÔÓ¦µÚÒ»¸öÈÎÎñºÅ
|
|
if (station1 != null)
|
|
{
|
|
if (station1[2] == 2)
|
|
{
|
|
// ÖÕµã2²æÕ¾Ì¨
|
|
ArrowDeviceIndex2 = station1[0];
|
|
taskindex2 = station1[1];
|
|
}
|
|
else //if (station1[2] == 1)
|
|
{
|
|
ArrowDeviceIndex = station1[0];
|
|
taskindex1 = station1[1];
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region վ̨2 ¶ÔÓ¦µÚ¶þ¸öÈÎÎñºÅ
|
|
if (station2 != null)
|
|
{
|
|
if (station2[2] == 2)
|
|
{
|
|
// ÖÕµã2²æÕ¾Ì¨
|
|
ArrowDeviceIndex2 = station2[0];
|
|
taskindex2 = station2[1];
|
|
}
|
|
else //if (station1[2] == 1)
|
|
{
|
|
ArrowDeviceIndex = station2[0];
|
|
taskindex1 = station2[1];
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
// ²»ÊǹØÁªÈÎÎñ µ«ÊÇÊÇË«¶¥Éýվ̨
|
|
else if (Convert.ToInt32(doubleRel) == -1 && devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
// Èç¹û²»ÊǹØÁªÈÎÎñ µ«ÊÇÊÇË«²æ¹ØÁªÕ¾Ì¨£¬Ò²ÐèÒªÅжÏÊÇÄĸö»õ²æºÍ¶ÔӦλÖõÄÈÎÎñºÅ
|
|
// ÊÇÄĸö»õ²æ ¾Í·¢µ½¶ÔÓ¦»õ²æµÄDBÇø
|
|
// »ñÈ¡µ±Ç°ÈÎÎñ¶ÔÓ¦³ö¿âµÄ»õ²æ ΪÄĸö²æ
|
|
int useAwayForksin = Model.CGeneralFunction.GetUseAwayForkFromManagetask(manageTaskIndexYB);
|
|
// ¸ù¾Ýµ±Ç°»õ²æºÅ·ÖÅä ÈÎÎñºÅÖµºÍÖÕµãվֵ̨
|
|
if (useAwayForksin == 1)
|
|
{
|
|
ArrowDeviceIndex = Convert.ToInt32(ArrowDeviceIndex.ToString().Substring(0, 5));
|
|
taskindex1 = TaskIndex;
|
|
}
|
|
else if (useAwayForksin == 2)
|
|
{
|
|
ArrowDeviceIndex2 = Convert.ToInt32(ArrowDeviceIndex.ToString().Substring(0, 5));
|
|
taskindex2 = TaskIndex;
|
|
// µ¥¶ÀÊÇ2²æ·¢ËÍʱºò Ò»²æÄ¿±êµØÖ·Îª 0 add for CATL YB2
|
|
ArrowDeviceIndex = 0;
|
|
}
|
|
else
|
|
{
|
|
// Õý³£ÕâÖÖÇé¿öÓ¦¸Ã²»»á³öÏÖ
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrderÖÕµã´íÎó";
|
|
return false;
|
|
}
|
|
}
|
|
else // Õý³£ÊäËÍ»ú
|
|
{
|
|
// ²»ÊÇË«¶¥Éý Õý³£»ñÈ¡ÖÕµãλÖà ·¢Ë͵ÄDBÇøÒ²²»ÊÇË«¶¥ÉýµÄ ΪÕý³£µÄ
|
|
if (ArrowDeviceIndex.ToString().Length > 5)
|
|
{
|
|
ArrowDeviceIndex = Convert.ToInt32(ArrowDeviceIndex.ToString().Substring(0, 5));
|
|
}
|
|
}
|
|
#endregion
|
|
int[] sendmes = new int[5] { MessageIndex, TaskIndex, Order, DeviceIndex, ArrowDeviceIndex };
|
|
devinfo.SendMessage = sendmes;
|
|
Model.CGetInfo.SetDeviceMessage(devinfo);
|
|
int sn = 0;
|
|
string JPINFO = "";
|
|
if (devinfo == null)
|
|
{
|
|
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£ºÉ豸Ë÷Òý²»´æÔÚ!";
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
//if (devinfo.DeviceKind == 7)
|
|
//{
|
|
// return true;
|
|
//}
|
|
if (devinfo.DeviceKind == 1)
|
|
{//¶Ñ¶â»ú²»ÔÊÐíʹÓô˷½·¨
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎ󣺶Ѷâ»ú²»ÔÊÐíʹÓô˷½·¨!";
|
|
return false;
|
|
}
|
|
sn = Convert.ToInt32(devinfo.Dbw1Address);
|
|
strTask.Append(TaskIndex.ToString());
|
|
if (devinfo.DeviceKind == 31)
|
|
{
|
|
#region ¸ß¶ËÊäËÍ
|
|
int reSendFlag = 0, HMISendDb1Address = 0;
|
|
GetHMISendInfo(out reSendFlag, out HMISendDb1Address, TaskIndex);//´¥ÃþÆÁÉêÇëÖØÐ·¢ËÍ20120220
|
|
int inworkbench = IfInworkBench(TaskIndex);
|
|
if (MessageIndex == 2)
|
|
{
|
|
barcode = "000000";
|
|
inworkbench = 0;
|
|
}
|
|
byte[] barbyte = new byte[6];
|
|
if (barcode.Length == 6)
|
|
{
|
|
barbyte = ASCIIEncoding.ASCII.GetBytes(barcode);
|
|
}
|
|
else
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎ󣺸߶˹¤Î»ÊäËÍ»úÌõÂë²»ºÏ·¨!";
|
|
return false;
|
|
}
|
|
if (reSendFlag == 2)//´¥ÃþÆÁÉêÇëÖØÐ·¢ËÍ20120220devinfo.UseCommonDB == "1"
|
|
{
|
|
sn = HMISendDb1Address;
|
|
itemnames = new StringBuilder[10]
|
|
{ new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
itemvalues = new StringBuilder[10]
|
|
{ new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[0].Append("0");
|
|
|
|
for (int i = 1; i <= 6; i++)
|
|
{
|
|
|
|
itemnames[i].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + i)).Append(",b");
|
|
itemvalues[i].Append(barbyte[i - 1]);
|
|
}
|
|
|
|
itemnames[7].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 7)).Append(",b");
|
|
|
|
itemvalues[7].Append(inworkbench);
|
|
itemnames[8].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 8)).Append(",i");
|
|
//20120207
|
|
StringBuilder a1 = new StringBuilder(devinfo.DeviceIndex.ToString().Substring(0, 1));
|
|
if (devinfo.DeviceIndex > 0)
|
|
{//ÍÐÅÌËùÔڵĵ±Ç°É豸Ë÷Òý
|
|
StringBuilder a2 = new StringBuilder(devinfo.DeviceIndex.ToString().Substring(2));
|
|
a1.Append(a2);
|
|
}
|
|
itemvalues[8].Append(a1.ToString());//ÍÐÅÌËùÔڵĵ±Ç°É豸Ë÷Òý
|
|
itemnames[9].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 10)).Append(",i");
|
|
itemvalues[9].Append(ArrowDeviceIndex.ToString());
|
|
|
|
}
|
|
else
|
|
{
|
|
itemnames = new StringBuilder[9]
|
|
{ new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder("")}; ;
|
|
itemvalues = new StringBuilder[9]
|
|
{ new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder(""),
|
|
new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[0].Append("0");
|
|
|
|
for (int i = 1; i <= 6; i++)
|
|
{
|
|
|
|
itemnames[i].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + i)).Append(",b");
|
|
itemvalues[i].Append(barbyte[i - 1]);
|
|
}
|
|
|
|
itemnames[7].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 7)).Append(",b");
|
|
itemvalues[7].Append(inworkbench);
|
|
itemnames[8].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 8)).Append(",i");
|
|
itemvalues[8].Append(ArrowDeviceIndex.ToString());
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else if (devinfo.DeviceKind == 40)
|
|
{
|
|
//°²È«¼±Í£ ·þÎñ¶ËÔö¼Ó Áª»úÍ£³µ
|
|
itemnames = new StringBuilder[1] { new StringBuilder("") };
|
|
itemvalues = new StringBuilder[1] { new StringBuilder("") };
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[0].Append(Order.ToString());
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÉÏλ»ú·¢Ëͽô¼±Í£³µ£º").Append(DeviceIndex).Append("***Ö¸Áî").Append(Order.ToString());
|
|
}
|
|
else if (devinfo.DeviceKind == 7)
|
|
{
|
|
itemnames = new StringBuilder[1] { new StringBuilder("") };
|
|
itemvalues = new StringBuilder[1] { new StringBuilder("") };
|
|
itemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo.Dbw2Address + 0)).Append(",b");
|
|
itemvalues[0].Append("2");
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÊÖ¶¯·¢ËÍɨÂëÆ÷Ó¦´ð").Append(DeviceIndex).Append("***Ö¸Áî").Append("2");
|
|
}
|
|
else
|
|
{
|
|
#region ÎïÁ÷ÊäËÍ»ú
|
|
#region devinfo.UseCommonDB == "1"
|
|
if (devinfo.UseCommonDB == "1")
|
|
{
|
|
|
|
itemnames = new StringBuilder[5] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
itemvalues = new StringBuilder[5] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
//µÚ1×Ö½Ú£º¶Áд±ê־λ
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[0].Append("0");//ÊäËÍ»úÍ·
|
|
//µÚ2×Ö½Ú ÃüÁî×Ö
|
|
itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
itemvalues[1].Append(Order.ToString());//ÃüÁî
|
|
//µÚ3¡¢4×Ö½ÚÈÎÎñºÅ
|
|
itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
|
|
itemvalues[2].Append(TaskIndex.ToString());//ÈÎÎñºÅ
|
|
//µÚ5¡¢6¡¢7¡¢8 ×Ö½Ú±íʾĿ±êÉ豸±àºÅ
|
|
itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",i");
|
|
itemvalues[3].Append(DeviceIndex.ToString());//ÆðʼÉ豸±àºÅ£¨µ±Ç°É豸±àºÅ£©
|
|
//Ä¿±êÖÕµãÉ豸
|
|
itemnames[4].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 6)).Append(",i");
|
|
itemvalues[4].Append(ArrowDeviceIndex.ToString());
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + strTask.ToString())
|
|
.Append("**Ä¿±êλÖÃ" + ArrowDeviceIndex.ToString());
|
|
}
|
|
#endregion
|
|
else
|
|
{
|
|
#region Ë«ÈÎÎñ¶¥Éýվ̨Åä¶Ô·¢ËÍÈÎÎñ
|
|
// T_Base_Device ±íF_IFCORRELDOUBLEFORK ×Ö¶ÎΪ1 ¶à²æ¹ØÁªË«¶¥Éýվ̨ÈÎÎñ
|
|
if (devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
#region ¶à²æ¹ØÁªÕ¾Ì¨ÈÎÎñ
|
|
#region ×¢ÊÍ
|
|
// int TaskIndexDB23 = 0; int TaskIndexDB45 = 0;
|
|
//// int reltaskindex = Model.CGeneralFunction.GetDoubleLiftInfo(TaskIndex, DeviceIndex);
|
|
|
|
// strTask.Clear();
|
|
// int devicestrcount = DeviceIndex.ToString().Length;
|
|
// string row = DeviceIndex.ToString().Substring(devicestrcount - 1, 1);
|
|
// if (row == "1")//Ò»Áнü²æ
|
|
// {
|
|
// TaskIndexDB23 = TaskIndex;
|
|
// // TaskIndexDB45 = reltaskindex;
|
|
// }
|
|
// else
|
|
// if (row == "2")//2ÁÐÔ¶²æ
|
|
// {
|
|
// // TaskIndexDB23 = reltaskindex;//1ÁÐÏÈÀ뿪
|
|
// TaskIndexDB45 = TaskIndex; //2ÁкóÀ뿪ÊäËÍ»ú
|
|
// }
|
|
|
|
// strTask.Append("1²æÈÎÎñºÅ:" + TaskIndexDB23.ToString()).Append("Ò»²æÌõÂ룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB23));
|
|
// strTask.Append(";2²æÈÎÎñºÅ:" + TaskIndexDB45.ToString()).Append("¶þ²æÌõÂ룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB45));
|
|
#endregion
|
|
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
|
|
sn = Convert.ToInt32(devinfo.Dbw1Address);
|
|
|
|
//itemnames = new StringBuilder[6] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
//itemvalues = new StringBuilder[6] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
//itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
//itemvalues[0].Append("0");
|
|
//itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
//itemvalues[1].Append(Order.ToString());
|
|
|
|
#region ÖгµËÄ·½ ×¢ÊÍ
|
|
//int taskindex1 = 0;
|
|
//int taskindex2 = 0;
|
|
//int[] mutitasks = Model.CGeneralFunction.MutiForkIfSync(TaskIndex, DeviceIndex, devinfo.DeviceKind);
|
|
//if (mutitasks != null)
|
|
//{
|
|
// foreach (int temptask in mutitasks)
|
|
// {
|
|
// int UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(temptask));
|
|
// if (UseAwayFork == 0)
|
|
// {
|
|
// taskindex2 = temptask;
|
|
// }
|
|
// else if (UseAwayFork == 1)
|
|
// {
|
|
// taskindex2 = temptask;
|
|
// }
|
|
// else if (UseAwayFork == 2)
|
|
// {
|
|
// taskindex1 = temptask;
|
|
// }
|
|
// }
|
|
//}
|
|
//else
|
|
//{
|
|
// taskindex2 = TaskIndex;
|
|
//}
|
|
#endregion
|
|
|
|
// add for CATL YB2 ÓÉÓÚʵÏÖÁ˲»Í¬ÖÕµãÅä¶ÔË«²æµÄÈÎÎñ£¬ËùÒÔÏ´ïÈÎÎñµÄÖÕµã дÁ½¸öÖÕµã Ë«ÈÎÎñվ̨ÊÇ14¸ö ×Ö½Ú
|
|
// ´Ë´¦»¹ÐèÒªÔö¼ÓÂß¼ÊÇË«¶¥ÉýÉϵÄÈÎÎñÓÐÒ»¸öÌáǰ¼ì²â²»Í¨¹ý ÁíÒ»¸öÒ²²»ÄÜ·¢ËÍ
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(DeviceIndex.ToString().Substring(0, 5)));
|
|
sn = Convert.ToInt32(devinfo.Dbw1Address);
|
|
//Ôö¼ÓÒ»¸önew StringBuilder("") YB2
|
|
itemnames = new StringBuilder[6] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
itemvalues = new StringBuilder[6] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") }; ;
|
|
|
|
// MessageIndex
|
|
//µÚ1×Ö½Ú£º ÃüÁî×Ö
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
itemvalues[0].Append(Order.ToString());
|
|
//µÚ2¡¢3×Ö½Ú£º ÈÎÎñºÅ1 ¶ÔÓ¦¶Ñ¶â»ú»õ²æ1λÖÃÈÎÎñºÅ£¨Ô¶²æ£©
|
|
itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
|
|
itemvalues[1].Append(taskindex1);
|
|
//µÚ4¡¢5×Ö½Ú; ÈÎÎñºÅ2 ¶ÔÓ¦¶Ñ¶â»ú»õ²æ2λÖÃÈÎÎñºÅ£¨½ü²æ£©
|
|
itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",i");
|
|
itemvalues[2].Append(taskindex2);
|
|
//µÚ6¡¢7¡¢8¡¢9×Ö½Ú ±íʾĿ±êÉ豸±àºÅ1 ¶ÔÓ¦Ò»²æ YB2
|
|
itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 6)).Append(",dw");
|
|
itemvalues[3].Append(ArrowDeviceIndex.ToString());
|
|
//µÚ10¡¢11¡¢12¡¢13×Ö½Ú ±íʾĿ±êÉ豸±àºÅ2 ¶ÔÓ¦¶þ²æ YB2
|
|
itemnames[4].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 10)).Append(",dw");
|
|
itemvalues[4].Append(ArrowDeviceIndex2.ToString());
|
|
//µÚ0×Ö½Ú£º ¶Áд±ê־λ
|
|
itemnames[5].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[5].Append(MessageIndex);
|
|
|
|
// add for CATL YB2
|
|
//Ôö¼ÓÈÎÎñºÅµ¥¶À¼Ç¼
|
|
JPINFO = ",Ò»²æ(½ü²æ)ÈÎÎñºÅ:" + taskindex1.ToString() + ",¶þ²æ(Ô¶²æ)ÈÎÎñºÅ:" + taskindex2.ToString();
|
|
//Ò»²æµÄÍÐÅÌÌõÂë
|
|
string firstBarcode = GetBarcodeFromMonitorIndex(taskindex1);
|
|
//¶þ²æÍÐÅÌÌõÂë
|
|
string secondBarcode = GetBarcodeFromMonitorIndex(taskindex2);
|
|
string doubleBarcodeInfo = "";
|
|
doubleBarcodeInfo = ",Ò»²æ(½ü²æ)ÌõÂë:" + firstBarcode.ToString() + ",¶þ²æ(Ô¶²æ)ÌõÂë:" + secondBarcode.ToString();
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + strTask.ToString())
|
|
.Append("**Ä¿±êλÖÃ1:" + ArrowDeviceIndex.ToString()).Append("**Ä¿±êλÖÃ2:" + ArrowDeviceIndex2.ToString()).Append("**µ¥¶À¼Ç¼˫ÈÎÎñ¶¥Éý½ü²æÔ¶²æÈÎÎñºÅ" + JPINFO).Append("**¹ØÁª¶¥ÉýµÄË«ÈÎÎñºÅ£º" + doubleBarcodeInfo);
|
|
#endregion
|
|
|
|
}
|
|
#endregion
|
|
else
|
|
if (devinfo.DeviceKind == 17)
|
|
{
|
|
//ÔÚ·¢ËͲð¶âÖ¸Áîǰ£¬ÅжϹÜÀíÈÎÎñÊÇ·ñÒªÇó»ØÁ÷£¬Èç¹û»ØÁ÷Ôò²»·¢ËͲð¶âÖ¸Áî
|
|
int mti = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(TaskIndex);
|
|
if (mti == 1)
|
|
{
|
|
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
|
|
int flag = Model.CGeneralFunction.GetBackFlagFromIOControl(fid);
|
|
if (1 == flag)//»ØÁ÷
|
|
{
|
|
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "²»²ð¶âµÈ´ý»ØÁ÷", devinfo.DeviceIndex.ToString(), fid.ToString());
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//·¢ËÍÌõÂëÖµ
|
|
#region ²ð¶â»úÆ÷ÈË
|
|
string goodsbarcode = GetGoodsBarcodeFromManageTask(TaskIndex);
|
|
goodsbarcode = goodsbarcode.TrimStart(';').TrimEnd(';').Trim();
|
|
int count = goodsbarcode.Length;//×Ö·ûÊý
|
|
|
|
|
|
char[] cc = new char[1] { ';' };
|
|
string[] code = goodsbarcode.Split(cc);
|
|
int goodscount = code.Length;//ÎïÁÏÊý
|
|
|
|
int length = devinfo.Dbw1SendLength - 1;//дÊý¾ÝÇø³¤¶È//TaskIndexÊÇ×Ö£¬´Ë´¦¼õÒ»
|
|
|
|
itemnames = new StringBuilder[length];//length²¢²»ÊÇдÊý¾ÝÇøÖÐ×ֽڵĸöÊý£¬¶øÊÇÊý×éÖеĸöÊý
|
|
itemvalues = new StringBuilder[length];//TaskIndexÊÇ×Ö£¬´Ë´¦¼õÒ»
|
|
byte[] barbyte = new byte[count];
|
|
barbyte = ASCIIEncoding.ASCII.GetBytes(goodsbarcode);
|
|
|
|
itemnames[0] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[0] = new StringBuilder("0");
|
|
itemnames[1] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
itemvalues[1] = new StringBuilder(Order.ToString());
|
|
itemnames[2] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
|
|
itemvalues[2] = new StringBuilder(TaskIndex.ToString());
|
|
itemnames[3] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",b");
|
|
itemvalues[3] = new StringBuilder(ArrowDeviceIndex.ToString());//ÏäÌå»òÄÚͬµÄÀàÐÍ
|
|
|
|
itemnames[4] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 5)).Append(",b");
|
|
itemvalues[4] = new StringBuilder(goodscount.ToString());//ÏäÌå»òͲÌåµÄÊýÁ¿
|
|
|
|
//·ÖºÅµÄascIIÂëÊÇ59
|
|
for (int i = 0, j = 5; j < length; i++) //´¦ÀíÌõÂë
|
|
{
|
|
if (i < count)
|
|
{
|
|
if (barbyte[i] != 59)//·ÖºÅ²»´¦Àí
|
|
{
|
|
|
|
itemnames[j] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1 + j)).Append(",b");
|
|
itemvalues[j] = new StringBuilder(barbyte[i].ToString());
|
|
j++;
|
|
}
|
|
}
|
|
else//ÆäËûλÖÃ×Ô¶¯Ìî³ä0
|
|
{
|
|
itemnames[j] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1 + j)).Append(",b");
|
|
itemvalues[j] = new StringBuilder("0");
|
|
j++;
|
|
}
|
|
|
|
}
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + strTask.ToString())
|
|
.Append("**ÀàÐÍ" + ArrowDeviceIndex.ToString()).Append("**ÊýÁ¿" + goodscount.ToString()).Append("**ÎïÁÏÌõÂë" + goodsbarcode.ToString());
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{//ÆÕͨÊäËÍ»ú
|
|
|
|
|
|
if (devinfo.Dbw1SendLength >= 21)//ÄÚͬ»òÏäÌåÊäËÍ»ú 11000,11001,11025,13001
|
|
{
|
|
#region ÄÚͬ»òÏäÌåÊäËÍ»ú
|
|
int length = devinfo.Dbw1SendLength - 2;//дÊý¾ÝÇø³¤¶È//TaskIndexºÍArrowDeviceIndexÊÇ×Ö£¬´Ë´¦¼õ¶þ
|
|
int type = GetGoodsTypeFromManageTask(TaskIndex);
|
|
|
|
itemnames = new StringBuilder[length];//TaskIndexºÍArrowDeviceIndexÊÇ×Ö£¬´Ë´¦¼õ¶þ
|
|
itemvalues = new StringBuilder[length];//
|
|
int count = barcode.Length;//µ¥¸öÄÚͬ»òÏäÌåÌõÂëµÄ×Ö·ûÊý
|
|
byte[] barbyte = new byte[count];
|
|
barbyte = ASCIIEncoding.ASCII.GetBytes(barcode.Trim());
|
|
|
|
itemnames[0] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[0] = new StringBuilder("0");
|
|
itemnames[1] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
itemvalues[1] = new StringBuilder(Order.ToString());
|
|
itemnames[2] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
|
|
itemvalues[2] = new StringBuilder(TaskIndex.ToString());
|
|
itemnames[3] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",i");
|
|
itemvalues[3] = new StringBuilder(ArrowDeviceIndex.ToString());
|
|
itemnames[4] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 6)).Append(",b");
|
|
itemvalues[4] = new StringBuilder(type.ToString());//ÏäÌå»òͲÌåµÄÀàÐÍ
|
|
|
|
//·ÖºÅµÄascIIÂëÊÇ59
|
|
for (int i = 0, j = 5; j < length; i++) //´¦ÀíÌõÂë
|
|
{
|
|
if (i < count)
|
|
{
|
|
|
|
|
|
itemnames[j] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2 + j)).Append(",b");
|
|
itemvalues[j] = new StringBuilder(barbyte[i].ToString());
|
|
j++;
|
|
}
|
|
else//ÆäËûλÖÃ×Ô¶¯Ìî³ä0
|
|
{
|
|
itemnames[j] = new StringBuilder(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2 + j)).Append(",b");
|
|
itemvalues[j] = new StringBuilder("0");
|
|
j++;
|
|
}
|
|
|
|
}
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + strTask.ToString())
|
|
.Append("**Ä¿±êλÖÃ" + ArrowDeviceIndex.ToString()).Append("**ÀàÐÍ" + type.ToString()).Append("**ÎïÁÏÌõÂë" + barcode.ToString());
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region ÆÕͨÊäËÍ»ú ×îÐÂÐÒé Ë«×Ö Ë«×Ö kkkkkkkkk
|
|
//int Pallettype = GetGoodsTypeFromManageTask(TaskIndex);
|
|
//plc ÖÐi ¼´ int µ¥ÕûÊý di ¼´Dint Ë«ÕûÊý r ¼´ REAL ¸¡µãÊý
|
|
itemnames = new StringBuilder[4] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") };
|
|
itemvalues = new StringBuilder[4] { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") };
|
|
|
|
// µÚ2×Ö½Ú ÃüÁî×Ö
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
|
|
itemvalues[0].Append(Order.ToString());
|
|
//µÚ3¡¢4×Ö½Ú ÈÎÎñºÅ
|
|
itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
|
|
itemvalues[1].Append(TaskIndex.ToString());
|
|
//ÐÂÐÒé Ä¿±êλÖÃÊÇ4¸ö×Ö½Ú£¬ µÚ4¡¢5¡¢6¡¢7×Ö½Ú Ë«×Ö
|
|
itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",dw");
|
|
//itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",i");
|
|
itemvalues[2].Append(ArrowDeviceIndex.ToString());
|
|
//itemnames[4].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 8)).Append(",b");
|
|
//itemvalues[4].Append(Pallettype.ToString());
|
|
//µÚ1×Ö½Ú Í·
|
|
itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[3].Append(MessageIndex);
|
|
|
|
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÊäËÍ»ú·¢ËÍÃüÁî**ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + strTask.ToString())
|
|
.Append("**Ä¿±êλÖÃ" + ArrowDeviceIndex.ToString());
|
|
//.Append("**Ä¿±êλÖÃ" + ArrowDeviceIndex.ToString()).Append("**ÍÐÅÌÀàÐÍ" + Pallettype.ToString()); ;
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
|
|
CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
|
|
CCommonOPCClient.PlcConnectionID = devinfo.S7Connection;//20110216
|
|
// .SyncWriteAllItemValue(itemnames, itemvalues) == false add for CATL YB2 ¸ÄΪÒì²½·¢ËÍ
|
|
if (CCommonOPCClient.AWriteAllItemValue(itemnames, itemvalues) == false)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + CCommonOPCClient.OpcError;
|
|
return false;
|
|
}
|
|
//itemnames[0].Remove(0, itemnames[0].Length);
|
|
//itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
//itemvalues[0].Remove(0, itemvalues[0].Length);
|
|
//itemvalues[0].Append(MessageIndex);
|
|
//if (CCommonOPCClient.AWriteAllItemValue(itemnames, itemvalues) == false)
|
|
//{
|
|
// _commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + CCommonOPCClient.OpcError;
|
|
// return false;
|
|
//}
|
|
|
|
//sss.Remove(0, sss.Length);
|
|
//sss.Append("ÌõÂ룺").Append(barcode).Append("**д±êÖ¾").Append(MessageIndex.ToString()).Append("**ÃüÁî×Ö" + Order.ToString()).Append("**ÈÎÎñºÅ" + strTask.ToString())
|
|
// .Append("**Ä¿±êλÖÃ" + ArrowDeviceIndex.ToString());
|
|
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍÖ¸Áî", devinfo.DeviceIndex.ToString(), sss.ToString());
|
|
//if (MessageIndex == 1)
|
|
//{
|
|
// if (WriteBarcode(DeviceIndex, TaskIndex) == false)
|
|
// {
|
|
// return false;
|
|
// }
|
|
//}
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
devinfo = null;
|
|
itemnames = null;
|
|
itemvalues = null;
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// //2220173-ʱ´ú¼ªÀû Ôö¼Ó»õ²æ½ûÓù¦ÄÜ
|
|
/// ÐèÒªÐ޸ĽӿÚISendDeviceOrder ͬʱÔÚ¸÷¸öʵÏÖÀàÀïÃæÔö¼ÓÕâ¸ö·½·¨ Ö±½Óreturn true
|
|
/// </summary>
|
|
/// <param name="fork"></param>
|
|
/// <param name="DeviceIndex"></param>
|
|
/// <returns></returns>
|
|
public bool SendDeviceOrder(int fork, int DeviceIndex)
|
|
{
|
|
StringBuilder[] itemnames;
|
|
StringBuilder[] itemvalues;
|
|
try
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
|
|
//return true;//ceshi
|
|
int[] sendmes = new int[2] { fork, DeviceIndex };
|
|
devinfo.SendMessage = sendmes;
|
|
Model.CGetInfo.SetDeviceMessage(devinfo);
|
|
int sn = 0;
|
|
if (devinfo == null)
|
|
{
|
|
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£ºÉ豸Ë÷Òý²»´æÔÚ!";
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
if (devinfo.DeviceKind != 1)
|
|
{//¶Ñ¶â»ú²»ÔÊÐíʹÓô˷½·¨
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£ºÖ»ÓжѶâ»ú½ûÓûõ²æÊ¹Óô˷½·¨!";
|
|
return false;
|
|
}
|
|
//if (fork == 1 || fork == 2)
|
|
//{
|
|
// fork = 1;//ÉèÖýûÓà µ«²»¸æËßµçÆø¾ßÌå»õ²æ
|
|
//}
|
|
//else
|
|
//{
|
|
// fork = 0;//½â³ý½ûÓÃ
|
|
//}
|
|
sn = Convert.ToInt32(devinfo.Dbw1Address);
|
|
itemnames = new StringBuilder[1] { new StringBuilder("") };
|
|
itemvalues = new StringBuilder[1] { new StringBuilder("") };
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 18)).Append(",b");
|
|
itemvalues[0].Append(fork.ToString());//ÔÝʱ¸øµçÆøÖ»·¢1 ×÷Ϊ±ê¼Ç ²»·¢¾ßÌ岿ºÅ
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("ÉÏλ»ú½ûÓöѶâ»ú»õ²æ£º").Append(DeviceIndex).Append("***»õ²æ").Append(fork.ToString());
|
|
|
|
}
|
|
CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");
|
|
CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
|
|
CCommonOPCClient.PlcConnectionID = devinfo.S7Connection;
|
|
if (CCommonOPCClient.AWriteAllItemValue(itemnames, itemvalues) == false)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + CCommonOPCClient.OpcError;
|
|
return false;
|
|
}
|
|
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍÖ¸Áî", devinfo.DeviceIndex.ToString(), sss.ToString());
|
|
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
devinfo = null;
|
|
itemnames = null;
|
|
itemvalues = null;
|
|
}
|
|
}
|
|
private void GetHMISendInfo(out int reSendFlag, out int HMISendDb1Address, int taskindex)
|
|
{//20120220
|
|
reSendFlag = 0;
|
|
HMISendDb1Address = 0;
|
|
try
|
|
{
|
|
DataView dv = dbo.ExceSQL(string.Format("SELECT F_NumParam2, F_SendFlag FROM T_Monitor_Task where F_MonitorIndex={0}", taskindex)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
reSendFlag = Convert.ToInt32(dv[0]["F_SendFlag"]);
|
|
HMISendDb1Address = Convert.ToInt32(dv[0]["F_NumParam2"]);//´¥ÃþÆÁF_DBW1Address
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.GetHMISendInfo·¢Éú´íÎó£º" + ex.Message;
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// ÉÏλ»ú¸øÏÂλ»ú·¢ËÍÑÌÏä°´Æ·ÅÆÂë·ÖµÀÐÅÏ¢¹²15×Ö½Ú,ÓÐÊý¾ÝʱдÈëʵ¼ÊÊý¾Ý£¬·ñÔòÈ«²¿Ð´Áã
|
|
/// </summary>
|
|
/// <param name="DeviceIndex">Âë¶âλÉ豸ºÅË÷Òý</param>
|
|
/// <param name="TobaccoCode">µÚ3--15×Ö½Ú,ÑÌÏäÂë</param>
|
|
/// <param name="HaveFirstProjectCode">µÚ1×Ö½Ú,1-ÓÐÒ»ºÅ¹¤³ÌÂë,0-ÎÞÒ»ºÅ¹¤³ÌÂë</param>
|
|
/// <param name="IfSmallTobacco">µÚ2×Ö½Ú,1-ÒìÐÍÑÌÏä,0-Õý³£ÑÌÏä</param>
|
|
/// <returns>·¢ËÍÑÌÏä°´Æ·ÅÆÂë·ÖµÀÐÅÏ¢ÊÇ·ñ³É¹¦</returns>
|
|
public bool SendDeviceOrder(int DeviceIndex, string TobaccoCode, bool HaveFirstProjectCode, bool IfSmallTobacco, int Count)
|
|
{
|
|
StringBuilder[] itemnames = new StringBuilder[16];
|
|
StringBuilder[] itemvalues = new StringBuilder[16];
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
|
|
try
|
|
{
|
|
|
|
int sn = 0;
|
|
|
|
if (devinfo == null)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£ºÉ豸ËùÒý²»´æÔÚ!";
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
sn = Convert.ToInt32(devinfo.Dbw1Address);
|
|
|
|
itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append((sn + 0).ToString()).Append(",b");
|
|
if (HaveFirstProjectCode == true)
|
|
{
|
|
itemvalues[0].Append("1");
|
|
}
|
|
else
|
|
{
|
|
itemvalues[0].Append("0");
|
|
}
|
|
itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append((sn + 1).ToString()).Append(",b");
|
|
if (IfSmallTobacco == true)
|
|
{
|
|
itemvalues[1].Append("1");
|
|
}
|
|
else
|
|
{
|
|
itemvalues[1].Append("0");
|
|
}
|
|
for (int i = 2; i <= 14; i++)
|
|
{
|
|
itemnames[i].Append(Model.CGeneralFunction.DBSend).Append(".").Append((sn + i).ToString()).Append(",b");
|
|
itemvalues[i].Append(Strings.Asc(TobaccoCode.Substring(i - 2, 1)).ToString());
|
|
}
|
|
itemnames[15].Append(Model.CGeneralFunction.DBSend).Append(".").Append((sn + 15).ToString()).Append(",b");
|
|
itemvalues[15].Append(Count.ToString());
|
|
|
|
CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
|
|
CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
|
|
CCommonOPCClient.PlcConnectionID = devinfo.S7Connection;//20110216
|
|
if (CCommonOPCClient.SyncWriteAllItemValue(itemnames, itemvalues) == false)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£º" + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
devinfo = null;
|
|
itemnames = null;
|
|
itemvalues = null;
|
|
}
|
|
}
|
|
|
|
public bool WriteBarcode(int deviceindex, int taskindex)
|
|
{
|
|
Model.MDevice devinfo;
|
|
StringBuilder[] itemnames = new StringBuilder[11];
|
|
StringBuilder[] itemvalues = new StringBuilder[11];
|
|
|
|
int sn = 0;
|
|
try
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(deviceindex);
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("SELECT F_MonitorIndex, F_TxtParam FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
|
|
DataView dvb = dbo.ExceSQL(sss.ToString()).Tables[0].DefaultView;
|
|
if (dvb.Count > 0)
|
|
{
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append(dvb[0]["F_TxtParam"].ToString());
|
|
|
|
if ((sss.ToString() == "-") || (sss.ToString() == "")) return true;
|
|
}
|
|
else
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£ºÐ´È븽¼ÓÌõÂëʱÔÚµ÷¶ÈÈÎÎñ±íÄÚûÕÒµ½ÌõÂë!";
|
|
return false;
|
|
}
|
|
|
|
if (devinfo.AppendBarcode > 0)
|
|
{
|
|
Model.MDevice devinfo1 = Model.CGetInfo.GetDeviceInfo(devinfo.AppendBarcode);
|
|
if (devinfo1.DeviceIndex == 0)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder·¢Éú´íÎó£ºÐ´È븽¼ÓÌõÂëʱÉ豸Ë÷Òý²»´æÔÚ!";
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
|
|
//byte0,byte1,byte2,byte3,byte4
|
|
// int1 int3
|
|
//int0(byte0,byte1);int1(byte1,byte2);int2(byte2,byte3);int3(byte3,byte4)
|
|
sn = Convert.ToInt32(devinfo1.Dbw1Address);
|
|
devinfo1 = null;
|
|
for (int i = 0; i <= 9; i++)
|
|
{
|
|
itemnames[i].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + i + 1)).Append(",b");
|
|
itemvalues[i].Append(Strings.Asc(sss.ToString().Substring((i), 1)).ToString());
|
|
}
|
|
itemnames[10].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
|
|
itemvalues[10].Append("1");
|
|
CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
|
|
CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
|
|
CCommonOPCClient.PlcConnectionID = devinfo.S7Connection;//20110216
|
|
if (CCommonOPCClient.SyncWriteAllItemValue(itemnames, itemvalues) == false)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "SendDeviceOrder", deviceindex.ToString(), sss.ToString());
|
|
}
|
|
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return true; ;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.WriteBarcode·¢Éú´íÎó£º" + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
devinfo = null;
|
|
itemnames = null;
|
|
itemvalues = null;
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// ÏòPLCµÄDBÇøÐ´ÈëÊý¾Ý
|
|
/// </summary>
|
|
/// <param name="ItemNames">±êÇ©±äÁ¿Ãû³ÆÊý×é</param>
|
|
/// <param name="ItemValues">±êǩֵÊý×é</param>
|
|
/// <returns></returns>
|
|
public bool WriteDBData(StringBuilder[] ItemNames, StringBuilder[] ItemValues)
|
|
{
|
|
try
|
|
{
|
|
if (CCommonOPCClient.SyncWriteAllItemValue(ItemNames, ItemValues) == false)
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("**" + ItemNames[0].ToString() + "**" + ItemValues[0].ToString());
|
|
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍÓ¦´ð±êÖ¾", "----", sss.ToString());
|
|
|
|
return true;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.WriteDBData·¢Éú´íÎó£º" + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
ItemNames = null;
|
|
ItemValues = null;
|
|
}
|
|
}
|
|
public bool WriteDBData(StringBuilder[] ItemNames, StringBuilder[] ItemValues, string PLCconnectionID)
|
|
{
|
|
try
|
|
{
|
|
CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
|
|
CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
|
|
CCommonOPCClient.PlcConnectionID = PLCconnectionID;
|
|
// SyncWriteAllItemValue
|
|
if (CCommonOPCClient.AWriteAllItemValue(ItemNames, ItemValues) == false)
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
sss.Remove(0, sss.Length);
|
|
for (int i = 0; i < ItemNames.Length; i++)
|
|
{
|
|
sss.Append("**" + ItemNames[i].ToString() + "**" + ItemValues[i].ToString());
|
|
}
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "·¢ËÍÓ¦´ð±êÖ¾", "----", sss.ToString());
|
|
return true;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.WriteDBData·¢Éú´íÎó£º" + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
ItemNames = null;
|
|
ItemValues = null;
|
|
}
|
|
}
|
|
string GetBarcodeFromMonitorIndex(int taskindex)
|
|
{
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("SELECT F_TxtParam FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
|
|
DataView dvb = dbo.ExceSQL(sss.ToString()).Tables[0].DefaultView;
|
|
if (dvb.Count > 0)
|
|
{
|
|
return dvb[0]["F_TxtParam"].ToString();
|
|
}
|
|
else
|
|
{
|
|
return "-";
|
|
}
|
|
}
|
|
// add for CATL YB2 »ñÈ¡¹ØÁªÈÎÎñID
|
|
string GetRativeControlId(int taskindex)
|
|
{
|
|
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(taskindex);
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("SELECT F_RELATIVECONTORLID FROM T_MANAGE_TASK WHERE (FID = ").Append(fid).Append(")");
|
|
DataView dvb = dbo.ExceSQL(sss.ToString()).Tables[0].DefaultView;
|
|
if (dvb.Count > 0)
|
|
{
|
|
return dvb[0]["F_RELATIVECONTORLID"].ToString();
|
|
}
|
|
else
|
|
{
|
|
return "-1";
|
|
}
|
|
|
|
}
|
|
// ArrowDeviceIndex
|
|
// add for CATL YB2 »ñÈ¡¹ØÁªÈÎÎñµÄÖÕµãλÖÃ
|
|
int[] GetDouArrowDeviceIndex(int Fid, int useAwayFork)
|
|
{
|
|
DataView dvb = new DataView();
|
|
int[] rr = new int[3];
|
|
try
|
|
{
|
|
sss.Remove(0, sss.Length);
|
|
// Àý £ºSELECT t.F_NUMPARAM4,t.F_MonitorIndex FROM T_MONITOR_TASK t,T_BASE_DEVICE s WHERE t.F_MANAGETASKINDEX = 70013 and t.f_Deviceindex = s.F_DEVICEINDEX AND s.F_IFCORRELDOUBLEFORK = 1
|
|
// ²é³öË«¶¥ÉýÈÎÎñËͳöµÄÖÕµãºÍÈÎÎñºÅ ûÓÐÓÃÅÅÐòorder by×Ó²éѯ ±ÜÃâÈÎÎñ¶àÅÅÐòʱ¼ä³¤
|
|
sss.Append("SELECT t.F_NUMPARAM4,t.F_MonitorIndex FROM T_MONITOR_TASK t,T_BASE_DEVICE s WHERE t.F_MANAGETASKINDEX = ").Append(Fid).Append(" and t.f_Deviceindex = s.F_DEVICEINDEX AND s.F_IFCORRELDOUBLEFORK = 1");
|
|
dvb = dbo.ExceSQL(sss.ToString()).Tables[0].DefaultView;
|
|
if (dvb.Count > 0)
|
|
{
|
|
// ÖÕµãλÖÃ
|
|
rr[0] = Convert.ToInt32(dvb[0]["F_NUMPARAM4"]);
|
|
// СÈÎÎñºÅ
|
|
rr[1] = Convert.ToInt32(dvb[0]["F_MonitorIndex"]);
|
|
// »õ²æºÅ
|
|
rr[2] = useAwayFork;
|
|
return rr;
|
|
}
|
|
return null;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.GetDouArrowDeviceIndexʱ·¢Éú´íÎó:" + ex.Message;
|
|
return null;
|
|
}
|
|
finally
|
|
{
|
|
dvb.Dispose();
|
|
sql = null;
|
|
}
|
|
|
|
|
|
}
|
|
//»ñµÃÎïÁÏÌõÂëÐÅÏ¢
|
|
public string GetGoodsBarcodeFromManageTask(int TaskIndex)//20130107
|
|
{
|
|
//20100108
|
|
string sql;
|
|
string goodsbarcode = string.Empty;
|
|
try
|
|
{
|
|
int mti = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(TaskIndex);
|
|
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
|
|
//20100108
|
|
sql = string.Format("SELECT GOODS_BARCODE FROM T_Manage_Task WHERE (FID = {0}) AND (F_ManageTaskKindIndex ={1})", fid, mti);
|
|
object ob = dbo.GetSingle(sql);
|
|
if (ob != null)
|
|
{
|
|
goodsbarcode = Convert.ToString(ob);
|
|
}
|
|
|
|
return goodsbarcode;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{//20100108
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.GetGoodsBarcodeFromManageTaskʱ·¢Éú´íÎó:" + ex.Message;
|
|
return "";
|
|
}
|
|
finally
|
|
{//20100108
|
|
sql = null;
|
|
}
|
|
}
|
|
//»ñµÃÎïÁÏÀàÐÍ
|
|
public int GetGoodsTypeFromManageTask(int TaskIndex)//20130107
|
|
{
|
|
//20100108
|
|
string sql;
|
|
int type = 0;
|
|
try
|
|
{
|
|
int mti = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(TaskIndex);
|
|
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
|
|
//20100108
|
|
sql = string.Format("SELECT GOODS_NUM FROM T_Manage_Task WHERE (FID = {0}) AND (F_ManageTaskKindIndex ={1})", fid, mti);
|
|
object ob = dbo.GetSingle(sql);
|
|
if (ob != null)
|
|
{
|
|
type = Convert.ToInt32(ob);
|
|
}
|
|
|
|
return type;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{//20100108
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.GetGoodsTypeFromManageTaskʱ·¢Éú´íÎó:" + ex.Message;
|
|
return 0;
|
|
}
|
|
finally
|
|
{//20100108
|
|
sql = null;
|
|
}
|
|
}
|
|
int GetNowDevice(int taskindex)
|
|
{
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("SELECT F_NumParam1 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
|
|
DataView dvb = dbo.ExceSQL(sss.ToString()).Tables[0].DefaultView;
|
|
if (dvb.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dvb[0]["F_NumParam1"]);
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
int IfInworkBench(int taskindex)
|
|
{
|
|
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(taskindex);
|
|
int mti = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(taskindex);
|
|
object ob = dbo.GetSingle(string.Format("SELECT WORK_MODE FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = {0}) AND (FID = {1})", mti, fid));
|
|
if (ob != null)
|
|
{
|
|
return Convert.ToInt32(ob);
|
|
}
|
|
else
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
}
|
|
List<int> GetNextDevice(int CurRouteIDSub, int CurSerialNumber)
|
|
{
|
|
List<int> keyDevice = new List<int>(); DataView dvRoute;
|
|
try
|
|
{
|
|
//È»ºóÒÀ´ÎÅжϺóÐøÉ豸×î½üµÄÉ豸
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT T_Base_Route_Device.F_DeviceIndex,F_DeviceOrder, T_Base_Route_Device.F_SerialNumber, ").Append(
|
|
"T_Base_Device_Command.F_DeviceCommandIndex,T_Base_Device.F_DeviceKindIndex FROM T_Base_Device_Command ").Append(
|
|
",T_Base_Device,T_Base_Route_Device where T_Base_Device_Command.F_DeviceKindIndex = T_Base_Device.F_DeviceKindIndex").Append(
|
|
" and T_Base_Device.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and F_RouteIDSub=").Append(
|
|
CurRouteIDSub).Append(" and F_SerialNumber > ").Append(CurSerialNumber).Append(" order by F_SerialNumber asc ");
|
|
dvRoute = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvRoute.Count > 0)
|
|
{
|
|
keyDevice.Add(Convert.ToInt32(dvRoute[0]["F_DeviceIndex"]));
|
|
keyDevice.Add(Convert.ToInt32(dvRoute[0]["F_DeviceKindIndex"]));
|
|
keyDevice.Add(Convert.ToInt32(dvRoute[0]["F_SerialNumber"]));
|
|
keyDevice.Add(Convert.ToInt32(dvRoute[0]["F_DeviceOrder"]));
|
|
|
|
}
|
|
return keyDevice;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.GetNextDevice:" + ex.Message;
|
|
return null;
|
|
}
|
|
finally
|
|
{
|
|
keyDevice = null;
|
|
dvRoute = null;
|
|
|
|
}
|
|
}
|
|
|
|
int GetNextDeviceFromTaskDevice(int TaskIndex, int DeviceIndex)
|
|
{//20111226
|
|
int RouteIDSub = 0; int sn = 0;
|
|
DataView dv = dbo.ExceSQL(string.Format("SELECT F_RouteID FROM T_Monitor_Task WHERE (F_MonitorIndex = {0})", TaskIndex)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
RouteIDSub = Convert.ToInt32(dv[0][0]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
try
|
|
{
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_SerialNumber FROM T_Base_Route_Device WHERE (F_RouteIDSub = ").Append(RouteIDSub).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
sn = (int)dv[0]["F_SerialNumber"];
|
|
List<int> nd = GetNextDevice(RouteIDSub, sn);
|
|
if (nd != null)
|
|
{
|
|
return nd[0];
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv = null;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ¸ù¾Ý¶Ñ¶â»ú×ø±ê»ñµÃ£¨ÊÇË«²æ¶ÔµÈ¹ØÁªÕ¾Ì¨µÄ£©Õ¾Ì¨É豸Ë÷Òý
|
|
/// </summary>
|
|
/// <param name="stackdeviceindex"></param>
|
|
/// <param name="stackzxy"></param>
|
|
/// <returns></returns>
|
|
int GetDeviceLaneGateInfoFromStackCoor(int stackdeviceindex, string stackzxy, out int useawayfork)
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(stackdeviceindex);
|
|
if (devinfo != null)
|
|
{
|
|
if (devinfo.VirtualStack > 0)
|
|
{
|
|
stackdeviceindex = devinfo.VirtualStack;
|
|
}
|
|
|
|
}
|
|
int laneway = 0; useawayfork = 0;
|
|
DataView dvl = dbo.ExceSQL(string.Format("SELECT F_LaneDeviceIndex FROM T_Base_LaneInfo WHERE (F_StackIndex = {0})", stackdeviceindex)).Tables[0].DefaultView;
|
|
if (dvl.Count > 0)
|
|
{
|
|
laneway = Convert.ToInt32(dvl[0][0]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
sql.Remove(0, sql.Length);
|
|
// add for CATL YB2 oracle ÐÞ¸ÄF_CorrelDeviceIndex<>'' F_LaneGateDeviceIndex ½«·µ»ØµÄ½á¹û»»³É F_CorrelDeviceIndex ×Ö¶Î ¶ø²»ÊÇ F_LaneGateDeviceIndex
|
|
sql.Append("SELECT F_CorrelDeviceIndex,F_UseAwayFork FROM T_Base_Lane_Gate where F_CorrelDeviceIndex is not null and (F_LaneIndex=").Append(laneway).Append(" and T_Base_Lane_Gate.F_ZXY = '").Append(stackzxy).Append("')");
|
|
DataView dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
useawayfork = Convert.ToInt32(dv[0]["F_UseAwayFork"]);
|
|
// F_LaneGateDeviceIndex
|
|
return Convert.ToInt32(dv[0]["F_CorrelDeviceIndex"]);
|
|
|
|
}
|
|
|
|
|
|
return -1;
|
|
}
|
|
/// <summary>
|
|
/// ¸ù¾Ý¶Ñ¶â»ú×ø±ê»ñµÃ£¨ÊÇË«²æ¶ÔµÈ¹ØÁªÕ¾Ì¨µÄ£©Õ¾Ì¨É豸Ë÷Òý
|
|
/// </summary>
|
|
/// <param name="stackdeviceindex"></param>
|
|
/// <param name="stackzxy"></param>
|
|
/// <returns></returns>
|
|
int GetDeviceLaneGateInfoFromStackCoorlanegate(int stackdeviceindex, string stackzxy, out int useawayfork)
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(stackdeviceindex);
|
|
if (devinfo != null)
|
|
{
|
|
if (devinfo.VirtualStack > 0)
|
|
{
|
|
stackdeviceindex = devinfo.VirtualStack;
|
|
}
|
|
|
|
}
|
|
int laneway = 0; useawayfork = 0;
|
|
DataView dvl = dbo.ExceSQL(string.Format("SELECT F_LaneDeviceIndex FROM T_Base_LaneInfo WHERE (F_StackIndex = {0})", stackdeviceindex)).Tables[0].DefaultView;
|
|
if (dvl.Count > 0)
|
|
{
|
|
laneway = Convert.ToInt32(dvl[0][0]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
sql.Remove(0, sql.Length);
|
|
// add for CATL YB2 oracle ÐÞ¸ÄF_CorrelDeviceIndex<>'' F_LaneGateDeviceIndex ½«·µ»ØµÄ½á¹û»»³É F_CorrelDeviceIndex ×Ö¶Î ¶ø²»ÊÇ F_LaneGateDeviceIndex
|
|
sql.Append("SELECT F_LaneGateDeviceIndex,F_UseAwayFork FROM T_Base_Lane_Gate where F_CorrelDeviceIndex is not null and (F_LaneIndex=").Append(laneway).Append(" and T_Base_Lane_Gate.F_ZXY = '").Append(stackzxy).Append("')");
|
|
DataView dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
useawayfork = Convert.ToInt32(dv[0]["F_UseAwayFork"]);
|
|
// F_LaneGateDeviceIndex
|
|
return Convert.ToInt32(dv[0]["F_LaneGateDeviceIndex"]);
|
|
|
|
}
|
|
|
|
|
|
return -1;
|
|
}
|
|
/// <summary>
|
|
/// ¸üлõ²æ
|
|
/// ²»ÄÜÓм«ÏÞ»õ²æ
|
|
/// </summary>
|
|
/// <param name="fid"></param>
|
|
/// <param name="monitorIndex"></param>
|
|
/// <param name="forkIndex">·ÖÅäµÄ»õ²æ</param>
|
|
/// <param name="deviceIndex"></param>
|
|
public void ChangForkForTask(int fid,int monitorIndex,int oldforkIndex,int deviceIndex,int mti)
|
|
{
|
|
string checkStr = "";
|
|
string checkReplaceStr = "";
|
|
int newFork = 0;
|
|
bool isOutPut = false;//1²æµÄʱºò³ö¿â ²ð³öÀ´¾ÍÊÇ ¿¿½ü»õ¼ÜµÄ¶¥Éý ·¢ËÍÒ²ÊÇ µ«ÊÇ2²æµÄʱºò ²ð³öÀ´×ø±êÊÇ¿¿½ü»õ¼ÜµÄ ·¢Ë͵Äʱºò»á-1 µ¼ÖÂË͵ÄλÖà ²»¶Ô ÔÚ·¢ËÍÊäË͵Äʱºò ÈÎÎñ·¢µÄλÖò»¶Ô
|
|
//int newFork = oldforkIndex == 1 ? 2 : 1;//ǰһ¼¶ÅжÏÁËÖ»Óе±½ûÓûõ²æºÍ·ÖÅäµÄ»õ²æÒ»Ö ²Å½øÀ´ ½øÀ´Ö®ºóÖ±½ÓÈ¡·´ ¾ÍÊÇÖ»ÄÜʹÓõĻõ²æ
|
|
//if (oldforkIndex == 1)
|
|
//{
|
|
// checkStr= deviceIndex.ToString() + ".0";
|
|
// checkReplaceStr = deviceIndex.ToString() + ".1";
|
|
// newFork = 2;
|
|
// isOutPut = true;
|
|
//}
|
|
//if (oldforkIndex == 2)
|
|
//{
|
|
// checkStr = deviceIndex.ToString() + ".1";
|
|
// checkReplaceStr = deviceIndex.ToString() + ".0";//еļì²â¿ª¹Ø
|
|
// newFork = 1;
|
|
// //isOutPut = true;
|
|
//}
|
|
//if (oldforkIndex == 0)//Ó¦¸ÃÊÇÓò»ÉÏ
|
|
//{
|
|
newFork = ChangeForkWhenEnableUsed(deviceIndex) == 1 ? 2 : 1;
|
|
if (newFork == 1)
|
|
{
|
|
//Èç¹û¼ì²âÊÇ2²æµÄ ¸Ä³É1²æ
|
|
checkStr = deviceIndex.ToString() + ".1";
|
|
checkReplaceStr = deviceIndex.ToString() + ".0";
|
|
}
|
|
if (newFork == 2)
|
|
{
|
|
checkStr = deviceIndex.ToString() + ".0";
|
|
checkReplaceStr = deviceIndex.ToString() + ".1";
|
|
isOutPut = true;
|
|
}
|
|
//}
|
|
|
|
if (isOutPut)
|
|
{
|
|
int manageKind = GetFCONTROLTASKTYPEFromManageTask(mti,fid);
|
|
//int order = getOrderFromMonitor(monitorIndex, deviceIndex);
|
|
if (manageKind == 2)//&& order==5
|
|
{
|
|
int[] zxy = GetCoordinatesFromMonitorTask(monitorIndex);//»ñȡָÁîµÄÈ¡»õ ºÍËÍ»õ ×ø±ê
|
|
StringBuilder zxystart = new StringBuilder();
|
|
StringBuilder zxyend = new StringBuilder();
|
|
|
|
if (zxy != null)
|
|
{
|
|
//zxyend.Append((zxy[3].ToString().Length == 1 ? "0" + zxy[3].ToString() : zxy[3].ToString())).Append("-").Append(
|
|
// ((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString()))).Append("-").Append(
|
|
// ((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString())));
|
|
//zxystart.Append((zxy[1].ToString().Length == 1 ? "0" + zxy[1].ToString() : zxy[1].ToString())).Append("-").Append(
|
|
// ((zxy[2].ToString().Length == 1) ? ("0" + zxy[2].ToString()) : (zxy[2].ToString()))).Append("-").Append(
|
|
// ((zxy[3].ToString().Length == 1) ? ("0" + zxy[3].ToString()) : (zxy[3].ToString())));
|
|
int n5 = zxy[4] + 1;//¼Ó1Ö®ºóÔÙ·¢ËÍʱºò¼õ1 ʱ´ú¼ªÀû ¾Íµ¥²à³ö¿â ÇÒ×ø±êÊÇ´óÁÐ Ö»´¦ÀíÁË2²æËÍ»õµÄ×ø±ê
|
|
//ÅжÏËÍ»õÖÕµãÊDz»ÊÇվ̨
|
|
|
|
//Ð޸ĶѶâ»úËÍ»õ×ø±ê
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_NumParam5=").Append(n5).Append(" WHERE (F_ManageTaskIndex = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(")").Append(" AND F_DeviceIndex = ").Append(deviceIndex);//.Append(" and F_deviceCommandIndex=5")
|
|
dbo.ExecuteSql(sql.ToString());
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//Èç¹ûÊÇÈë¿â ͨ¹ý×ø±êÈ¡»õ²æ
|
|
//if (controlTaskType == 1 || controlTaskType == 3)
|
|
//{
|
|
//ÉêÇëµã¶¼ÊÇ¿¿½ü»õ¼ÜλÖà Õâ¸öʱºò վ̨µÄ¼ì²âÌõ¼þÊDz»ÐèÒª¸Ä±äµÄ Ö»ÐèÒª¸Ä¶Ñ¶â»ú̽»õÌõ¼þ
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_AheadDetect=Replace(F_AheadDetect,'")
|
|
.Append(checkStr).Append("','").Append(checkReplaceStr).Append("') WHERE F_ManageTaskIndex = ")
|
|
.Append(fid).Append(" AND F_DeviceIndex = ").Append(deviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_UseAwayFork = '").Append(newFork).Append("' WHERE (F_ManageTaskIndex = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(") AND F_DeviceIndex = ").Append(deviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Manage_Task SET FUseAwayFork = '").Append(newFork).Append("' WHERE (FID = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//}
|
|
//Èç¹ûÊdzö¿â ËÍ»õλ ×ø±ê
|
|
//if (controlTaskType == 2)
|
|
//{
|
|
|
|
//}
|
|
//µ¹¿â
|
|
//if (controlTaskType == 3)
|
|
//{
|
|
|
|
//}
|
|
}
|
|
/// <summary>
|
|
/// ÅжÏÊÇ·ñÓнûÓûõ²æ
|
|
/// </summary>
|
|
/// <param name="deviceIndex"></param>
|
|
/// <param name="fork"></param>
|
|
/// <returns></returns>
|
|
public int ChangeForkWhenEnableUsed(int deviceIndex)
|
|
{
|
|
int returnFork = 0;
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select F_stackindex,F_ENABLEUSED from T_BASE_STACKINFO where F_stackindex=").Append(deviceIndex);
|
|
DataView dw = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dw.Count > 0)
|
|
{
|
|
if (Convert.ToInt32(dw[0]["F_ENABLEUSED"]) != 0)
|
|
{
|
|
//if (Convert.ToInt32(dw[0]["F_ENABLEUSED"]) == 1)//1²æ½ûÓÃ
|
|
//{
|
|
// returnFork = 2;
|
|
//}
|
|
//if (Convert.ToInt32(dw[0]["F_ENABLEUSED"]) == 2)//2²æ½ûÓÃ
|
|
//{
|
|
// returnFork = 1;
|
|
//}
|
|
returnFork = Convert.ToInt32(dw[0]["F_ENABLEUSED"]);
|
|
}
|
|
}
|
|
return returnFork;
|
|
}
|
|
//ÿ´Î·¢ËÍÈÎÎñǰִÐз¾¶µ÷Õû T_Base_Lane_Gate ÐÞ¸Älane gate ±í µÄÌáǰ¼ì²â add for CATL YB2 Ìæ»»Ìáǰ¼ì²â
|
|
public bool SetLaneGateReplace(int mti, int fid, int DeviceIndex, int TaskIndex, int UseAwayFork)
|
|
{//20120820
|
|
//201112231ͬʱ¿¼Âǵ÷Õû·¾¶Ëùѡվ̨ºÍÌáǰ¼ì²âÓÐÎÊÌâ
|
|
if (UseAwayFork > 0)
|
|
{
|
|
int[] zxy = GetCoordinatesFromMonitorTask(TaskIndex);
|
|
StringBuilder zxystr = new StringBuilder();
|
|
if (zxy != null)
|
|
{
|
|
zxystr.Append((zxy[3].ToString().Length == 1 ? "0" + zxy[3].ToString() : zxy[3].ToString())).Append("-").Append(
|
|
((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString()))).Append("-").Append(
|
|
((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString())));
|
|
}
|
|
int LaneGateDevice = 0; int oldawayfork = 0; int LaneGateDevicetrue = 0;
|
|
//oNextDevice ·¾¶ÖÐÒѾ²ð·Ö³öµÄ³ö¿âվ̨±àºÅ£¨1Áлò2ÁжÔÓ¦µÄÉ豸±àºÅ£© oldawayfork ²é³öÖµÓÀÔ¶ÊÇ1 2²æÖµÁÐÖµ¼Ó1
|
|
int oNextDevice = GetDeviceLaneGateInfoFromStackCoor(DeviceIndex, zxystr.ToString(), out oldawayfork);
|
|
// add for CATL YB2 ·µ»ØÕæÊµµÄF_LaneGateDeviceIndex
|
|
int oNextDevicetrue = GetDeviceLaneGateInfoFromStackCoorlanegate(DeviceIndex, zxystr.ToString(), out oldawayfork);
|
|
if (oNextDevice > 0)
|
|
{
|
|
// ËÍ»õÁÐÖµCATL
|
|
int n5 = zxy[4]; //Convert.ToInt32(sp[1]);
|
|
|
|
if (UseAwayFork == oldawayfork || oldawayfork==0)//²»ÐèÒªÖ¸¶¨»õ²æ
|
|
{
|
|
//²»µ÷Õû
|
|
return false;//20120217
|
|
}
|
|
else//½«oldawayforkÌæ»»ÎªUseAwayFork
|
|
{
|
|
//¶Ñ¶â»úµÄÔµãÊôÐÔ
|
|
char[] cc = new char[1] { ',' };
|
|
string[] lc = devinfo.StackZeroColLayer.Split(cc);
|
|
// add for CATL YB2 ÔÚstackinfo ±íÀïµÄ F_ZeroColLayer ×Ö¶ÎÅäÖöѶâ»ú·½Ïò 0,1 ÔµãΪ0£¬1 £¬Èç¹ûÅäÖóÉ40£¬1Ôµã¾ÍÊÇ´Ó
|
|
// 40,1 µÝ¼õ È·¶¨¶Ñ¶â»ú»õ²æ³ö¿â·½Ïò ÊǵÝÔöµÄ1£¬2 »¹ÊǵݼõµÄ2£¬1
|
|
if (Convert.ToInt32(lc[0]) < n5)//Õý³£Çé¿ö£¬»õ²æË³ÐòºÅºÍÁÐ˳ÐòºÅÏàͬ
|
|
{
|
|
n5 = n5 + (UseAwayFork - oldawayfork);
|
|
}
|
|
else
|
|
{//Ë«¶Ñ¶â»úµÄÔµãÔÚ×î´óÁеĻõ²æË³ÐòºÅºÍÁÐ˳ÐòºÅÏà·´
|
|
n5 = n5 - (UseAwayFork - oldawayfork);
|
|
}
|
|
zxystr.Clear();
|
|
zxystr.Append((zxy[3].ToString().Length == 1 ? "0" + zxy[3].ToString() : zxy[3].ToString())).Append("-").Append(
|
|
((n5.ToString().Length == 1) ? ("0" + n5.ToString()) : (n5.ToString()))).Append("-").Append(
|
|
((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString())));
|
|
LaneGateDevice = GetDeviceLaneGateInfoFromStackCoor(DeviceIndex, zxystr.ToString(), out oldawayfork);
|
|
// add for CATL YB2
|
|
LaneGateDevicetrue = GetDeviceLaneGateInfoFromStackCoorlanegate(DeviceIndex, zxystr.ToString(), out oldawayfork);
|
|
//Ìæ»»Â·¾¶ add for CATL YB2 Ôö¼Ó¸ü»»µ±Ç°»õ²æËÍ»õʱºò ÊÇÄĸö»õ²æµÄÌáǰ¼ì²â¸ü»»
|
|
// ËͳöµÄËÍ»õվ̨ûÓÐÇø·ÖÔ¶½ü ÐèÒªÒªÇóµçÆø½«½üÔ¶Ë«¶¥Éý µÄ¸ßλºÍÓлõ ·Ö±ðÉϱ¨ÔÚ.2 ºÍ .0 ÉÏ
|
|
|
|
|
|
//Ð޸ĶѶâ»úÌáǰ¼ì²â£¬RunLock
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_RunningLock='").Append(LaneGateDevice).Append("', F_AheadDetect=Replace(F_AheadDetect,'")
|
|
.Append(oNextDevice).Append("','").Append(LaneGateDevice).Append("') WHERE (F_ManageTaskIndex = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(") AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//Ð޸ĶѶâ»úËÍ»õ×ø±ê
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_NumParam5=").Append(n5).Append(" WHERE (F_ManageTaskIndex = ")
|
|
.Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(")").Append(" AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//ÐÞ¸ÄÊäËÍ»ú£¬Ìáǰ¼ì²â£¬RunLock,F_NumParam1
|
|
//add for CATL YB2 Ð޸ĶѶâ»ú»õ²æµÄÌáǰ¼ì²â ÅäÖÃÔÚ lane_gate ±íµÄ F_NearDetect ×Ö¶Î ÊÇÊý×éµÚ5¸ö
|
|
string[] cdiold = GetLanewayDeviceInfoFromStackDev(DeviceIndex, oNextDevicetrue);
|
|
string[] cdinew = GetLanewayDeviceInfoFromStackDev(DeviceIndex, LaneGateDevicetrue);
|
|
if (cdiold != null && cdinew != null)
|
|
{
|
|
//add for CATL YB2 Ð޸ĶѶâ»úËͳöºÍÈ¡»õµÄ»õ²æ¼ì²â ÅäÖÃÔÚLange_Gate ±íµÄ F_NearDetect ×Ö¶Î
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET F_AheadDetect=Replace(F_AheadDetect,'").Append(cdiold[5]).Append("','").Append(cdinew[5])
|
|
.Append("') WHERE (F_ManageTaskIndex = ").Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(mti).Append(") AND F_DeviceIndex = ").Append(DeviceIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
}
|
|
|
|
#region ²»Í¨ÓÃд·¨ ×¢ÊÍ
|
|
//if (UseAwayFork == 1)
|
|
//{
|
|
// sql.Clear();
|
|
// sql.Append("UPDATE T_Monitor_Task SET F_AheadDetect=Replace(F_AheadDetect,'").Append(oNextDevice.ToString().Substring(0, 5) + ".1").Append("','").Append(LaneGateDevice.ToString().Substring(0, 5) + ".0")
|
|
// .Append("') WHERE (F_ManageTaskIndex = ").Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
// .Append(mti).Append(") AND F_DeviceIndex = ").Append(oNextDevice);
|
|
// dbo.ExecuteSql(sql.ToString());
|
|
|
|
//}
|
|
//if (UseAwayFork == 2)
|
|
//{
|
|
// sql.Clear();
|
|
// sql.Append("UPDATE T_Monitor_Task SET F_AheadDetect=Replace(F_AheadDetect,'").Append(oNextDevice.ToString().Substring(0, 5) + ".0").Append("','").Append(LaneGateDevice.ToString().Substring(0, 5) + ".1")
|
|
// .Append("') WHERE (F_ManageTaskIndex = ").Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
// .Append(mti).Append(") AND F_DeviceIndex = ").Append(oNextDevice);
|
|
// dbo.ExecuteSql(sql.ToString());
|
|
//}
|
|
#endregion
|
|
// add for CATL YB2 ×¢ÊÍ
|
|
// sql.Clear();
|
|
//sql.Append("UPDATE T_Monitor_Task SET F_RouteID=").Append(GetRouteIDsub(LaneGateDevice))
|
|
// .Append(",F_DeviceIndex=").Append(LaneGateDevice).Append(", F_NumParam1=").Append(LaneGateDevice)
|
|
// .Append(", F_AheadDetect=Replace(F_AheadDetect,'").Append(oNextDevice).Append("','").Append(LaneGateDevice)
|
|
// .Append("') WHERE (F_ManageTaskIndex = ").Append(fid).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
// .Append(mti).Append(") AND F_DeviceIndex = ").Append(oNextDevice);
|
|
//dbo.ExecuteSql(sql.ToString());
|
|
return true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
return false;//20120217
|
|
}
|
|
}
|
|
int GetGoodsHigh(int taskindex)
|
|
{
|
|
DataView dv = dbo.ExceSQL(string.Format("SELECT CELL_MODEL FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = {0}) AND (FID = {1})", Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(taskindex), Model.CGeneralFunction.GetManageTaskIndexfromMonitor(taskindex))).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
int gh = 1;
|
|
//P¹¤×°°å,B±ê×¼,G¸ß»õλ,D´ó»õλ
|
|
switch (dv[0][0].ToString().ToUpper())
|
|
{
|
|
case "P":
|
|
gh = 3;
|
|
break;
|
|
case "B":
|
|
gh = 2;
|
|
break;
|
|
case "G":
|
|
gh = 1;
|
|
break;
|
|
//case "D":
|
|
// gh = 4;
|
|
// break;
|
|
default:
|
|
gh = 1;
|
|
break;
|
|
}
|
|
return gh;
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
int MinRouteID(int startdevice, int enddevice, int nowdevice, object useAwayfork)
|
|
{
|
|
try
|
|
{
|
|
StringBuilder dff = new StringBuilder();
|
|
if (useAwayfork.ToString() == "-")
|
|
{
|
|
dff.Append("F_UseAwayFork<>'n'");
|
|
}
|
|
else
|
|
{
|
|
dff.Append("(F_UseAwayFork='").Append(useAwayfork).Append("' or F_UseAwayFork='-' )");//20101028
|
|
}
|
|
//Ñ¡Ôñ×î¶Ìµ÷¶È·¾¶²¢ÇÒÅжϴË·¾¶ÉÏÊÇ·ñÓÐÉ豸·¢Éú¹ÊÕÏ
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT distinct(T_Base_Route_Device.F_RouteIDSub) FROM T_Base_Device,T_Base_Route_Device,").Append(
|
|
"T_Base_Route where T_Base_Route_Device.F_RouteID = T_Base_Route.F_RouteID and ").Append(
|
|
" T_Base_Route_Device.F_DeviceIndex = T_Base_Device.F_DeviceIndex and ").Append(
|
|
" F_StartDevice=").Append(startdevice).Append(" and F_EndDevice=").Append(enddevice).Append(" and F_Status=1 and T_Base_Device.F_DeviceIndex =").Append(nowdevice).Append(" and ").Append(dff.ToString());
|
|
DataView dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
List<double> minroute = new List<double>();//0,routIDSub£»1£¬Â·¾¶×îСֵ
|
|
if (dv.Count == 0)
|
|
{
|
|
//RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs("tsStatus", "ÆðµãÉ豸£º" + startdevice + "ºÍÖÕµãÉ豸£º" + enddevice + "Ö®¼ä·¾¶²»¿ÉÓã¡");
|
|
//OnRefreshMonitor(rme);
|
|
return -1;
|
|
}
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_RouteIDSub, F_LockedState FROM T_Base_Device,T_Base_Route_Device WHERE ").Append(
|
|
" T_Base_Device.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and (T_Base_Route_Device.F_RouteIDSub = ").Append(
|
|
dv[i]["F_RouteIDSub"]).Append(") AND (T_Base_Device.F_LockedState = - 1)");
|
|
DataView dvd = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvd.Count > 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
List<double> route = new List<double>();//0,routIDSub£»1,²½³¤£»2£¬Â·¾¶Ê¹ÓÃÆµÂÊ£»3£¬Â·¾¶É豸ÈÎÎñÊý
|
|
//·¾¶²½³¤£¨É豸×ÜÊý£©×î¶Ì£¨È¨ÖØ0.3£©£¬Â·¾¶Ê¹ÓÃÆµÂÊ×îС£¨È¨ÖØ0.3£©µÄ·¾¶£¬Â·¾¶É豸ÈÎÎñÊý£¨È¨ÖØ0.3£©
|
|
|
|
route.Add(Convert.ToDouble(dv[i]["F_RouteIDSub"]));//RouteIDSub
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select count(F_DeviceIndex) as steps from T_Base_Route_Device where F_RouteIDSub="
|
|
).Append(dv[i]["F_RouteIDSub"]);
|
|
DataView dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv1.Count > 0)
|
|
{
|
|
route.Add(Convert.ToDouble(dv1[0]["steps"]));//²½³¤
|
|
//route.Add(0);
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
//·¾¶Ê¹ÓÃÆµÂÊ£ºÂ·¾¶Ö´Ðе÷¶ÈÈÎÎñµÄÊýÁ¿
|
|
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT COUNT(DISTINCT F_ManageTaskIndex) AS ManCount FROM T_Monitor_Task GROUP BY F_RouteID HAVING (F_RouteID = ").Append(dv[i]["F_RouteIDSub"]).Append(")");
|
|
DataView dv2 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv2.Count > 0)
|
|
{
|
|
double a = 0;
|
|
if (double.TryParse(dv2[0]["ManCount"].ToString(), out a) == true)
|
|
{
|
|
route.Add(Convert.ToDouble(dv2[0]["ManCount"]));//·¾¶Ê¹ÓÃÆµÂÊ
|
|
}
|
|
else
|
|
{
|
|
route.Add(0);//·¾¶Ê¹ÓÃÆµÂÊ
|
|
}
|
|
}
|
|
else
|
|
{
|
|
route.Add(0);//·¾¶Ê¹ÓÃÆµÂÊ
|
|
}
|
|
//·¾¶É豸ÈÎÎñÊý
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT COUNT(T_Monitor_Task.F_MonitorIndex) AS mtask FROM T_Monitor_Task ,T_Base_Route_Device where (T_Monitor_Task.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex) and (T_Base_Route_Device.F_RouteIDSub = ").Append(dv[i]["F_RouteIDSub"]).Append(")");
|
|
dv2 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv2.Count > 0)
|
|
{
|
|
double a = 0;
|
|
if (double.TryParse(dv2[0]["mtask"].ToString(), out a) == true)
|
|
{
|
|
route.Add(Convert.ToDouble(dv2[0]["mtask"]));//·¾¶É豸ÈÎÎñÊý
|
|
}
|
|
else
|
|
{
|
|
route.Add(0);//·¾¶É豸ÈÎÎñÊý
|
|
}
|
|
}
|
|
else
|
|
{
|
|
route.Add(0);//·¾¶É豸ÈÎÎñÊý
|
|
}
|
|
|
|
//Çó×î¶Ì·¾¶£¨£¨Â·¾¶²½³¤*0.3+·¾¶Ê¹ÓÃÆµÂÊ*0.3+É豸ռÓÐÊý*0.3£©µÄ×îСֵ£©
|
|
if (minroute.Count == 0)
|
|
{
|
|
minroute.Add(route[0]);
|
|
minroute.Add(route[1] * 0.3 + route[2] * 0.3 + route[3] * 0.3);
|
|
}
|
|
else
|
|
{
|
|
if (minroute[1] > (route[1] * 0.3 + route[2] * 0.3 + route[3] * 0.3))
|
|
{
|
|
minroute[0] = route[0];
|
|
minroute[1] = (route[1] * 0.3 + route[2] * 0.3 + route[3] * 0.3);
|
|
}
|
|
}
|
|
}
|
|
if (minroute.Count > 0)
|
|
{
|
|
return Convert.ToInt32(minroute[0]);
|
|
}
|
|
else
|
|
{
|
|
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.MinRouteIDʱ·¢Éú´íÎó:" + ex.Message;
|
|
return -1;
|
|
}
|
|
|
|
}
|
|
int GetRouteIDsub(int device)
|
|
{
|
|
DataView dv = dbo.ExceSQL("SELECT F_RouteIDSub, F_DeviceIndex, F_RouteID FROM T_Base_Route_Device where F_DeviceIndex=" + device + "").Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0]["F_RouteIDSub"]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
int[] GetCoordinatesFromMonitorTask(int TaskIdx)
|
|
{
|
|
//20100108
|
|
DataView dv;
|
|
int[] gc;
|
|
try
|
|
{
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6 from T_Monitor_Task where F_MonitorIndex=").Append(TaskIdx);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
gc = new int[6];
|
|
|
|
|
|
//F_NumParam1--z,x--2,y--3;F_NumParam4--z,5--x,6--y
|
|
if (dv.Count > 0)
|
|
{
|
|
gc[0] = Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
gc[1] = Convert.ToInt32(dv[0]["F_NumParam2"]);
|
|
gc[2] = Convert.ToInt32(dv[0]["F_NumParam3"]);
|
|
gc[3] = Convert.ToInt32(dv[0]["F_NumParam4"]);
|
|
gc[4] = Convert.ToInt32(dv[0]["F_NumParam5"]);
|
|
gc[5] = Convert.ToInt32(dv[0]["F_NumParam6"]);
|
|
return gc;
|
|
}
|
|
return null;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv = null;
|
|
gc = null;
|
|
}
|
|
}
|
|
string GetUseAwayForkFromLaneGate(int device)
|
|
{
|
|
DataView dv = dbo.ExceSQL(string.Format("SELECT F_UseAwayFork FROM T_Base_Lane_Gate where F_LaneGateDeviceIndex={0}", device)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return dv[0][0].ToString();
|
|
}
|
|
else
|
|
{
|
|
return "-";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ¸ù¾Ý¶Ñ¶â»úºÍÉ豸Ë÷Òý»ñµÃÉ豸ÏïµÀ³öÈë¿ÚÐÅÏ¢£º¡¾0¡¿É豸Ë÷Òý¡¾1¡¿¶¥Éý¸ßλ¼ì²â¡¾2¡¿¶¥ÉýµÍλ¼ì²â
|
|
/// ¡¾3¡¿ÓÐÎï¼ì²â¡¾4¡¿ÔËÐмà²â¡¾5¡¿½üÏïµÀÓÐÎï¼ì²â¡¾6¡¿Ô¶ÏïµÀÓÐÎï¼ì²â¡¾7¡¿ÊÇ·ñʹÓÃÔ¶»õ²æ¡¾8¡¿¹ØÁªÉ豸Ë÷Òý¡¾9¡¿»õλ±àÂë
|
|
/// </summary>
|
|
/// <param name="stack"></param>
|
|
/// <param name="device"></param>
|
|
/// <returns></returns>
|
|
public string[] GetLanewayDeviceInfoFromStackDev(int stack, int device)
|
|
{
|
|
DataView dvl = new DataView(); DataView dv = new DataView();
|
|
try
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(stack);
|
|
if (devinfo!=null)
|
|
{
|
|
if (devinfo.VirtualStack > 0)
|
|
{
|
|
stack = devinfo.VirtualStack;
|
|
}
|
|
}
|
|
|
|
int laneway = 0;
|
|
dvl = dbo.ExceSQL(string.Format("SELECT F_LaneDeviceIndex FROM T_Base_LaneInfo WHERE (F_StackIndex = {0})", stack)).Tables[0].DefaultView;
|
|
if (dvl.Count > 0)
|
|
{
|
|
laneway = Convert.ToInt32(dvl[0][0]);
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
string[] rr = new string[10];
|
|
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
//add for CATL YB2
|
|
sql.Append("SELECT * FROM T_Base_Lane_Gate where F_CorrelDeviceIndex is not null and (F_LaneIndex=").Append(laneway).Append(" and T_Base_Lane_Gate.F_LaneGateDeviceIndex = ").Append(device).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
rr[0] = dv[0]["F_LaneGateDeviceIndex"].ToString();
|
|
rr[1] = dv[0]["F_HighDetect"].ToString();
|
|
rr[2] = dv[0]["F_LowDetect"].ToString();
|
|
rr[3] = dv[0]["F_HavingDetect"].ToString();
|
|
rr[4] = dv[0]["F_RunDetect"].ToString();
|
|
rr[5] = dv[0]["F_NearDetect"].ToString();
|
|
rr[6] = dv[0]["F_FarDetect"].ToString();
|
|
rr[7] = dv[0]["F_UseAwayFork"].ToString();
|
|
rr[8] = dv[0]["F_CorrelDeviceIndex"].ToString();
|
|
rr[9] = dv[0]["F_zxy"].ToString();
|
|
return rr;
|
|
}
|
|
else
|
|
|
|
return null;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dvl.Dispose();
|
|
}
|
|
}
|
|
}
|
|
}
|