You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

925 lines
35 KiB

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
{//20230811richard.liu�����ڰ�S7�����������ͣ��ع�CControl.cs\�ļ���Communication��Common��ͨѶCSendDeviceOrder: ISendDeviceOrder�����ļ�
string _commLayerError;
StringBuilder sql = new StringBuilder();
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����̨ 60001
///2 ���ص���ͨѶ���ӶϿ� ���ص���->AGV����̨ 60002
///3 �´����� ���ص���->AGV����̨ 60003[T1][T2][T][P][K][A] [F][C]
///[N1][O]
///[N2][O]
///����
///[CK] T1����������,T2����������;
///T��������;65535
///PΪ���ȼ�(ȡֵ��Χ2-10,Խ�����ȼ�Խ��);2
///K��������;65535
///A��������;65535
///FΪ����������ʶ(1-�к�������,0-�޺�������);
///CΪ�ڵ�����;
///N1��N2Ϊ�ڵ���;
///OΪ�����豸����(AGV����̨�ṩ);
///CKУ����(�������������밴�޷������ӷ�)
///4 �´�����ȷ�� AGV����̨->���ص��� 60003[T1][T2] [CK] T1Ϊ����������,T2Ϊ����������;
///5 AGV������ʼ AGV����̨->���ص��� 60004[T1][T2][A] [CK] AΪ��������;
///6 ������ʼȷ�� ���ص���->AGV����̨ 60004[T1][T2] [CK]
///7 AGV�������� AGV����̨->���ص��� 60005[T1][T2] [A] [CK]
///8 ��������ȷ�� ���ص���->AGV����̨ 60005[T1][T2] [CK]
///9 ��������ɾ������ ���ص���->AGV����̨ 60006[T1][T2] [CK]
///10 ��������ɾ�������ظ� AGV����̨->���ص��� 60006[T1][T2][A] [CK] AΪ����״̬(0-������,1-����)
///11
///����̨����ɾ������ AGV����̨->���ص��� 60007[T1][T2] [CK]
///12 ����̨����ɾ������ȷ�� ���ص���->AGV����̨ 60007[T1][T2] [CK]
///13 ���ز�ѯAGV״̬ ���ص���->AGV����̨ 60008 [A][CK] AΪ��������;
///14 ��ѯAGV״̬ȷ�� AGV����̨->���ص��� 60008 [C] [CK] CΪ������Ŀ;
///15 ����̨�ϱ�AGV״̬ AGV����̨->���ص��� 60009[A][T1][S] [E] [W][B]
///[N][O][CK] A��������;
///T1����������;
///SΪ��ǰ·������;
///EΪ��ǰ·���յ�;
///WΪ����״̬��
///BΪ����״̬��
///NΪĿ���ڵ㣻
///OΪ�����룻
///16 ȷ��AGV״̬ ���ص���->AGV����̨ 60009[A] [CK] AΪ��������;
///17 ���ط�����Ϣ ���ص���->AGV����̨ 60007[T1][T2]
///18 ���ص�������ɾ�������ظ� AGV����̨->���ص��� 60006[T1][T2][A] AΪ����״̬(0-������,1-����)
///19 AGV�������������ڵ� AGV����̨->���ص��� 60058[N][A] NΪ�ڵ�; AΪ����
///20 AGV����λ��״̬ AGV����̨->���ص��� 60059[A][S][X][Y][G] AΪ����;SΪ״̬(0-������1-����);XΪX����;
///YΪY����;GΪ�Ƕ�
///21 AGV���ϱ��� AGV����̨->���ص��� 60060[T1][T2][A][C] AΪ����; CΪ���ϴ���
///AGV����̨�����ص���ϵͳ���͵�Ӧ���źſɸ�������ȷ��,ͨѶ��ʽΪ600xx[T1][T2],�Բ�ͬ���źŲ��ò�ͬ�ı�ʶ����Ӧ��
/// </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>
/// //YHC20160412 ��������ȫ�滻��
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ, out StringBuilder[] _itemnames, out StringBuilder[] _itemvalues)
{
//StartXȡ�豸���� EndX���豸����
//20100413����StartX��ȡ�豸����������ǰ�����복βԶ���桢�󣨾��복β������
//վ�ڳ�β�����н������������ҷ�����
//�жϹ���˫���Ƿ�ͬ������
char useAwayFork = '0';
char channelLeft = '0';
int AGVAddress = 0;
string LogAddress = "";
int dorder = 0;
int _device = GetAGVNoFromMonitor(TaskIndex);
int Fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
//byte goodsID = GetGoodsIDfromManage(Fid); // �ӹ��������õ���Ʒ����
byte[] _Sdata;
int NextOrder = 0; // ��һ���������룬�˶�ʱ����AGV����; 0û����һ��������2ȡ�����ͻ���
int HaveNextTask = IfHaveNextTask(TaskIndex, DeviceIndex, ref NextOrder);
int forkNo = 0; int ck = 0;
bool retvalue = false;
int FPALLETBARCODE = GetFPALLETBARCODEfromManage(Fid);//lyyyyy0928
int FREMARK = GetFREMARKfromManage(Fid);
try
{
if (MessageIndex != 1)
{
return false;
}
switch (Order)
{
case 1://�˶����� StartXȡ�豸����
#region �˶�����
GetDeviceInfoFromAGVGate(StartX, ref channelLeft, ref useAwayFork, ref AGVAddress);// �˶�����������豸����AGV�ر���
_Sdata = new byte[28];
_Sdata[0] = Convert.ToByte(10003 & 255); //֡ͷ
_Sdata[1] = Convert.ToByte((10003 >> 8) & 255);
_Sdata[2] = Convert.ToByte(Fid & 255);//����������
_Sdata[3] = Convert.ToByte((Fid >> 8) & 255);
_Sdata[4] = Convert.ToByte((Fid >> 16) & 255);
_Sdata[5] = Convert.ToByte((Fid >> 24) & 255);
_Sdata[6] = Convert.ToByte(TaskIndex & 255);//����������
_Sdata[7] = Convert.ToByte((TaskIndex >> 8) & 255);
_Sdata[8] = Convert.ToByte(65535 & 255);//��������
_Sdata[9] = Convert.ToByte((65535 >> 8) & 255);
_Sdata[10] = Convert.ToByte(65535 & 255);//��Ʒ����
_Sdata[11] = Convert.ToByte((65535 >> 8) & 255);
_Sdata[12] = 2;//���ȼ�
_Sdata[13] = 0;
_Sdata[14] = 0;//��������
_Sdata[15] = 0;
_Sdata[16] = 0;//��������
_Sdata[17] = 0;
_Sdata[18] = 1;//��������
_Sdata[19] = 0;
_Sdata[20] = 2;//��������
_Sdata[21] = 0;
_Sdata[22] = Convert.ToByte(AGVAddress & 255);//ȡ���ڵ���
_Sdata[23] = Convert.ToByte((AGVAddress >> 8) & 255);
// dorder = 65535;
_Sdata[24] = Convert.ToByte(Order & 255);//Convert.ToByte(Order & 255);//�豸�������ţ��޶���65535 --Convert.ToByte(NextOrder);
_Sdata[25] = Convert.ToByte((Order >> 8) & 255); // ��λFF03
for (int i = 0; i <= 25; i++)
{
ck += Convert.ToInt32(_Sdata[i]);
}
_Sdata[26] = Convert.ToByte(ck & 255);//У����(�������������밴�޷������ӷ�)
_Sdata[27] = Convert.ToByte((ck >> 8) & 255);
retvalue= SendData(DeviceIndex, _Sdata);
#endregion
break;
case 2://ȡ������
#region ȡ������
GetDeviceInfoFromAGVGate(StartX, ref channelLeft, ref useAwayFork, ref AGVAddress);
int monitorsendaddress = MonitorSendAdderss(Fid);
int senadress = GetsendAGVAddress(monitorsendaddress);
LogAddress = senadress.ToString();
dorder = 2;//ȡ������
//if (channelLeft == '1')
//{
// dorder = 1;//��ȡ
//}
//else
//{
// dorder = 3;//��ȡ
//}
if ((Model.CGeneralFunction.MutiForkIfSync(TaskIndex, DeviceIndex, 6) == null) && (AGVAllowSingleFork == "1"))//20100710
{//����ͬ��
if (useAwayFork == '1')//ǰ��
{
forkNo = 1;
}
else//����
{
forkNo = 2;
}
}
else
{//ͬ��
forkNo = 4;
}
_Sdata = new byte[35];
_Sdata[0] = Convert.ToByte(10003 & 255); //֡ͷ
_Sdata[1] = Convert.ToByte((10003 >> 8) & 255);
_Sdata[2] = Convert.ToByte(Fid & 255);//����������
_Sdata[3] = Convert.ToByte((Fid >> 8) & 255);
_Sdata[4] = Convert.ToByte((Fid >> 16) & 255);
_Sdata[5] = Convert.ToByte((Fid >> 24) & 255);
_Sdata[6] = Convert.ToByte(TaskIndex & 255);//����������
_Sdata[7] = Convert.ToByte((TaskIndex >> 8) & 255);
_Sdata[8] = Convert.ToByte(65535 & 255);//��������
_Sdata[9] = Convert.ToByte((65535 >> 8) & 255);
_Sdata[10] = Convert.ToByte(FPALLETBARCODE & 255);//��Ʒ����
_Sdata[11] = Convert.ToByte((FPALLETBARCODE >> 8) & 255);
_Sdata[12] = 2;//���ȼ�
_Sdata[13] = 0;//LSP20161002
//_Sdata[14] = goodsID;//�������� -- ������������bba 13\14ʱ������ ��λ
//_Sdata[15] = 0;
_Sdata[14] = Convert.ToByte(65535 & 255);//��������
_Sdata[15] = Convert.ToByte((65535 >> 8) & 255);
_Sdata[16] = 0;//��������
_Sdata[17] = 0;
_Sdata[18] = 0;//��������
_Sdata[19] = 0;
_Sdata[20] = 2;//��������,�ڵ� + ���� + �ͻ��ڵ� + ����
_Sdata[21] = 0;
_Sdata[22] = Convert.ToByte(AGVAddress & 255);//�ڵ���
_Sdata[23] = Convert.ToByte((AGVAddress >> 8) & 255);
_Sdata[24] = Convert.ToByte(Order & 255);//�豸��������
_Sdata[25] = Convert.ToByte((Order >> 8) & 255);
//_Sdata[26] = Convert.ToByte(senadress & 255);
//_Sdata[27] = Convert.ToByte((senadress >>8) & 255);//�ͻ���Ŀ�ĵ�ַ
//int FPALLETBARCODE = GetFPALLETBARCODEfromManage(Fid); // �ӹ��������õ���Ʒ����
//_Sdata[28] = Convert.ToByte(FPALLETBARCODE & 255);//�豸��������
//_Sdata[29] = Convert.ToByte((FPALLETBARCODE >> 8) & 255);
for (int i = 0; i <= 25; i++)
{
ck += Convert.ToInt32(_Sdata[i]);
}
_Sdata[26] = Convert.ToByte(ck & 255);//У����(�������������밴�޷������ӷ�)
_Sdata[27] = Convert.ToByte((ck >> 8) & 255);
retvalue = SendData(DeviceIndex, _Sdata);
#endregion
break;
case 3://�ͻ�
#region �ͻ�
GetDeviceInfoFromAGVGate(EndX, ref channelLeft, ref useAwayFork, ref AGVAddress);
int FindNextTask = GetFindNextTask();
int nextaddress = GetsendAGVAddress(FindNextTask);
LogAddress = nextaddress.ToString();
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 = 4;
}
_Sdata = new byte[30];
_Sdata[0] = Convert.ToByte(10003 & 255); //֡ͷ
_Sdata[1] = Convert.ToByte((10003 >> 8) & 255);
_Sdata[2] = Convert.ToByte(Fid & 255);//����������
_Sdata[3] = Convert.ToByte((Fid >> 8) & 255);
_Sdata[4] = Convert.ToByte((Fid >> 16) & 255);
_Sdata[5] = Convert.ToByte((Fid >> 24) & 255);
_Sdata[6] = Convert.ToByte(TaskIndex & 255);//����������
_Sdata[7] = Convert.ToByte((TaskIndex >> 8) & 255);
_Sdata[8] = Convert.ToByte(65535 & 255);//��������
_Sdata[9] = Convert.ToByte((65535 >> 8) & 255);
_Sdata[10] = Convert.ToByte(FPALLETBARCODE & 255);//��Ʒ����
_Sdata[11] = Convert.ToByte((FPALLETBARCODE >> 8) & 255);
_Sdata[12] = 2;//���ȼ�
_Sdata[13] = 0;
_Sdata[14] = Convert.ToByte(65535 & 255);//��������
_Sdata[15] = Convert.ToByte((65535 >> 8) & 255);
_Sdata[16] = 0;//��������
_Sdata[17] = 0;
_Sdata[18] = 0;//����������ʶ
_Sdata[19] = 0;
_Sdata[20] = 2;//�������� ȡ���ڵ���+�豸��������+�ͻ��ڵ���
_Sdata[21] = 0;
_Sdata[22] = Convert.ToByte(AGVAddress & 255);//�ڵ���
_Sdata[23] = Convert.ToByte((AGVAddress >> 8) & 255);
_Sdata[24] = Convert.ToByte(Order & 255);//�豸��������
_Sdata[25] = Convert.ToByte((Order >> 8) & 255);
//_Sdata[26] = Convert.ToByte(nextaddress & 255);//�ͻ��ڵ���
//_Sdata[27] = Convert.ToByte((nextaddress >> 8)& 255);//�ڵ���
for (int i = 0; i <= 25; i++)
{
ck += Convert.ToInt32(_Sdata[i]);
}
_Sdata[26] = Convert.ToByte(ck & 255);//У����(�������������밴�޷������ӷ�)
_Sdata[27] = Convert.ToByte((ck >> 8) & 255);
retvalue = SendData(DeviceIndex, _Sdata);
#endregion
break;
case 4://ȡ�ͻ�
#region ȡ�ͻ�
//GetDeviceInfoFromAGVGate(StartX, ref channelLeft, ref useAwayFork, ref AGVAddress);
int agvGetAddress = GetsendAGVAddress(StartX);
int agvSendAddress = GetsendAGVAddress(EndX);
LogAddress = agvGetAddress.ToString() + "," + agvSendAddress.ToString();
dorder = 4;//ȡ������
_Sdata = new byte[30];
_Sdata[0] = Convert.ToByte(10003 & 255); //֡ͷ
_Sdata[1] = Convert.ToByte((10003 >> 8) & 255);
_Sdata[2] = Convert.ToByte(Fid & 255);//����������
_Sdata[3] = Convert.ToByte((Fid >> 8) & 255);
_Sdata[4] = Convert.ToByte((Fid >> 16) & 255);
_Sdata[5] = Convert.ToByte((Fid >> 24) & 255);
_Sdata[6] = Convert.ToByte(TaskIndex & 255);//����������
_Sdata[7] = Convert.ToByte((TaskIndex >> 8) & 255);
_Sdata[8] = 0;//��������
_Sdata[9] = 0;
_Sdata[10] = Convert.ToByte(FREMARK & 255);//��Ʒ����
_Sdata[11] = Convert.ToByte((FREMARK >> 8) & 255);
_Sdata[12] = 2;//���ȼ�
_Sdata[13] = 0;//LSP20161002
//_Sdata[14] = goodsID;//�������� -- ������������bba 13\14ʱ������ ��λ
//_Sdata[15] = 0;
_Sdata[14] = Convert.ToByte(65535 & 255);//��������
_Sdata[15] = Convert.ToByte((65535 >> 8) & 255);
_Sdata[16] = 0;//��������
_Sdata[17] = 0;
_Sdata[18] = 0;//��������
_Sdata[19] = 0;
_Sdata[20] = 2;//��������,ȡ���ڵ� + �ͻ��ڵ�
_Sdata[21] = 0;
_Sdata[22] = Convert.ToByte(agvGetAddress & 255);//ȡ���ڵ�
_Sdata[23] = Convert.ToByte((agvGetAddress >> 8) & 255);
_Sdata[24] = Convert.ToByte(agvSendAddress & 255);//�ͻ��ڵ�
_Sdata[25] = Convert.ToByte((agvSendAddress >> 8) & 255);
for (int i = 0; i <= 25; i++)
{
ck += Convert.ToInt32(_Sdata[i]);
}
if (ck >= 256)
{
ck = ck % 256;
}
_Sdata[26] = Convert.ToByte(ck & 255);//У����(�������������밴�޷������ӷ�)
//_Sdata[27] = Convert.ToByte((ck >> 8) & 255);
retvalue = SendData(DeviceIndex, _Sdata);
#endregion
break;
default:
break;
}
return retvalue;
}
catch (Exception ex)
{
_commLayerError = this.ToString() + ":SendDeviceOrder---" + ex.Message;
return false;
}
finally
{
_itemnames = null;
_itemvalues= null;
if (retvalue == true)
{
writeDark(Fid, TaskIndex, DeviceIndex, dorder, LogAddress);
}
}
}
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 int GetFPALLETBARCODEfromManage(int fid)//lyyyyy0928
{
DataView dv;
try
{
int aaa = 0;
sql.Remove(0, sql.Length);
sql.Append("SELECT [FPALLETBARCODE] 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 if (dv[0][0].ToString().Length == 0)
{
return 0;
}
else
{
if (dv[0][0].ToString().Substring(0, 1) == "A")//F
{
aaa = Convert.ToInt32(dv[0][0].ToString().Substring(2, 4)) + 10000;
return aaa;
}
else if (dv[0][0].ToString().Substring(0, 1) == "B")//N
{
aaa = Convert.ToInt32(dv[0][0].ToString().Substring(2, 4)) + 20000;
return aaa;
}
else if (dv[0][0].ToString().Substring(0, 1) == "C")//
{
aaa = Convert.ToInt32(dv[0][0].ToString().Substring(2, 4)) + 30000;
return aaa;
}
else if (dv[0][0].ToString().Substring(0, 1) == "D")//
{
aaa = Convert.ToInt32(dv[0][0].ToString().Substring(2, 4)) + 40000;
return aaa;
}
return 0;
}
}
else
{
return 0;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv = null;
}
}
public int GetFREMARKfromManage(int fid)
{
DataView dv;
try
{
int aaa = 0;
sql.Remove(0, sql.Length);
sql.Append("SELECT FREMARK 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
{
aaa = Convert.ToInt32(dv[0][0].ToString());
return aaa;
}
}
else
{
return 0;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv = null;
}
}
public void writeDark(int Fid, int TaskIndex, int DeviceIndex, int dorder, string 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, out StringBuilder[] _itemnames, out StringBuilder[] _itemvalues)
{
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 & 255);//�Ͱ�λ
_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
{
_itemnames = null;
_itemvalues = null;
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 MonitorSendAdderss(int manageidex)//����agv�ͻ��������豸ָ����
{
DataView LY = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("select F_NumParam5 from dbo.T_Monitor_Task where F_DeviceCommandIndex=3 and F_ManageTaskIndex=").Append(manageidex);
LY = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (LY.Count > 0)
{
return Convert.ToInt32(LY[0]["F_NumParam5"]);
}
else
{
return 0;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
LY.Dispose();
}
}
int GetsendAGVAddress(int adress)//����agv�ͻ��������豸ָ����
{
DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_Address FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = ").Append(adress).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0]["F_Address"]);
}
else
{
//return 65535;
return adress;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
int GetFindNextTask()//����agv�ͻ���������ȡ�������ĵ�ַ
{
DataView LY = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("select top 1 F_ManageTaskIndex ,F_NumParam2 from dbo.T_Monitor_Task where F_DeviceCommandIndex=2 and F_SendFlag ='0' and F_DeviceIndex =1001");
LY = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (LY.Count > 0)
{
return Convert.ToInt32(LY[0]["F_NumParam2"]);
}
else
{
return 0;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
LY.Dispose();
}
}
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 65535;
}
}
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 65535;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv = null;
}
}
/// <summary>
/// �Ƿ��к���������1���У�0����
/// </summary>
/// <param name="taskindex"></param>
/// <returns></returns>
int IfHaveNextTask(int taskindex,int deviceindex)
{
int mankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(taskindex);
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(taskindex);
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex 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 DESC");
DataView dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView ;
if (dv.Count > 0)
{
dv = null;
return 1;
}
else
{
dv = null;
return 0;
}
}
int IfHaveNextTask(int taskindex, int deviceindex, ref int NextOrder)
{
int mankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(taskindex);
int 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;
}
}
}
}