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 ) ;
int lanenum = 0 ;
//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 ] ;
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 + 1 0 ) ) . 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 ;
}
}
}