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.
275 lines
9.7 KiB
275 lines
9.7 KiB
1 month ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Text;
|
||
|
using System.Data;
|
||
|
using System.Threading;
|
||
|
using Microsoft.VisualBasic;
|
||
|
using DBFactory;
|
||
|
using ICommLayer;
|
||
|
|
||
|
namespace FINSTCPIP
|
||
|
{
|
||
|
|
||
|
/// <summary>
|
||
|
/// 20210405 FINS Э��ͨѶ�ӿ�������
|
||
|
/// �����豸������
|
||
|
/// �����ߣ�zcy
|
||
|
/// </summary>
|
||
|
public class CSendDeviceOrder: ISendDeviceOrder
|
||
|
{
|
||
|
string _commLayerError;
|
||
|
|
||
|
public string CommLayerError
|
||
|
{
|
||
|
get { return _commLayerError; }
|
||
|
set { _commLayerError = value; }
|
||
|
}
|
||
|
DBOperator dbo = CommonClassLib.AppSettings.dbo;//20130510
|
||
|
public CSendDeviceOrder()
|
||
|
{
|
||
|
dbo.Open();
|
||
|
}
|
||
|
//~CSendDeviceOrder()
|
||
|
//{
|
||
|
// dbo.Close();
|
||
|
//}
|
||
|
|
||
|
/// <summary>
|
||
|
/// ���ʹ���������
|
||
|
/// </summary>
|
||
|
/// <param name="MessageIndex">��Ϣ����</param>
|
||
|
/// <param name="TaskIndex">��������</param>
|
||
|
/// <param name="Order">����������</param>
|
||
|
///1-����
|
||
|
///2-����
|
||
|
///3-�϶Ѷ���
|
||
|
///4-�¶Ѷ���
|
||
|
///6-��λ
|
||
|
///7-��ͷ��B��
|
||
|
///12-��ͷ��A��
|
||
|
///30-��ʼ����
|
||
|
///50-ֹͣ����
|
||
|
/// <returns>���ʹ����������Ƿ��ɹ�</returns>
|
||
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int ArrowDeviceIndex )
|
||
|
{
|
||
|
|
||
|
Model.MDevice devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIndex);
|
||
|
string shuttleIP = devinfo.RemoteIP;
|
||
|
|
||
|
if (FINSTCPIP.SHICANGProtocol.ShuttleConnected(shuttleIP) == false)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
StringBuilder sql = new StringBuilder();
|
||
|
DataView dv = new DataView();
|
||
|
|
||
|
|
||
|
//ֻ�������ͳ���ʱ�ż��� TaskIndex
|
||
|
if ( Order == 1 || Order == 2 )
|
||
|
{
|
||
|
sql.Remove(0, sql.Length);
|
||
|
sql.Append("SELECT * FROM T_Monitor_Task WHERE F_MonitorIndex = ").Append(TaskIndex).Append(" AND F_Status = 0");
|
||
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
||
|
if (dv.Count == 0)
|
||
|
{
|
||
|
_commLayerError = "FINSTCPIP.CSendDeviceOrder.SendDeviceOrder������������" + TaskIndex + " ��Ӧ�Ŀ���ָ��!";
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#region �ڳ����Ļ���������κ�ָ��ʱ�����ȷ�λ��(LYJL������Э��)
|
||
|
if (FINSTCPIP.SHICANGProtocol.ShuttleInBetteyLane(DeviceIndex) == true)
|
||
|
{
|
||
|
SHICANGProtocol.Order_InBetteyLocatLane(DeviceIndex);
|
||
|
#region �ڳ����Ļ�������ܷ����л�ģʽ
|
||
|
if (Order == 3 || Order == 4)
|
||
|
{
|
||
|
_commLayerError = "FINSTCPIP.CSendDeviceOrder.SendDeviceOrder����������"+ DeviceIndex + "�ڳ���λ�ã����ܷ����л�ģʽ��";
|
||
|
return false;
|
||
|
}
|
||
|
#endregion
|
||
|
}
|
||
|
#endregion
|
||
|
#region ����ֹ����ʱ����״̬�������С�������������
|
||
|
if (Order == 11)
|
||
|
{
|
||
|
if (devinfo.RunState == 0 || devinfo.SplitByte_3 == 1 || devinfo.RunState == 2)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
#region û������/�ڶѶ����ϣ����ܷ����κ�ָ��
|
||
|
int z = FINSTCPIP.SHICANGProtocol.GetZ(DeviceIndex);
|
||
|
if (z == 0 || z > 10 || z == -1)
|
||
|
{
|
||
|
_commLayerError = "FINSTCPIP.CSendDeviceOrder.SendDeviceOrder����������" + DeviceIndex + "���겻��ȷ�����ܷ���ָ�";
|
||
|
return false;
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
//����ʱ����10����ǰ�ģ�����Ϊ��״̬δ���£����ܷ���
|
||
|
//DateTime appdt = new DateTime();
|
||
|
//DateTime.TryParse(dv[0]["F_Time"].ToString(), out appdt);
|
||
|
//if (appdt.AddSeconds(10) < DateTime.Now)
|
||
|
//{
|
||
|
// return false;
|
||
|
//}
|
||
|
if (FINSTCPIP.SHICANGProtocol.GetTime(DeviceIndex).AddSeconds(10) < DateTime.Now)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
try
|
||
|
{
|
||
|
#region ������������Ҫ�ȼ��鳵λ�úͻ�λ�Ƿ�һ�� (δ����)
|
||
|
//���еij����궼��һ��Ҫ�����������г�һ�������³���
|
||
|
#endregion
|
||
|
|
||
|
if (MessageIndex != 1)
|
||
|
{
|
||
|
return false;
|
||
|
|
||
|
}
|
||
|
|
||
|
switch (Order)
|
||
|
{
|
||
|
case 1:
|
||
|
// RGV������������ǰ���Ѷ����Ż�վ̨ȡ�����͵���λ���
|
||
|
SHICANGProtocol.Order_SetGood(shuttleIP, TaskIndex);
|
||
|
break;
|
||
|
case 2:
|
||
|
// RGV������������ǰ����һ���л���λȡ���������Ѷ���ȡ��վ̨��
|
||
|
SHICANGProtocol.Order_GetGood(shuttleIP, TaskIndex);
|
||
|
break;
|
||
|
case 3:
|
||
|
// �������϶Ѷ���
|
||
|
SHICANGProtocol.Order_ChangeMode(shuttleIP, SHICANGProtocol.CHACHEMODE);
|
||
|
break;
|
||
|
case 4:
|
||
|
//�������¶Ѷ���
|
||
|
SHICANGProtocol.Order_ChangeMode(shuttleIP, SHICANGProtocol.DUIDUOMODE);
|
||
|
break;
|
||
|
case 7:
|
||
|
// ��������ͷ��B��
|
||
|
SHICANGProtocol.Order_ChangeAB(shuttleIP, SHICANGProtocol.TOBSIDE);
|
||
|
break;
|
||
|
case 12:
|
||
|
//��������ͷ��A��
|
||
|
SHICANGProtocol.Order_ChangeAB(shuttleIP, SHICANGProtocol.TOASIDE);
|
||
|
break;
|
||
|
case 10:
|
||
|
|
||
|
break;
|
||
|
case 11:
|
||
|
SHICANGProtocol.Order_ForbidShuttleMove(shuttleIP);
|
||
|
System.Threading.Thread.Sleep(100);
|
||
|
break;
|
||
|
case 13:
|
||
|
SHICANGProtocol.Order_AllowShuttleMove(shuttleIP);
|
||
|
break;
|
||
|
case 30:
|
||
|
SHICANGProtocol.Order_BeginCharge(shuttleIP);
|
||
|
break;
|
||
|
case 50:
|
||
|
// ������ֹͣ����
|
||
|
SHICANGProtocol.Order_EndCharge(shuttleIP);
|
||
|
|
||
|
break;
|
||
|
case 6:
|
||
|
//�����帴λ
|
||
|
SHICANGProtocol.Order_ResetShuttle(shuttleIP);
|
||
|
break;
|
||
|
case 5:
|
||
|
//��������ԭ��
|
||
|
SHICANGProtocol.Order_ToOrigin(shuttleIP);
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
|
||
|
//�ڷ��ͳɹ�ʱ������������SendOrderSuccess()
|
||
|
|
||
|
|
||
|
int Fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
|
||
|
writeDark(Fid, TaskIndex, DeviceIndex, Order, 0);
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
catch (Exception ex)
|
||
|
{
|
||
|
_commLayerError = this.ToString() + ":SendDeviceOrder---" + ex.Message;
|
||
|
return false;
|
||
|
}
|
||
|
finally
|
||
|
{
|
||
|
|
||
|
dv.Dispose();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
public void writeDark(int Fid, int TaskIndex, int DeviceIndex, int dorder, int AGVAddress)
|
||
|
{
|
||
|
DataView dv;
|
||
|
try
|
||
|
{
|
||
|
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(")");
|
||
|
dv = dbo.ExceSQL(sss.ToString()).Tables[0].DefaultView;
|
||
|
if (dv.Count > 0)
|
||
|
{
|
||
|
barcode = dv[0]["F_TxtParam"].ToString();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
barcode = "-";
|
||
|
}
|
||
|
sss.Remove(0, sss.Length);
|
||
|
sss.Append("���룺").Append(barcode).Append("").Append("**����������" + Fid.ToString()).Append("**�豸ָ��������" + TaskIndex.ToString())
|
||
|
.Append("**������" + dorder.ToString()).Append("**�" + AGVAddress.ToString());
|
||
|
|
||
|
CommonClassLib.CCarryConvert.WriteDarkCasket(this.ToString(), "����RGVָ��", DeviceIndex.ToString(), sss.ToString());
|
||
|
}
|
||
|
catch (Exception ex)
|
||
|
{
|
||
|
throw ex;
|
||
|
}
|
||
|
finally
|
||
|
{
|
||
|
dv = null;
|
||
|
}
|
||
|
}
|
||
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ)
|
||
|
{
|
||
|
_commLayerError = "������ָ���ʱ��ѡ�����ط�������";
|
||
|
return false;
|
||
|
}
|
||
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ, string DoubleFork)
|
||
|
{
|
||
|
return true;
|
||
|
|
||
|
}
|
||
|
public bool SendDeviceOrder(int DeviceIndex, string TobaccoCode, bool HaveFirstProjectCode, bool IfSmallTobacco, int Count)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
public bool WriteDBData(StringBuilder[] ItemNames, StringBuilder[] ItemValues)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
public bool WriteDBData(StringBuilder[] ItemNames, StringBuilder[] ItemValues, string PLCconnectionID)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|