using System ;
using System.Collections.Generic ;
using System.Text ;
using System.Data ;
using System.Threading ;
using Microsoft.VisualBasic ;
using DBFactory ;
using ICommLayer ;
namespace SocketsTCPIP
{
/// <summary>
/// ʹ��SocketsTCPIP�Ŀͻ��˽���ͨѶ
/// �����豸������
/// �����ߣ�Richard.Liu
/// 20110104������AGV����̨ͨѶЭ��
/// </summary>
public class CSendDeviceOrder : ISendDeviceOrder
{
string _ commLayerError ;
StringBuilder sql = new StringBuilder ( ) ;
Model . MDevice devinfo ;
public string CommLayerError
{
get { return _ commLayerError ; }
set { _ commLayerError = value ; }
}
DBOperator dbo = CClientTCPIP . dbo ;
string AGVAllowSingleFork = CommonClassLib . AppSettings . GetValue ( "AGVAllowSingleFork" ) ;
public CSendDeviceOrder ( )
{
dbo . Open ( ) ;
}
/// <summary>
///���� ͨѶ���� ���� ͨѶ��ʽ ��ʽ˵��
///1 ���ص���ͨѶ���ӽ��� ���ص���->AGV����̨ 10001
///2 ���ص���ͨѶ���ӶϿ� ���ص���->AGV����̨ 10002
///3 �´����� �ص���->AGV����̨ 10003[T1][T2][T][R][P][K][A][F][C][N1][N2]����[CK]
///T1Ϊ������(ȡֵ��Χ1000-65534)
///T2Ϊ����(ȡֵ��Χ0-99)
///TΪ��������(TS����); 0��ָ�����ͣ�11��ʾ����
///RΪ��Ʒ����; 0��ָ������
///PΪ���ȼ�(ȡֵ��Χ1-8,Խ�����ȼ�Խ��);2
///KΪ��������; 0��ָ������(14001---��1��15001---��2)
///AΪ��������; 0��ָ������
///FΪ����������ʶ(1-�к�������,0-��������);
///C��������;
///N1��N2��������;
///CKУ����(���������ֶ����ֽ��ۼ�)
///4 �´�����ȷ�� AGV����̨->���ص��� 10003[T1][T2][CK] ///T1Ϊ������,T2Ϊ����;
///5 AGV������ʼ AGV����̨->���ص��� 10004[T1][T2][A][CK] ///AΪ��������;
///6 ������ʼȷ�� ���ص���->AGV����̨ 10004[T1][T2][CK]
///7 AGV�������� AGV����̨->���ص��� 10005[T1][T2][A][CK]
///8 ��������ȷ�� ���ص���->AGV����̨ 10005[T1][T2][CK]
///9 ��������ɾ������ ���ص���->AGV����̨ 10006[T1][T2][CK]
///10 ��������ɾ�������ظ� AGV����̨->���ص��� 10006[T1][T2][A][CK] ///AΪ����״̬(0-������,1-����)
///11 ����̨����ɾ������ AGV����̨->���ص��� 10007[T1][T2][CK]
///12 ����̨����ɾ������ȷ�� ���ص���->AGV����̨ 10007[T1][T2][CK]
///13 ���ز�ѯAGV״̬ ���ص���->AGV����̨ 10008[A][CK] ///AΪ��������;(0-��ѯ���г���)
///14 ��ѯAGV״̬ȷ�� AGV����̨->���ص��� 10008[A][C][CK] ///AΪ��������;CΪ������Ŀ;
///15 ����̨�ϱ�AGV״̬ AGV����̨->���ص��� 10009[A][T1][S][E][W][C][B][N][O][CK]
///A��������;
///T1������;
///SΪ��ǰ·������;
///EΪ��ǰ·���յ�;
///WΪ����״̬;(0����,1����,2��ͣ,3��̬����,4��̬����,5�ȴ�,6����,7������,8��������)
///CΪ���ϴ���;
///BΪ����״̬;(0������,1��������2������)
///NΪĿ���ڵ�;
///O������;
///16 ȷ��AGV״̬ ���ص���->AGV����̨ 10009[A][CK] ///AΪ��������;
///17 ���ط�����Ϣ ���ص���->AGV����̨ 10010[R][C][I1][I2]��[CK]
///RΪ�Ƿ���Ҫ����̨�ظ�ȷ��
///(0-����ȷ��,1-��ȷ��)
///C Ϊ��Ϣ����
///[I1]��Ϊ������Ϣ
///18 ����̨�ظ���Ϣȷ�� AGV����̨->���ص��� 10010[R][C] [I1][I2]��[CK]
///19 ����̨������Ϣ AGV����̨->���ص��� 10011[R][C][I1][I2]��[CK]
///RΪ�Ƿ���Ҫ����̨�ظ�ȷ��
///(0-����ȷ��,1-��ȷ��)
///C Ϊ��Ϣ����
///[I1]��Ϊ������Ϣ
///20 ��λ���ظ���Ϣȷ�� ���ص���->AGV����̨ 10011[R][C][I1][I2]��[CK]
/// </summary>
/// <param name="MessageIndex">��Ϣ����</param>
/// <param name="TaskIndex">��������</param>
/// <param name="Order">AGV������</param>
/// <param name="DeviceIndex">�豸����</param>
/// <param name="StartX">[N1]:ȡ����</param>
/// <param name="StartY"></param>
/// <param name="StartZ"></param>
/// <param name="EndX">[N2]:����</param>
/// <param name="EndY"></param>
/// <param name="EndZ"></param>
/// <returns>����AGV�����Ƿ��ɹ�</returns>
public bool SendDeviceOrder ( int MessageIndex , int TaskIndex , int Order , int DeviceIndex , int StartX , int StartY , int StartZ , int EndX , int EndY , int EndZ )
{
devinfo = Model . CGetInfo . GetDeviceInfo ( DeviceIndex ) ;
if ( devinfo = = null )
{
return false ;
}
else
{
if ( CClientTCPIP . IfInit [ devinfo . RemoteIP ] = = false )
{
return false ;
}
}
//StartXȡ�豸���� EndX���豸����
//20100413����StartX��ȡ�豸����������ǰ�����복βԶ���桢���복β������
//վ�ڳ�β�����н������������ҷ�����
//�жϹ���˫���Ƿ�ͬ������
char useAwayFork = '0' ;
char channelLeft = '0' ;
int AGVAddress = 0 ;
int dorder = 0 ;
int _d evice = GetAGVNoFromMonitor ( TaskIndex ) ;
long Fid = Model . CGeneralFunction . GetManageTaskIndexfromMonitor ( TaskIndex ) ;
//byte goodsID = GetGoodsIDfromManage(Fid); // �ӹ��������õ���Ʒ����
byte goodsID = 2 5 5 ; // �ӹ��������õ���Ʒ����
byte [ ] _ Sdata ;
int NextOrder = 0 ; // ��һ���������룬�˶�ʱ����AGV����; 0û����һ��������2ȡ�����ͻ���
int HaveNextTask = IfHaveNextTask ( TaskIndex , DeviceIndex , ref NextOrder ) ;
int forkNo = 0 ; int ck = 0 ;
bool retvalue = false ;
if ( MessageIndex ! = 1 )
{
return false ;
}
try
{
switch ( Order )
{
case 1 : //�˶����� StartXȡ�豸����
#region �˶�����
GetDeviceInfoFromAGVGate ( StartX , ref channelLeft , ref useAwayFork , ref AGVAddress ) ; // �˶�����������豸����AGV�ر���
//_Sdata = new byte[52];
//_Sdata[0] = Convert.ToByte(10003 & 255); //֡ͷ
//_Sdata[1] = Convert.ToByte((10003 >> 8) & 255);
//_Sdata[2] = Convert.ToByte((10003 >> 16) & 255);
//_Sdata[3] = Convert.ToByte((10003 >> 24) & 255);
//_Sdata[4] = Convert.ToByte(Fid & 255);//����������
//_Sdata[5] = Convert.ToByte((Fid >> 8) & 255);
//_Sdata[6] = Convert.ToByte((Fid >> 16) & 255);
//_Sdata[7] = Convert.ToByte((Fid >> 24) & 255);
//_Sdata[8] = Convert.ToByte(TaskIndex & 255);//����������
//_Sdata[9] = Convert.ToByte((TaskIndex >> 8) & 255);
//_Sdata[10] = Convert.ToByte((TaskIndex >> 16) & 255);
//_Sdata[11] = Convert.ToByte((TaskIndex >> 24) & 255);
//_Sdata[12] = Convert.ToByte(65535 & 255);//��������
//_Sdata[13] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[14] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[15] = Convert.ToByte((65535 >> 24) & 255);
//// ��Ʒ����65535 AGV�¼��ֶ� 20150115
//_Sdata[16] = Convert.ToByte(65535 & 255);
//_Sdata[17] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[18] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[19] = Convert.ToByte((65535 >> 24) & 255);
//// ��Ʒ����
//_Sdata[20] = 2;//���ȼ�
//_Sdata[21] = 0;
//_Sdata[22] = 0;
//_Sdata[23] = 0;
//_Sdata[24] = Convert.ToByte(65535 & 255);//��������
//_Sdata[25] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[26] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[27] = Convert.ToByte((65535 >> 24) & 255);
//_Sdata[28] = Convert.ToByte(65535 & 255);//��������
//_Sdata[29] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[30] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[31] = Convert.ToByte((65535 >> 24) & 255);
//_Sdata[32] = Convert.ToByte(HaveNextTask & 255);//����������ʶ
//_Sdata[33] = Convert.ToByte((HaveNextTask >> 8) & 255);
//_Sdata[34] = Convert.ToByte((HaveNextTask >> 16) & 255);
//_Sdata[35] = Convert.ToByte((HaveNextTask >> 24) & 255);
//_Sdata[36] = 1;//�ڵ�����
//_Sdata[37] = 0;
//_Sdata[38] = 0;
//_Sdata[39] = 0;
//_Sdata[40] = Convert.ToByte(AGVAddress & 255);//�ڵ���
//_Sdata[41] = Convert.ToByte((AGVAddress >> 8) & 255);
//_Sdata[42] = Convert.ToByte((AGVAddress >> 16) & 255);
//_Sdata[43] = Convert.ToByte((AGVAddress >> 24) & 255);
//_Sdata[44] = Convert.ToByte(Order & 255);//�����豸����
//_Sdata[45] = Convert.ToByte((Order >> 8) & 255);
//_Sdata[46] = Convert.ToByte((Order >> 16) & 255);
//_Sdata[47] = Convert.ToByte((Order >> 24) & 255);
//ck = Convert.ToInt16(60003 + Fid + TaskIndex + 65535 + 65535 + 2 + 65535 + 65535 + HaveNextTask + 1 + AGVAddress + Order);
//_Sdata[48] = Convert.ToByte(ck & 255);//У����(�������������밴�������ӷ�)
//_Sdata[49] = Convert.ToByte((ck >> 8) & 255);
//_Sdata[50] = Convert.ToByte((ck >> 16) & 255);
//_Sdata[51] = Convert.ToByte((ck >> 24) & 255);
_ Sdata = new byte [ 2 8 ] ;
_ Sdata [ 0 ] = Convert . ToByte ( 1 0 0 0 3 & 2 5 5 ) ; //֡ͷ
_ Sdata [ 1 ] = Convert . ToByte ( ( 1 0 0 0 3 > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 ] = Convert . ToByte ( Fid & 2 5 5 ) ; //����������
_ Sdata [ 3 ] = Convert . ToByte ( ( Fid > > 8 ) & 2 5 5 ) ;
_ Sdata [ 4 ] = Convert . ToByte ( ( Fid > > 1 6 ) & 2 5 5 ) ;
_ Sdata [ 5 ] = Convert . ToByte ( ( Fid > > 2 4 ) & 2 5 5 ) ;
_ Sdata [ 6 ] = Convert . ToByte ( TaskIndex & 2 5 5 ) ; //����������
_ Sdata [ 7 ] = Convert . ToByte ( ( TaskIndex > > 8 ) & 2 5 5 ) ;
_ Sdata [ 8 ] = Convert . ToByte ( 6 5 5 3 5 & 2 5 5 ) ; //��������
_ Sdata [ 9 ] = Convert . ToByte ( ( 6 5 5 3 5 > > 8 ) & 2 5 5 ) ;
if ( StartX < 1 9 0 0 0 ) //���ͻ�����С��19000
{
_ Sdata [ 1 0 ] = 1 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
else
{
_ Sdata [ 1 0 ] = 2 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
_ Sdata [ 1 2 ] = 2 ; //���ȼ�
_ Sdata [ 1 3 ] = 0 ;
_ Sdata [ 1 4 ] = goodsID ; //�������� -- ������������bba 13\14ʱ������
_ Sdata [ 1 5 ] = 0 ;
_ Sdata [ 1 6 ] = 0 ; //��������
_ Sdata [ 1 7 ] = 0 ;
_ Sdata [ 1 8 ] = Convert . ToByte ( HaveNextTask & 2 5 5 ) ; //����������ʶ
_ Sdata [ 1 9 ] = Convert . ToByte ( ( HaveNextTask > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 0 ] = 2 ; //��������
_ Sdata [ 2 1 ] = 0 ;
_ Sdata [ 2 2 ] = Convert . ToByte ( AGVAddress & 2 5 5 ) ; //ȡ���ڵ���
_ Sdata [ 2 3 ] = Convert . ToByte ( ( AGVAddress > > 8 ) & 2 5 5 ) ;
dorder = 6 5 5 3 5 ;
_ Sdata [ 2 4 ] = Convert . ToByte ( dorder & 2 5 5 ) ; //Convert.ToByte(Order & 255);//�豸�������ţ�����65535 --Convert.ToByte(NextOrder);
_ Sdata [ 2 5 ] = Convert . ToByte ( ( dorder > > 8 ) & 2 5 5 ) ; // ��λFF03
for ( int i = 0 ; i < = 2 5 ; i + + )
{
ck + = Convert . ToInt32 ( _ Sdata [ i ] ) ;
}
_ Sdata [ 2 6 ] = Convert . ToByte ( ck & 2 5 5 ) ; //У����(�������������밴�������ӷ�)
_ Sdata [ 2 7 ] = Convert . ToByte ( ( ck > > 8 ) & 2 5 5 ) ;
retvalue = SendData ( DeviceIndex , _ Sdata ) ;
#endregion
break ;
case 2 : //ȡ������
#region ȡ������
GetDeviceInfoFromAGVGate ( StartX , ref channelLeft , ref useAwayFork , ref AGVAddress ) ;
dorder = 2 ; //ȡ������
if ( ( Model . CGeneralFunction . MutiForkIfSync ( TaskIndex , DeviceIndex , 6 ) = = null ) & & ( AGVAllowSingleFork = = "1" ) ) //20100710
{ //����ͬ��
if ( useAwayFork = = '1' ) //ǰ��
{
forkNo = 1 ;
}
else //����
{
forkNo = 2 ;
}
}
else
{ //ͬ��
forkNo = 3 ;
}
//_Sdata = new byte[52];
//_Sdata[0] = Convert.ToByte(10003 & 255); //֡ͷ
//_Sdata[1] = Convert.ToByte((10003 >> 8) & 255);
//_Sdata[2] = Convert.ToByte((10003 >> 16) & 255);
//_Sdata[3] = Convert.ToByte((10003 >> 24) & 255);
//_Sdata[4] = Convert.ToByte(Fid & 255);//����������
//_Sdata[5] = Convert.ToByte((Fid >> 8) & 255);
//_Sdata[6] = Convert.ToByte((Fid >> 16) & 255);
//_Sdata[7] = Convert.ToByte((Fid >> 24) & 255);
//_Sdata[8] = Convert.ToByte(TaskIndex & 255);//����������
//_Sdata[9] = Convert.ToByte((TaskIndex >> 8) & 255);
//_Sdata[10] = Convert.ToByte((TaskIndex >> 16) & 255);
//_Sdata[11] = Convert.ToByte((TaskIndex >> 24) & 255);
//_Sdata[12] = Convert.ToByte(65535 & 255);//��������
//_Sdata[13] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[14] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[15] = Convert.ToByte((65535 >> 24) & 255);
//// ��Ʒ����65535 AGV�¼��ֶ� 20150115
//_Sdata[16] = Convert.ToByte(65535 & 255);
//_Sdata[17] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[18] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[19] = Convert.ToByte((65535 >> 24) & 255);
//// ��Ʒ����
//_Sdata[20] = 2;//���ȼ�
//_Sdata[21] = 0;
//_Sdata[22] = 0;
//_Sdata[23] = 0;
//_Sdata[24] = Convert.ToByte(65535 & 255);//��������
//_Sdata[25] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[26] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[27] = Convert.ToByte((65535 >> 24) & 255);
//_Sdata[28] = Convert.ToByte(65535 & 255);//��������
//_Sdata[29] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[30] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[31] = Convert.ToByte((65535 >> 24) & 255);
//_Sdata[32] = Convert.ToByte(HaveNextTask & 255);//����������ʶ
//_Sdata[33] = Convert.ToByte((HaveNextTask >> 8) & 255);
//_Sdata[34] = Convert.ToByte((HaveNextTask >> 16) & 255);
//_Sdata[35] = Convert.ToByte((HaveNextTask >> 24) & 255);
//_Sdata[36] = 1;//�ڵ�����
//_Sdata[37] = 0;
//_Sdata[38] = 0;
//_Sdata[39] = 0;
//_Sdata[40] = Convert.ToByte(AGVAddress & 255);//�ڵ���
//_Sdata[41] = Convert.ToByte((AGVAddress >> 8) & 255);
//_Sdata[42] = Convert.ToByte((AGVAddress >> 16) & 255);
//_Sdata[43] = Convert.ToByte((AGVAddress >> 24) & 255);
//_Sdata[44] = Convert.ToByte(Order & 255);//�����豸����
//_Sdata[45] = Convert.ToByte((Order >> 8) & 255);
//_Sdata[46] = Convert.ToByte((Order >> 16) & 255);
//_Sdata[47] = Convert.ToByte((Order >> 24) & 255);
//ck = Convert.ToInt32(10003 + Fid + TaskIndex + 65535 + 65535 + 2 + 65535 + 65535 + HaveNextTask + 1 + AGVAddress + Order);
//_Sdata[48] = Convert.ToByte(ck & 255);//У����(�������������밴�������ӷ�)
//_Sdata[49] = Convert.ToByte((ck >> 8) & 255);
//_Sdata[50] = Convert.ToByte((ck >> 16) & 255);
//_Sdata[51] = Convert.ToByte((ck >> 24) & 255);
//writeDark(Fid, TaskIndex, DeviceIndex, dorder, AGVAddress);
_ Sdata = new byte [ 2 8 ] ;
_ Sdata [ 0 ] = Convert . ToByte ( 1 0 0 0 3 & 2 5 5 ) ; //֡ͷ
_ Sdata [ 1 ] = Convert . ToByte ( ( 1 0 0 0 3 > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 ] = Convert . ToByte ( Fid & 2 5 5 ) ; //����������
_ Sdata [ 3 ] = Convert . ToByte ( ( Fid > > 8 ) & 2 5 5 ) ;
_ Sdata [ 4 ] = Convert . ToByte ( ( Fid > > 1 6 ) & 2 5 5 ) ;
_ Sdata [ 5 ] = Convert . ToByte ( ( Fid > > 2 4 ) & 2 5 5 ) ;
_ Sdata [ 6 ] = Convert . ToByte ( TaskIndex & 2 5 5 ) ; //����������
_ Sdata [ 7 ] = Convert . ToByte ( ( TaskIndex > > 8 ) & 2 5 5 ) ;
_ Sdata [ 8 ] = Convert . ToByte ( 6 5 5 3 5 & 2 5 5 ) ; //��������
_ Sdata [ 9 ] = Convert . ToByte ( ( 6 5 5 3 5 > > 8 ) & 2 5 5 ) ;
if ( StartX < 1 9 0 0 0 ) //���ͻ�����С��19000
{
_ Sdata [ 1 0 ] = 1 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
else
{
_ Sdata [ 1 0 ] = 2 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
_ Sdata [ 1 2 ] = 2 ; //���ȼ�
_ Sdata [ 1 3 ] = 0 ;
_ Sdata [ 1 4 ] = goodsID ; //�������� -- ������������bba 13\14ʱ������
_ Sdata [ 1 5 ] = 0 ;
_ Sdata [ 1 6 ] = 0 ; //��������
_ Sdata [ 1 7 ] = 0 ;
_ Sdata [ 1 8 ] = Convert . ToByte ( HaveNextTask & 2 5 5 ) ; //����������ʶ
_ Sdata [ 1 9 ] = Convert . ToByte ( ( HaveNextTask > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 0 ] = 2 ; //��������
_ Sdata [ 2 1 ] = 0 ;
_ Sdata [ 2 2 ] = Convert . ToByte ( AGVAddress & 2 5 5 ) ; //ȡ���ڵ���
_ Sdata [ 2 3 ] = Convert . ToByte ( ( AGVAddress > > 8 ) & 2 5 5 ) ;
dorder = 2 8 9 0 1 ;
_ Sdata [ 2 4 ] = Convert . ToByte ( dorder & 2 5 5 ) ; //Convert.ToByte(Order & 255);//�豸�������ţ�����65535 --Convert.ToByte(NextOrder);
_ Sdata [ 2 5 ] = Convert . ToByte ( ( dorder > > 8 ) & 2 5 5 ) ; // ��λFF03
for ( int i = 0 ; i < = 2 5 ; i + + )
{
ck + = Convert . ToInt32 ( _ Sdata [ i ] ) ;
}
_ Sdata [ 2 6 ] = Convert . ToByte ( ck & 2 5 5 ) ; //У����(�������������밴�������ӷ�)
_ Sdata [ 2 7 ] = Convert . ToByte ( ( ck > > 8 ) & 2 5 5 ) ;
retvalue = SendData ( DeviceIndex , _ Sdata ) ;
#endregion
break ;
case 3 : //�ͻ�
#region �ͻ�
GetDeviceInfoFromAGVGate ( EndX , ref channelLeft , ref useAwayFork , ref AGVAddress ) ;
dorder = 3 ; //�ͻ�
//if (channelLeft == '1')
//{
// dorder = 2;//����
//}
//else
//{
// dorder = 4;//����
//}
if ( ( Model . CGeneralFunction . MutiForkIfSync ( TaskIndex , DeviceIndex , 6 ) = = null ) & & ( AGVAllowSingleFork = = "1" ) ) //20100710
{ //����ͬ��
if ( useAwayFork = = '1' ) //ǰ��
{
forkNo = 1 ;
}
else //����
{
forkNo = 2 ;
}
}
else
{ //ͬ��
forkNo = 3 ;
}
//_Sdata = new byte[52];
//_Sdata[0] = Convert.ToByte(10003 & 255); //֡ͷ
//_Sdata[1] = Convert.ToByte((10003 >> 8) & 255);
//_Sdata[2] = Convert.ToByte((10003 >> 16) & 255);
//_Sdata[3] = Convert.ToByte((10003 >> 24) & 255);
//_Sdata[4] = Convert.ToByte(Fid & 255);//����������
//_Sdata[5] = Convert.ToByte((Fid >> 8) & 255);
//_Sdata[6] = Convert.ToByte((Fid >> 16) & 255);
//_Sdata[7] = Convert.ToByte((Fid >> 24) & 255);
//_Sdata[8] = Convert.ToByte(TaskIndex & 255);//����������
//_Sdata[9] = Convert.ToByte((TaskIndex >> 8) & 255);
//_Sdata[10] = Convert.ToByte((TaskIndex >> 16) & 255);
//_Sdata[11] = Convert.ToByte((TaskIndex >> 24) & 255);
//_Sdata[12] = Convert.ToByte(65535 & 255);//��������
//_Sdata[13] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[14] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[15] = Convert.ToByte((65535 >> 24) & 255);
//// ��Ʒ����65535 AGV�¼��ֶ� 20150115
//_Sdata[16] = Convert.ToByte(65535 & 255);
//_Sdata[17] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[18] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[19] = Convert.ToByte((65535 >> 24) & 255);
//// ��Ʒ����
//_Sdata[20] = 2;//���ȼ�
//_Sdata[21] = 0;
//_Sdata[22] = 0;
//_Sdata[23] = 0;
//_Sdata[24] = Convert.ToByte(65535 & 255);//��������
//_Sdata[25] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[26] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[27] = Convert.ToByte((65535 >> 24) & 255);
//_Sdata[28] = Convert.ToByte(65535 & 255);//��������
//_Sdata[29] = Convert.ToByte((65535 >> 8) & 255);
//_Sdata[30] = Convert.ToByte((65535 >> 16) & 255);
//_Sdata[31] = Convert.ToByte((65535 >> 24) & 255);
//_Sdata[32] = Convert.ToByte(HaveNextTask & 255);//����������ʶ
//_Sdata[33] = Convert.ToByte((HaveNextTask >> 8) & 255);
//_Sdata[34] = Convert.ToByte((HaveNextTask >> 16) & 255);
//_Sdata[35] = Convert.ToByte((HaveNextTask >> 24) & 255);
//_Sdata[36] = 1;//�ڵ�����
//_Sdata[37] = 0;
//_Sdata[38] = 0;
//_Sdata[39] = 0;
//_Sdata[40] = Convert.ToByte(AGVAddress & 255);//�ڵ���
//_Sdata[41] = Convert.ToByte((AGVAddress >> 8) & 255);
//_Sdata[42] = Convert.ToByte((AGVAddress >> 16) & 255);
//_Sdata[43] = Convert.ToByte((AGVAddress >> 24) & 255);
//_Sdata[44] = Convert.ToByte(Order & 255);//�����豸����
//_Sdata[45] = Convert.ToByte((Order >> 8) & 255);
//_Sdata[46] = Convert.ToByte((Order >> 16) & 255);
//_Sdata[47] = Convert.ToByte((Order >> 24) & 255);
//ck = Convert.ToInt32(10003 + Fid + TaskIndex + 65535 + 65535 + 2 + 65535 + 65535 + HaveNextTask + 1 + AGVAddress + Order);
//_Sdata[48] = Convert.ToByte(ck & 255);//У����(�������������밴�������ӷ�)
//_Sdata[49] = Convert.ToByte((ck >> 8) & 255);
//_Sdata[50] = Convert.ToByte((ck >> 16) & 255);
//_Sdata[51] = Convert.ToByte((ck >> 24) & 255);
//writeDark(Fid, TaskIndex, DeviceIndex, dorder, AGVAddress);
_ Sdata = new byte [ 2 8 ] ;
_ Sdata [ 0 ] = Convert . ToByte ( 1 0 0 0 3 & 2 5 5 ) ; //֡ͷ
_ Sdata [ 1 ] = Convert . ToByte ( ( 1 0 0 0 3 > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 ] = Convert . ToByte ( Fid & 2 5 5 ) ; //����������
_ Sdata [ 3 ] = Convert . ToByte ( ( Fid > > 8 ) & 2 5 5 ) ;
_ Sdata [ 4 ] = Convert . ToByte ( ( Fid > > 1 6 ) & 2 5 5 ) ;
_ Sdata [ 5 ] = Convert . ToByte ( ( Fid > > 2 4 ) & 2 5 5 ) ;
_ Sdata [ 6 ] = Convert . ToByte ( TaskIndex & 2 5 5 ) ; //����������
_ Sdata [ 7 ] = Convert . ToByte ( ( TaskIndex > > 8 ) & 2 5 5 ) ;
_ Sdata [ 8 ] = Convert . ToByte ( 6 5 5 3 5 & 2 5 5 ) ; //��������
_ Sdata [ 9 ] = Convert . ToByte ( ( 6 5 5 3 5 > > 8 ) & 2 5 5 ) ;
if ( StartX < 1 9 0 0 0 ) //���ͻ�����С��19000
{
_ Sdata [ 1 0 ] = 1 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
else
{
_ Sdata [ 1 0 ] = 2 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
_ Sdata [ 1 2 ] = 2 ; //���ȼ�
_ Sdata [ 1 3 ] = 0 ;
_ Sdata [ 1 4 ] = goodsID ; //�������� -- ������������bba 13\14ʱ������
_ Sdata [ 1 5 ] = 0 ;
_ Sdata [ 1 6 ] = 0 ; //��������
_ Sdata [ 1 7 ] = 0 ;
_ Sdata [ 1 8 ] = Convert . ToByte ( HaveNextTask & 2 5 5 ) ; //����������ʶ
_ Sdata [ 1 9 ] = Convert . ToByte ( ( HaveNextTask > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 0 ] = 2 ; //��������
_ Sdata [ 2 1 ] = 0 ;
_ Sdata [ 2 2 ] = Convert . ToByte ( AGVAddress & 2 5 5 ) ; //ȡ���ڵ���
_ Sdata [ 2 3 ] = Convert . ToByte ( ( AGVAddress > > 8 ) & 2 5 5 ) ;
dorder = 2 8 9 0 2 ;
_ Sdata [ 2 4 ] = Convert . ToByte ( dorder & 2 5 5 ) ; //Convert.ToByte(Order & 255);//�豸�������ţ�����65535 --Convert.ToByte(NextOrder);
_ Sdata [ 2 5 ] = Convert . ToByte ( ( dorder > > 8 ) & 2 5 5 ) ; // ��λFF03
for ( int i = 0 ; i < = 2 5 ; i + + )
{
ck + = Convert . ToInt32 ( _ Sdata [ i ] ) ;
}
_ Sdata [ 2 6 ] = Convert . ToByte ( ck & 2 5 5 ) ; //У����(�������������밴�������ӷ�)
_ Sdata [ 2 7 ] = Convert . ToByte ( ( ck > > 8 ) & 2 5 5 ) ;
retvalue = SendData ( DeviceIndex , _ Sdata ) ;
#endregion
break ;
case 4 : //ȡ�ͻ�
#region ȡ�ͻ�
//ȡ��
GetDeviceInfoFromAGVGate ( StartX , ref channelLeft , ref useAwayFork , ref AGVAddress ) ;
dorder = 4 ;
if ( ( Model . CGeneralFunction . MutiForkIfSync ( TaskIndex , DeviceIndex , 6 ) = = null ) & & ( AGVAllowSingleFork = = "1" ) ) //20100710
{ //����ͬ��
if ( useAwayFork = = '1' ) //ǰ��
{
forkNo = 1 ;
}
else //����
{
forkNo = 2 ;
}
}
else
{ //ͬ��
forkNo = 3 ;
}
_ Sdata = new byte [ 3 2 ] ;
_ Sdata [ 0 ] = Convert . ToByte ( 1 0 0 0 3 & 2 5 5 ) ; //֡ͷ
_ Sdata [ 1 ] = Convert . ToByte ( ( 1 0 0 0 3 > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 ] = Convert . ToByte ( Fid & 2 5 5 ) ; //����������
_ Sdata [ 3 ] = Convert . ToByte ( ( Fid > > 8 ) & 2 5 5 ) ;
_ Sdata [ 4 ] = Convert . ToByte ( ( Fid > > 1 6 ) & 2 5 5 ) ;
_ Sdata [ 5 ] = Convert . ToByte ( ( Fid > > 2 4 ) & 2 5 5 ) ;
_ Sdata [ 6 ] = Convert . ToByte ( TaskIndex & 2 5 5 ) ; //����������
_ Sdata [ 7 ] = Convert . ToByte ( ( TaskIndex > > 8 ) & 2 5 5 ) ;
_ Sdata [ 8 ] = Convert . ToByte ( 6 5 5 3 5 & 2 5 5 ) ; //��������
_ Sdata [ 9 ] = Convert . ToByte ( ( 6 5 5 3 5 > > 8 ) & 2 5 5 ) ;
if ( StartX < 1 9 0 0 0 ) //���ͻ�����С��19000
{
_ Sdata [ 1 0 ] = 1 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
else
{
_ Sdata [ 1 0 ] = 2 ; //��Ʒ����,���ͻ�1������2
_ Sdata [ 1 1 ] = 0 ;
}
_ Sdata [ 1 2 ] = 2 ; //���ȼ�
_ Sdata [ 1 3 ] = 0 ;
_ Sdata [ 1 4 ] = goodsID ; //�������� -- ������������bba 13\14ʱ������
_ Sdata [ 1 5 ] = 0 ;
_ Sdata [ 1 6 ] = 0 ; //��������
_ Sdata [ 1 7 ] = 0 ;
_ Sdata [ 1 8 ] = Convert . ToByte ( HaveNextTask & 2 5 5 ) ; //����������ʶ
_ Sdata [ 1 9 ] = Convert . ToByte ( ( HaveNextTask > > 8 ) & 2 5 5 ) ;
_ Sdata [ 2 0 ] = 4 ; //��������
_ Sdata [ 2 1 ] = 0 ;
_ Sdata [ 2 2 ] = Convert . ToByte ( AGVAddress & 2 5 5 ) ; //ȡ���ڵ���
_ Sdata [ 2 3 ] = Convert . ToByte ( ( AGVAddress > > 8 ) & 2 5 5 ) ;
dorder = 2 ;
_ Sdata [ 2 4 ] = Convert . ToByte ( dorder & 2 5 5 ) ; //Convert.ToByte(Order & 255);//�豸�������ţ�����65535 --Convert.ToByte(NextOrder);
_ Sdata [ 2 5 ] = Convert . ToByte ( ( dorder > > 8 ) & 2 5 5 ) ; // ��λFF03
GetDeviceInfoFromAGVGate ( EndX , ref channelLeft , ref useAwayFork , ref AGVAddress ) ;
_ Sdata [ 2 6 ] = Convert . ToByte ( AGVAddress & 2 5 5 ) ; //�ͻ��ڵ���
_ Sdata [ 2 7 ] = Convert . ToByte ( ( AGVAddress > > 8 ) & 2 5 5 ) ;
dorder = 3 ;
_ Sdata [ 2 8 ] = Convert . ToByte ( dorder & 2 5 5 ) ; //Convert.ToByte(Order & 255);//�豸�������ţ�����65535 --Convert.ToByte(NextOrder);
_ Sdata [ 2 9 ] = Convert . ToByte ( ( dorder > > 8 ) & 2 5 5 ) ; //
for ( int i = 0 ; i < = 2 9 ; i + + )
{
ck + = Convert . ToInt32 ( _ Sdata [ i ] ) ;
}
_ Sdata [ 3 0 ] = Convert . ToByte ( ck & 2 5 5 ) ; //У����(�������������밴�������ӷ�)
_ Sdata [ 3 1 ] = Convert . ToByte ( ( ck > > 8 ) & 2 5 5 ) ;
retvalue = SendData ( DeviceIndex , _ Sdata ) ;
#endregion
break ;
//case 5://����AGV���أ�ʹ����ʼ������Ϊ����AGV���ص������豸
// #region ����AGV����
// GetDeviceInfoFromAGVGate(StartX, ref channelLeft, ref useAwayFork, ref AGVAddress);
// //����ʵ��ȡ�������ͻ�������F_AGVNextTask
// object ob = dbo.GetSingle("select F_AGVNextTask from T_Monitor_Task where F_MonitorIndex=" + TaskIndex);
// if (ob != null)
// {
// TaskIndex = Convert.ToInt32(ob);
// }
// _Sdata = new byte[12];
// _Sdata[0] = Convert.ToByte(60005 & 255); //֡ͷ
// _Sdata[1] = Convert.ToByte(60005 >> 8);
// _Sdata[2] = Convert.ToByte(Fid & 255);//����������
// _Sdata[3] = Convert.ToByte(Fid >> 8);
// _Sdata[4] = Convert.ToByte(TaskIndex & 255);//����������
// _Sdata[5] = Convert.ToByte(TaskIndex >> 8);
// _Sdata[6] = Convert.ToByte(AGVAddress & 255);//�ڵ�
// _Sdata[7] = Convert.ToByte(AGVAddress >> 8);
// _Sdata[8] = Convert.ToByte(forkNo & 255);//�����豸����
// _Sdata[9] = Convert.ToByte(forkNo >> 8);
// _Sdata[10] =Convert.ToByte(dorder & 255);//��������
// _Sdata[11] =Convert.ToByte(dorder >> 8);
// return SendData(DeviceIndex, _Sdata);
// #endregion
default :
break ;
}
return retvalue ;
}
catch ( Exception ex )
{
_ commLayerError = this . ToString ( ) + ":SendDeviceOrder---" + ex . Message ;
return false ;
}
finally
{
if ( retvalue = = true )
{
writeDark ( Fid , TaskIndex , DeviceIndex , dorder , AGVAddress ) ;
}
}
}
// �ӹ��������ŵõ��������ͣ�����AGV�������������´�����ʱ����'GOODS_TEMPLATE_ID'�ֶΣ����ȱ����� FREMARK �ֶ�
public byte GetGoodsIDfromManage ( int fid )
{
DataView dv ;
try
{
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( "SELECT GOODS_TEMPLATE_ID FROM T_MANAGE_TASK WHERE FID = " ) . Append ( fid ) ;
dv = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
if ( dv [ 0 ] [ 0 ] = = DBNull . Value )
{
return 0 ;
}
else
{
return Convert . ToByte ( dv [ 0 ] [ 0 ] ) ;
}
}
else
{
return 0 ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv = null ;
}
}
public void writeDark ( long Fid , int TaskIndex , int DeviceIndex , int dorder , int AGVAddress )
{
string barcode = string . Empty ;
StringBuilder sss = new StringBuilder ( "" ) ;
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 )
{
barcode = dvb [ 0 ] [ "F_TxtParam" ] . ToString ( ) ;
}
else
{
barcode = "-" ;
}
sss . Remove ( 0 , sss . Length ) ;
sss . Append ( "���룺" ) . Append ( barcode ) . Append ( "**д��־10003" ) . Append ( "**����������" + Fid . ToString ( ) ) . Append ( "**�豸ָ��������" + TaskIndex . ToString ( ) )
. Append ( "**������" + dorder . ToString ( ) ) . Append ( "**�" + AGVAddress . ToString ( ) ) ;
CommonClassLib . CCarryConvert . WriteDarkCasket ( this . ToString ( ) , "����AGVָ��" , DeviceIndex . ToString ( ) , sss . ToString ( ) ) ;
}
/// <summary>
/// ����AGV����
/// </summary>
/// <param name="MessageIndex">��Ϣ����</param>
/// <param name="TaskIndex">��������</param>
/// <param name="Order">AGV������ ������MAN֪ͨLCͨѶ���ӽ���������MAN֪ͨLCͨѶ���ӶϿ�</param>
/// <param name="DeviceIndex">�豸����</param>
/// <returns>����AGV�豸�����Ƿ��ɹ�</returns>
public bool SendDeviceOrder ( int MessageIndex , int TaskIndex , int Order , int DeviceIndex , int ArrowDeviceIndex )
{
Model . MDevice devinfo = Model . CGetInfo . GetDeviceInfo ( DeviceIndex ) ;
try
{
byte [ ] _ Sdata = new byte [ 2 ] ;
_ Sdata [ 0 ] = Convert . ToByte ( Order ) ;
_ Sdata [ 1 ] = 0 ;
_ Sdata [ 2 ] = Convert . ToByte ( TaskIndex & 2 5 5 ) ; //�Ͱ�λ
_ Sdata [ 3 ] = Convert . ToByte ( TaskIndex > > 8 ) ; //�߰�λ
//����DeviceIndex,�õ�SocketsͨѶ�ij�ʼ����
if ( devinfo = = null )
{
return false ;
}
else
{
CClientTCPIP . Send ( devinfo . RemoteIP , devinfo . RemotePort , _ Sdata ) ;
return true ;
}
}
catch ( Exception ex )
{
_ commLayerError = this . ToString ( ) + ":SendDeviceOrder---" + ex . Message ;
return false ;
}
finally
{
devinfo = null ;
}
}
/// <summary>
/// ��λ������λ���������䰴Ʒ�����ֵ���Ϣ��15�ֽ�,������ʱд��ʵ�����ݣ�����ȫ��д��
/// </summary>
/// <param name="DeviceIndex">����λ�豸������</param>
/// <param name="TobaccoCode">��1--13�ֽ�,������</param>
/// <param name="HaveFirstProjectCode">��14�ֽ�,1-��һ�Ź�����,0-��һ�Ź�����</param>
/// <param name="IfSmallTobacco">��15�ֽ�,1-С����,0-��������</param>
/// <returns></returns>
public bool SendDeviceOrder ( int DeviceIndex , string TobaccoCode , bool HaveFirstProjectCode , bool IfSmallTobacco , int Count )
{
return true ;
}
bool SendData ( int devID , byte [ ] _ Sdata )
{
//����DeviceIndex,�õ�SocketsͨѶ�ij�ʼ����
Model . MDevice devinfo = Model . CGetInfo . GetDeviceInfo ( devID ) ;
try
{
if ( devinfo = = null )
{
return false ;
}
else
{
if ( CClientTCPIP . Send ( devinfo . RemoteIP , devinfo . RemotePort , _ Sdata ) = = false )
{
if ( CClientTCPIP . TcpError ! = null ) _ commLayerError = CClientTCPIP . TcpError ;
return false ;
}
return true ;
}
}
finally
{
devinfo = null ;
}
}
/// <summary>
/// ��PLC��DB�������
/// </summary>
/// <param name="ItemNames">��ǩ������������</param>
/// <param name="ItemValues">��ǩֵ����</param>
/// <returns></returns>
public bool WriteDBData ( StringBuilder [ ] ItemNames , StringBuilder [ ] ItemValues )
{
return true ;
}
public bool WriteDBData ( StringBuilder [ ] ItemNames , StringBuilder [ ] ItemValues , string PLCconnectionID )
{
return true ;
}
void GetDeviceInfoFromAGVGate ( int agvGateDevice , ref char channelLeft , ref char useAwayFork , ref int AGVAddress )
{
DataView dv ;
try
{
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( "SELECT F_Address,F_IfChannelLeft,F_UseAwayFork FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = " ) . Append ( agvGateDevice ) . Append ( ")" ) ;
dv = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
channelLeft = Convert . ToChar ( dv [ 0 ] [ "F_IfChannelLeft" ] ) ;
useAwayFork = Convert . ToChar ( dv [ 0 ] [ "F_UseAwayFork" ] ) ;
// AGVAddress = Convert.ToChar(dv[0]["F_Address"]);
AGVAddress = Convert . ToInt32 ( dv [ 0 ] [ "F_Address" ] ) ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv = null ;
}
}
int GetAGVNoFromMonitor ( int taskIndex )
{
DataView dv ;
try
{
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( "SELECT F_AgvNo FROM T_Monitor_Task WHERE (F_MonitorIndex = " ) . Append ( taskIndex ) . Append ( ") and (F_AgvNo is not null)" ) ;
dv = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return Convert . ToInt32 ( dv [ 0 ] [ 0 ] ) ;
}
else
{
return 6 5 5 3 5 ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv = null ;
}
}
int GetAGVTaskFromMonitor ( int taskIndex )
{
DataView dv ;
try
{
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( "SELECT F_AgvTask FROM T_Monitor_Task WHERE (F_MonitorIndex = " ) . Append ( taskIndex ) . Append ( ") and (F_AgvTask is not null)" ) ;
dv = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return Convert . ToInt32 ( dv [ 0 ] [ 0 ] ) ;
}
else
{
return 6 5 5 3 5 ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv = null ;
}
}
/// <summary>
/// �Ƿ��к���������1���У�0����
/// <summary>
/// <param name="taskindex"></param>
/// <returns></returns>
int IfHaveNextTask ( int taskindex , int deviceindex , ref int NextOrder )
{
int mankind = Model . CGeneralFunction . GetManageTaskKindIndexFromMonitor ( taskindex ) ;
long fid = Model . CGeneralFunction . GetManageTaskIndexfromMonitor ( taskindex ) ;
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( "SELECT F_MonitorIndex, F_DEVICECOMMANDINDEX FROM T_Monitor_Task WHERE (F_DeviceCommandIndex <> 5) AND (F_DeviceIndex = " ) . Append ( deviceindex ) . Append ( ") AND (F_MonitorIndex <> " ) . Append ( taskindex ) . Append ( ") AND F_ManageTaskIndex=" ) . Append ( fid ) . Append ( " AND F_ManageTASKKINDINDEX=" ) . Append ( mankind ) . Append ( " ORDER BY F_MonitorIndex asc" ) ;
DataView dv = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
NextOrder = Convert . ToInt32 ( dv [ 0 ] [ "F_DEVICECOMMANDINDEX" ] ) ;
dv = null ;
return 1 ;
}
else
{
dv = null ;
return 0 ;
}
}
/// <summary>
/// ����fid���豸id �� AGV���� ���ض�Ӧ��������
/// <summary>
int GetTaskFromDeviceOrder ( int fid , int deviceIndx , int Order )
{
DataView dv ;
try
{
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( string . Format ( "select F_MonitorIndex from t_monitor_task where F_ManageTaskindex = {0} and F_DeviceIndex = {1} and F_DeviceCommandIndex = {2} order by F_MonitorIndex" , fid , deviceIndx , Order ) ) ;
dv = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return Convert . ToInt32 ( dv [ 0 ] [ 0 ] ) ;
}
else
{
return 0 ;
}
}
catch ( Exception ex )
{
throw ex ;
}
finally
{
dv = null ;
}
}
public bool SendDeviceOrder ( int MessageIndex , int TaskIndex , int Order , int DeviceIndex , int ArrowDeviceIndex , int boxnum )
{
return true ;
}
}
}