using System ;
using System.Collections.Generic ;
using System.Text ;
using ICommLayer ;
using DBFactory ;
using System.Data ;
using Microsoft.VisualBasic ;
using System.Threading ;
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="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
string barcode = GetBarcodeFromMonitorIndex ( TaskIndex ) ;
int sn = 0 ; int UseAwayFork = 0 ;
devinfo = Model . CGetInfo . GetDeviceInfo ( DeviceIndex ) ;
if ( devinfo . YCoor = = 0 ) return false ;
try
{
int [ ] sendmes = new int [ 1 0 ] { 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 ] ;
//int[] type = new int[devinfo.ForkAmount];//����
//if (devinfo.IfCorrelDoubleFork == "1")
//{
#region �����Ѷ���
StringBuilder [ ] itemnames = { new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) } ; //�����������ϵ�����������Z
StringBuilder [ ] itemvalues = { new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) } ;
if ( StartZ % 4 = = 0 )
{
StartZ = 4 ;
}
else
{
StartZ = StartZ % 4 ;
}
if ( EndZ % 4 = = 0 )
{
EndZ = 4 ;
}
else
{
EndZ = EndZ % 4 ;
}
int StartZ2 = 0 ;
int EndZ2 = 0 ;
sn = Convert . ToInt32 ( devinfo . Dbw1Address ) ;
itemnames [ 0 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 2 ) ) . Append ( ",i" ) ;
itemvalues [ 0 ] . Append ( TaskIndex . ToString ( ) ) ;
itemnames [ 1 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 4 ) ) . Append ( ",b" ) ;
itemvalues [ 1 ] . Append ( ( StartX ) . ToString ( ) ) ;
itemnames [ 2 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 5 ) ) . Append ( ",b" ) ;
itemvalues [ 2 ] . Append ( StartY . ToString ( ) ) ;
itemnames [ 3 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 6 ) ) . Append ( ",b" ) ;
itemvalues [ 3 ] . Append ( StartZ . ToString ( ) ) ;
itemnames [ 4 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 7 ) ) . Append ( ",b" ) ;
// itemvalues[4].Append(EndZ.ToString());
itemvalues [ 4 ] . Append ( ( EndX ) . ToString ( ) ) ;
itemnames [ 5 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 8 ) ) . Append ( ",b" ) ;
//itemvalues[5].Append((EndX).ToString());
itemvalues [ 5 ] . Append ( EndY . ToString ( ) ) ;
itemnames [ 6 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 9 ) ) . Append ( ",b" ) ;
// itemvalues[6].Append(EndY.ToString());
itemvalues [ 6 ] . Append ( EndZ . ToString ( ) ) ;
itemnames [ 7 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 1 0 ) ) . Append ( ",b" ) ;
itemvalues [ 7 ] . Append ( EndZ . ToString ( ) ) ;
itemnames [ 8 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 1 1 ) ) . Append ( ",b" ) ;
itemvalues [ 8 ] . Append ( EndZ2 . ToString ( ) ) ;
itemnames [ 9 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 1 ) ) . Append ( ",b" ) ;
itemvalues [ 9 ] . Append ( Order . ToString ( ) ) ;
itemnames [ 1 0 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 0 ) ) . Append ( ",b" ) ;
itemvalues [ 1 0 ] . Append ( MessageIndex . ToString ( ) ) ;
CCommonOPCClient . Hostname = CommonClassLib . AppSettings . GetValue ( "HostName" ) ; //20090922 devinfo.RemoteIP;
CCommonOPCClient . ProgID = CommonClassLib . AppSettings . GetValue ( "OPCProgID" ) ;
CCommonOPCClient . PlcConnectionID = devinfo . S7Connection ; //20110216
//xiogan�������� 2023-9-11 zjx
//if ( MessageIndex.ToString() == "0" && StartZ.ToString() == "2" && StartX.ToString() == "0" && StartY.ToString() == "0" && EndZ.ToString() == "2" && EndX.ToString() == "0" && EndY.ToString() == "0") { }
//else
//{
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 ( ) ) ;
if ( MessageIndex = = 0 | | MessageIndex = = 1 | | MessageIndex = = 2 | | MessageIndex = = 4 )
{
CommonClassLib . CCarryConvert . WriteDarkCasket ( "OPCClient" , "���ͶѶ�������" , DeviceIndex . ToString ( ) , sss . ToString ( ) ) ;
}
//}
#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 ;
}
}
//public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ)
//{//20120820
// string barcode = GetBarcodeFromMonitorIndex(TaskIndex);
// int sn = 0; int UseAwayFork = 0;
// devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
// int lanenum = 0;
// //if (devinfo.YCoor == 0) return false;
// 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;
// long mti = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(TaskIndex);
// long fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
// #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")
// {
// UseAwayFork = Model.CGeneralFunction.GetDoubleForkFromST_CELL(StartZ, StartX, StartY, Model.CGeneralFunction.GetWAREHOUSEFromSTCELL(DeviceIndex));
// if (UseAwayFork == 0)
// {
// 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;
// }
// }
// }
// 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;
// }
// //20111226ͬʱ���ǵ���·����ѡվ̨����ǰ����
// 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
// }
// 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;
// }
// //20111226ͬʱ���ǵ���·����ѡվ̨����ǰ����
// 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);
// //����������ԭ���ľ�����С��������
// 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;
// }
// 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))
// {
// 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
// //�ͶѶ���ԭ����������ȡ����ֵ��ֵ��С����1�棬�����Ѿ��������IJ�Ҫ�ظ�
// if (UseAwayFork == 0)
// {
// UseAwayFork = forkno;
// }
// }
// else
// {
// UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(task));
// }
// #region ���������Ѿ�����������ռ�ã������л����֣���Ҫ��������ϵ
// if (IfDeleteRelative(mti, fid, task, UseAwayFork) == true)
// {
// return false;
// }
// #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();
// dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET F_RELATIVECONTORLID = - 1 WHERE (F_ManageTaskKindIndex = {0}) AND (FID = {1})", mti, fid));
// return false;
// }
// forkno = UseAwayFork;
// //20111226ͬʱ���ǵ���·����ѡվ̨����ǰ����
// 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)
// {
// foreach (int temptask in mutitasks)
// {
// UseAwayFork = Convert.ToInt32(Model.CGeneralFunction.GetUseAwayFork(temptask));
// if (temptask == TaskIndex)
// {
// 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;
// }
// }
// }
// }
// 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)
// {
// 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));
// #region ͬ�������첽����
// int[] mutitasks = Model.CGeneralFunction.MutiForkIfSync(TaskIndex, DeviceIndex, devinfo.DeviceKind);
// if (mutitasks != null)
// {
// 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)
// {
// if (endz[UseAwayFork - 1] % 2 == 0)
// {
// endz[UseAwayFork - 1] = 2;
// }
// else
// {
// endz[UseAwayFork - 1] = 1;
// }
// }
// }
// }
// else
// {
// if (EndX > zeroXcoor)
// {
// 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
// }
// #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();
// }
// #endregion
// 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");
// itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
// itemvalues[2].Append(TaskIndex.ToString());
// itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",b");
// itemvalues[3].Append(StartX.ToString());
// itemnames[4].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 5)).Append(",b");
// itemvalues[4].Append(StartY.ToString());
// 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;
// itemnames[arrsn + 1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + arrsn + 2)).Append(",b");
// itemvalues[arrsn + 1].Append(EndX.ToString());
// itemnames[arrsn + 2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + arrsn + 3)).Append(",b");
// itemvalues[arrsn + 2].Append(EndY.ToString());
// 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(";");
// }
// 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)
// {
// _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());
// 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(";").Append(strap);
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "���Ͷ����Ѷ�������", DeviceIndex.ToString(), sss.ToString());
// #endregion
// }
// else
// {
// #region �����Ѷ���
// StringBuilder[] itemnames = { new StringBuilder(""), 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(""), new StringBuilder("") };
// #region add by lyj 20171122 ת��������
// //if (Order == 4 || Order == 2)
// //{
// // if (StartZ != 0)
// // {
// // if (StartZ % 2 == 1)
// // {
// // lanenum = (StartZ + 1) / 2;
// // }
// // else
// // {
// // lanenum = StartZ / 2;
// // }
// // }
// //}
// //else if (Order == 5 || Order == 3)
// //{
// // if (EndZ != 0)
// // {
// // if (EndZ % 2 == 1)
// // {
// // lanenum = (EndZ + 1) / 2;
// // }
// // else
// // {
// // lanenum = EndZ / 2;
// // }
// // }
// //}
// #endregion
// #region ת����Z��������
// if (StartZ < 4)
// {
// StartZ = StartZ % 4;
// }
// if (EndZ < 4)
// {
// EndZ = EndZ % 4;
// }
// #endregion
// //byte0,byte1,byte2,byte3,byte4
// // int1 int3
// //int0(byte0,byte1);int1(byte1,byte2);int2(byte2,byte3);int3(byte3,byte4)
// sn = Convert.ToInt32(devinfo.Dbw1Address);
// itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
// itemvalues[0].Append(TaskIndex.ToString());
// itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 6)).Append(",i");
// itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 8)).Append(",i");
// itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 10)).Append(",i");
// if (Order == 3)
// {
// itemvalues[1].Append((EndZ).ToString());
// itemvalues[2].Append((EndX).ToString());
// itemvalues[3].Append((EndY).ToString());
// }
// else
// {
// itemvalues[1].Append((StartZ).ToString());
// itemvalues[2].Append((StartX).ToString());
// itemvalues[3].Append((StartY).ToString());
// }
// itemnames[8].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",i");
// itemvalues[8].Append(Order.ToString());
// itemnames[9].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",i");
// itemvalues[9].Append(MessageIndex.ToString());
// //#region �Ѷ��������� lzm20250407
// //itemnames[10].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 20)).Append(",i");
// //itemvalues[10].Append(barcode.ToString());
// //#endregion
// #region
// //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)
// //{
// // _commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder����������" + CCommonOPCClient.OpcError;
// // return false;
// //}
// //itemvalues[9].Remove(0, itemvalues[9].Length);
// //itemvalues[9].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("**������" + lanenum.ToString());
// //if (MessageIndex == 0)
// //{
// //}
// //CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "���ͶѶ�������", DeviceIndex.ToString(), sss.ToString());
// ////if (WriteBarcode(DeviceIndex, TaskIndex) == false)
// ////{
// //// return false;
// ////}
// //StringBuilder[] itemnames = { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") };//�����������ϵ�����������Z
// //StringBuilder[] itemvalues = { new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), new StringBuilder("") };
// //if (StartZ % 4 == 0)
// //{
// // StartZ = 4;
// //}
// //else
// //{
// // StartZ = StartZ % 4;
// //}
// //if (EndZ % 4 == 0)
// //{
// // EndZ = 4;
// //}
// //else
// //{
// // EndZ = EndZ % 4;
// //}
// //int StartZ2 = 0;
// //int EndZ2 = 0;
// //sn = Convert.ToInt32(devinfo.Dbw1Address);
// //itemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 2)).Append(",i");
// //itemvalues[0].Append(TaskIndex.ToString());
// //itemnames[1].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 4)).Append(",b");
// //itemvalues[1].Append((StartX).ToString());
// //itemnames[2].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 5)).Append(",b");
// //itemvalues[2].Append(StartY.ToString());
// //itemnames[3].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 6)).Append(",b");
// //itemvalues[3].Append(StartZ.ToString());
// //itemnames[4].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 7)).Append(",b");
// //itemvalues[4].Append((StartZ2).ToString());
// //itemnames[5].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 8)).Append(",b");
// //itemvalues[5].Append((EndX).ToString());
// //itemnames[6].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 9)).Append(",b");
// //itemvalues[6].Append(EndY.ToString());
// //itemnames[7].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 10)).Append(",b");
// //itemvalues[7].Append(EndZ.ToString());
// //itemnames[8].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 11)).Append(",b");
// //itemvalues[8].Append(EndZ2.ToString());
// //itemnames[9].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 1)).Append(",b");
// //itemvalues[9].Append(Order.ToString());
// //itemnames[10].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(sn + 0)).Append(",b");
// //itemvalues[10].Append(MessageIndex.ToString());
// //CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName");//20090922 devinfo.RemoteIP;
// //CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID");
// //CCommonOPCClient.PlcConnectionID = devinfo.S7Connection;//20110216
// #endregion
// 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());
// if (MessageIndex == 0 || MessageIndex == 1 || MessageIndex == 2 || MessageIndex == 4)
// {
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "���ʹ���������", DeviceIndex.ToString(), sss.ToString());
// }
// #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 ( long mti , long fid , int moniTask , int useawayfork )
{
DataView dv = new DataView ( ) ;
try
{
long 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>
/// ���ʹ������ͻ��豸����
/// </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;// �Ϻ��ɵ�������������������
if ( ArrowDeviceIndex . ToString ( ) . Length > 5 )
{
ArrowDeviceIndex = Convert . ToInt32 ( ArrowDeviceIndex . ToString ( ) . Substring ( 0 , 5 ) ) ;
}
if ( ( DeviceIndex = = 1 4 0 0 5 | | DeviceIndex = = 1 4 0 0 6 ) & & ArrowDeviceIndex . ToString ( ) . Length = = 5 )
{
ArrowDeviceIndex = Model . CGeneralFunction . Getlayerfromlanegate ( ArrowDeviceIndex ) ;
if ( ArrowDeviceIndex = = - 1 )
{
_ commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder��������������Ŀ����ַ����!" ;
return false ;
}
}
string barcode = GetBarcodeFromMonitorIndex ( TaskIndex ) ;
try
{
//int nowdev = GetNowDevice(TaskIndex);
//if ((devinfo.DeviceKind == 13) && (nowdev != 0))
//{
// devinfo = Model.CGetInfo.GetDeviceInfo(nowdev);
//}
int [ ] sendmes = new int [ 5 ] { MessageIndex , TaskIndex , Order , DeviceIndex , ArrowDeviceIndex } ;
devinfo . SendMessage = sendmes ;
Model . CGetInfo . SetDeviceMessage ( devinfo ) ;
int sn = 0 ;
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 ;
}
//byte0,byte1,byte2,byte3,byte4
// int1 int3
//int0(byte0,byte1);int1(byte1,byte2);int2(byte2,byte3);int3(byte3,byte4)
sn = Convert . ToInt32 ( devinfo . Dbw1Address ) ;
strTask . Append ( TaskIndex . ToString ( ) ) ;
if ( devinfo . DeviceKind = = 3 1 )
{
#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 [ 1 0 ]
{ new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) ,
new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) ,
new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) } ; ;
itemvalues = new StringBuilder [ 1 0 ]
{ 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 + 1 0 ) ) . 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
{
#region �������ͻ�
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 ( "" ) } ; ;
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 ( ) ) ;
itemnames [ 2 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 2 ) ) . Append ( ",i" ) ;
itemvalues [ 2 ] . Append ( TaskIndex . ToString ( ) ) ;
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 ( ) ) ;
}
else
{
if ( devinfo . IfCorrelDoubleFork = = "1" )
{ //��������վ̨����
#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��DB1.23�ֽ�:" + TaskIndexDB23 . ToString ( ) ) . Append ( "���룺" ) . Append ( GetBarcodeFromMonitorIndex ( TaskIndexDB23 ) ) ;
strTask . Append ( ";2��DB1.45�ֽ�:" + TaskIndexDB45 . ToString ( ) ) . Append ( "���룺" ) . Append ( GetBarcodeFromMonitorIndex ( TaskIndexDB45 ) ) ;
#region WPG
//if ((DeviceIndex == 121011) || (DeviceIndex == 221011))
//{//ǰ����2��������ӦСDB2��������1��������Ӧ��DB2
// TaskIndexDB23 = reltaskindex;
// TaskIndexDB45 = TaskIndex;
// strTask.Append("2��DB1.23�ֽ�:" + TaskIndexDB23.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB23));
// strTask.Append(";1��DB1.45�ֽ�:" + TaskIndexDB45.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB45));
//}
//if ((DeviceIndex == 121012) || (DeviceIndex == 221012))
//{//ǰ����2��������ӦСDB2��������1��������Ӧ��DB2
// TaskIndexDB23 = TaskIndex;
// TaskIndexDB45 = reltaskindex;
// strTask.Append("2��DB1.23�ֽ�:" + TaskIndexDB23.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB23));
// strTask.Append(";1��DB1.45�ֽ�:" + TaskIndexDB45.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB45));
//}
//if (DeviceIndex == 121111)
//{//ǰ����1��������ӦСDB2��������2��������Ӧ��DB2
// TaskIndexDB23 = TaskIndex;
// TaskIndexDB45 = reltaskindex;
// strTask.Append("1��DB1.23�ֽ�:" + TaskIndexDB23.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB23));
// strTask.Append(";2��DB1.45�ֽ�:" + TaskIndexDB45.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB45));
//}
//if (DeviceIndex == 121112)
//{//ǰ����1��������ӦСDB2��������2��������Ӧ��DB2
// TaskIndexDB23 = reltaskindex;
// TaskIndexDB45 = TaskIndex;
// strTask.Append("1��DB1.23�ֽ�:" + TaskIndexDB23.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB23));
// strTask.Append(";2��DB1.45�ֽ�:" + TaskIndexDB45.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB45));
//}
#endregion
devinfo = Model . CGetInfo . GetDeviceInfo ( Convert . ToInt32 ( DeviceIndex . ToString ( ) . Substring ( 0 , 5 ) ) ) ;
sn = Convert . ToInt32 ( devinfo . Dbw1Address ) ;
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 ( "" ) } ; ;
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 ( ) ) ;
itemnames [ 2 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 2 ) ) . Append ( ",i" ) ;
itemvalues [ 2 ] . Append ( TaskIndexDB23 ) ;
itemnames [ 3 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 4 ) ) . Append ( ",i" ) ;
itemvalues [ 3 ] . Append ( TaskIndexDB45 ) ;
itemnames [ 4 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 6 ) ) . Append ( ",i" ) ;
itemvalues [ 4 ] . Append ( ArrowDeviceIndex ) ;
sss . Remove ( 0 , sss . Length ) ;
sss . Append ( "���룺" ) . Append ( barcode ) . Append ( "**д��־" ) . Append ( MessageIndex . ToString ( ) ) . Append ( "**������" + Order . ToString ( ) ) . Append ( "**������" + strTask . ToString ( ) )
. Append ( "**Ŀ��λ��" + ArrowDeviceIndex . ToString ( ) ) ;
#endregion
}
else
if ( devinfo . DeviceKind = = 1 7 )
{
//�ڷ��Ͳ���ָ��ǰ���жϹ��������Ƿ�Ҫ�������������������Ͳ���ָ��
long mti = Model . CGeneralFunction . GetManageTaskKindIndexFromMonitor ( TaskIndex ) ;
if ( mti = = 1 )
{
long 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 ] ! = 5 9 ) //�ֺŲ�����
{
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 > = 2 1 ) //��ͬ���������ͻ� 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 ��ͨ���ͻ�
itemnames = new StringBuilder [ 4 ] { new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) } ; ;
itemvalues = new StringBuilder [ 4 ] { new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) , new StringBuilder ( "" ) } ; ;
itemnames [ 0 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 2 ) ) . Append ( ",i" ) ;
itemvalues [ 0 ] . Append ( TaskIndex . ToString ( ) ) ;
itemnames [ 1 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 4 ) ) . Append ( ",di" ) ;
itemvalues [ 1 ] . Append ( ArrowDeviceIndex . ToString ( ) ) ;
itemnames [ 2 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 1 ) ) . Append ( ",b" ) ;
itemvalues [ 2 ] . Append ( Order . ToString ( ) ) ;
itemnames [ 3 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 0 ) ) . Append ( ",b" ) ;
itemvalues [ 3 ] . Append ( MessageIndex . ToString ( ) ) ;
//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());
#endregion
}
}
}
#endregion
}
}
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());
sss . Remove ( 0 , sss . Length ) ;
sss . Append ( "���룺" ) . Append ( barcode ) . Append ( "**д��־" ) . Append ( MessageIndex . ToString ( ) ) . Append ( "**������" + Order . ToString ( ) ) . Append ( "**������" + strTask . ToString ( ) )
. Append ( "**Ŀ��λ��" + ArrowDeviceIndex . ToString ( ) ) ;
if ( MessageIndex = = 0 | | MessageIndex = = 1 | | MessageIndex = = 2 | | MessageIndex = = 4 )
{
CommonClassLib . CCarryConvert . WriteDarkCasket ( "OPCClient" , "��������" , DeviceIndex . ToString ( ) , sss . 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)
//{
// _commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder����������" + CCommonOPCClient.OpcError;
// return false;
//}
//Thread.Sleep(500);//add by lyj 20171113
//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);
////CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "����ָ��", devinfo.DeviceIndex.ToString(), MessageIndex.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("**������" + 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 ;
}
}
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 [ 1 6 ] ;
StringBuilder [ ] itemvalues = new StringBuilder [ 1 6 ] ;
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 < = 1 4 ; 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 [ 1 5 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( ( sn + 1 5 ) . ToString ( ) ) . Append ( ",b" ) ;
itemvalues [ 1 5 ] . 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 SendWarnToDevice ( int DeviceIndex , string Warning ) {
var data = StringToUnicode ( Warning ) ;
var length = data . Length ;
if ( length > = 1 0 0 ) length = 9 9 ;
StringBuilder [ ] itemnames = new StringBuilder [ length ] ;
StringBuilder [ ] itemvalues = new StringBuilder [ length ] ;
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" ) ;
itemvalues [ 0 ] . Append ( "1" ) ;
for ( int i = 1 ; i < = length - 1 ; i + + )
{
itemnames [ i ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( ( sn + i ) . ToString ( ) ) . Append ( ",b" ) ;
itemvalues [ i ] . Append ( Strings . Asc ( data . ToString ( ) . Substring ( i - 1 , 1 ) ) . 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 [ 1 1 ] ;
StringBuilder [ ] itemvalues = new StringBuilder [ 1 1 ] ;
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 [ 1 0 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 0 ) ) . Append ( ",b" ) ;
itemvalues [ 1 0 ] . 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 ;
if ( CCommonOPCClient . SyncWriteAllItemValue ( 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 "-" ;
}
}
//��������������Ϣ
public string GetGoodsBarcodeFromManageTask ( int TaskIndex ) //20130107
{
//20100108
string sql ;
string goodsbarcode = string . Empty ;
try
{
int mti = Model . CGeneralFunction . GetManageTaskKindIndexFromMonitor ( TaskIndex ) ;
long 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 ) ;
long 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 )
{
long 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 ) ;
sql . Append ( "SELECT F_LaneGateDeviceIndex,F_UseAwayFork FROM T_Base_Lane_Gate where F_CorrelDeviceIndex<>'' 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" ] ) ;
return Convert . ToInt32 ( dv [ 0 ] [ "F_LaneGateDeviceIndex" ] ) ;
}
return - 1 ;
}
bool SetLaneGateReplace ( long mti , long 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 ;
//oNextDevice ·�����Ѿ����ֳ��ij���վ̨���ţ�1�л�2�ж�Ӧ���豸���ţ�
int oNextDevice = GetDeviceLaneGateInfoFromStackCoor ( DeviceIndex , zxystr . ToString ( ) , out oldawayfork ) ;
if ( oNextDevice > 0 )
{
int n5 = zxy [ 4 ] ; //Convert.ToInt32(sp[1]);
if ( UseAwayFork = = oldawayfork )
{
//������
return false ; //20120217
}
else //��oldawayfork�滻ΪUseAwayFork
{
//�Ѷ�����ԭ������
char [ ] cc = new char [ 1 ] { ',' } ;
string [ ] lc = devinfo . StackZeroColLayer . Split ( cc ) ;
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 ) ;
//�滻·��
//�ĶѶ�����ǰ���⣬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
//20161223 �˴�̫���� �Ҳ������������ֳ�����Ҫͨ��д��
string [ ] cdiold = GetLanewayDeviceInfoFromStackDev ( DeviceIndex , oNextDevice ) ;
string [ ] cdinew = GetLanewayDeviceInfoFromStackDev ( DeviceIndex , LaneGateDevice ) ;
if ( cdiold ! = null & & cdinew ! = null )
{ //
sql . Clear ( ) ;
sql . Append ( "UPDATE T_Monitor_Task SET F_AheadDetect=Replace(F_AheadDetect,'" ) . Append ( cdiold [ 3 ] ) . Append ( "','" ) . Append ( cdinew [ 3 ] )
. Append ( "') WHERE (F_ManageTaskIndex = " ) . Append ( fid ) . Append ( ") AND (F_ManageTASKKINDINDEX = " )
. Append ( mti ) . Append ( ") AND F_DeviceIndex = " ) . Append ( oNextDevice ) ;
dbo . ExecuteSql ( sql . ToString ( ) ) ;
}
#region ע��20121223
//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
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 ; //20120217
}
}
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
{
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 [ 1 0 ] ;
//20101124
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( "SELECT * FROM T_Base_Lane_Gate where F_CorrelDeviceIndex<>'' 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 ( ) ;
}
}
/// <summary>
/// ��������˫��������
/// </summary>
/// <param name="MessageIndex">��Ϣ����</param>
/// <param name="TaskIndex">��������</param>
/// <param name="Order">������</param>
/// <param name="ArrowDeviceIndex">Ŀ��λ��</param>
/// <param name=" boxnum">���ӵ�����</param>
/// �����������֣�
///4-�ӻ�
///5-�ͻ�
public bool SendDeviceOrder ( int MessageIndex , int TaskIndex , int Order , int DeviceIndex , int ArrowDeviceIndex , int boxnum )
{
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
if ( ArrowDeviceIndex . ToString ( ) . Length > 5 )
{
ArrowDeviceIndex = Convert . ToInt32 ( ArrowDeviceIndex . ToString ( ) . Substring ( 0 , 5 ) ) ;
}
string barcode = GetBarcodeFromMonitorIndex ( TaskIndex ) ;
try
{
int [ ] sendmes = new int [ 5 ] { MessageIndex , TaskIndex , Order , DeviceIndex , ArrowDeviceIndex } ;
devinfo . SendMessage = sendmes ;
Model . CGetInfo . SetDeviceMessage ( devinfo ) ;
int sn = 0 ;
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 ;
}
//byte0,byte1,byte2,byte3,byte4
// int1 int3
//int0(byte0,byte1);int1(byte1,byte2);int2(byte2,byte3);int3(byte3,byte4)
sn = Convert . ToInt32 ( devinfo . Dbw1Address ) ;
strTask . Append ( TaskIndex . ToString ( ) ) ;
#region �������ͻ�
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 ( "" ) } ; ;
if ( devinfo . IfCorrelDoubleFork = = "1" )
{ //��������վ̨����
#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 ( "��23�ֽ�:" + TaskIndexDB23 . ToString ( ) ) . Append ( "���룺" ) . Append ( GetBarcodeFromMonitorIndex ( TaskIndexDB23 ) ) ;
//strTask.Append(";2��DB1.45�ֽ�:" + TaskIndexDB45.ToString()).Append("���룺").Append(GetBarcodeFromMonitorIndex(TaskIndexDB45));
devinfo = Model . CGetInfo . GetDeviceInfo ( Convert . ToInt32 ( DeviceIndex . ToString ( ) . Substring ( 0 , 5 ) ) ) ;
sn = Convert . ToInt32 ( devinfo . Dbw1Address ) ;
//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("") }; ;
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 ( ) ) ;
itemnames [ 2 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 2 ) ) . Append ( ",i" ) ;
itemvalues [ 2 ] . Append ( TaskIndexDB23 ) ;
#region update by lyj20180517
itemnames [ 3 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 4 ) ) . Append ( ",i" ) ;
itemvalues [ 3 ] . Append ( ArrowDeviceIndex ) ;
itemnames [ 4 ] . Append ( Model . CGeneralFunction . DBSend ) . Append ( "." ) . Append ( Convert . ToString ( sn + 6 ) ) . Append ( ",i" ) ;
itemvalues [ 4 ] . Append ( boxnum ) ;
#endregion
sss . Remove ( 0 , sss . Length ) ;
sss . Append ( "���룺" ) . Append ( barcode ) . Append ( "**д��־" ) . Append ( MessageIndex . ToString ( ) ) . Append ( "**������" + Order . ToString ( ) ) . Append ( "**������" + strTask . ToString ( ) )
. Append ( "**Ŀ��λ��" + ArrowDeviceIndex . ToString ( ) ) . Append ( "**���Ӹ���" + boxnum . ToString ( ) ) ;
#endregion
}
#endregion
}
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 )
{
_ commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder����������" + CCommonOPCClient . OpcError ;
return false ;
}
Thread . Sleep ( 5 0 0 ) ; //add by lyj 20171113
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 ) ;
//CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "����ָ��", devinfo.DeviceIndex.ToString(), MessageIndex.ToString());
if ( CCommonOPCClient . SyncWriteAllItemValue ( itemnames , itemvalues ) = = false )
{
_ commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder����������" + CCommonOPCClient . OpcError ;
return false ;
}
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 ;
}
}
public StringBuilder StringToUnicode ( string value ) {
StringBuilder sb = new StringBuilder ( ) ;
foreach ( char c in value )
{
sb . AppendFormat ( "\\u{0:x4}" , ( int ) c ) ; // ʹ��4λʮ����������ʾÿ���ַ���Unicode����
}
return sb ;
}
}
}