using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WIDESEA_Common;
using WIDESEA_Common.Tools;
using WIDESEA_Entity.DomainModels;
using WIDESEA_WCS.WCSClient;
namespace WIDESEA_WCS.EquipBaseInfo
{
public class AGVBaseInfo
{
///
/// 写入任务
///
///
///
public static string TaskWrite(PLCClient client, dt_agvtask agvTask, AGVJobEnum jobEnum)//, Dt_agvtaskRepository agvTask
{
//bool operateResults = client.WriteValue(TaskDBName.taskInteractiveR.ToString(), 9);
#region 测试
List sendData = new List();
string tmp = agvTask.agv_tasknum.ToString();
List taskID = Encoding.Default.GetBytes(tmp).ToList();//任务ID
taskID.Insert(0, 30);
taskID.Insert(1, Convert.ToByte(tmp.Length));
for (int i = 0; i < 30 - tmp.Length; i++)
{
taskID.Add(0);
}
sendData.AddRange(taskID);
List taskStart = Encoding.Default.GetBytes(agvTask.agv_fromaddress).ToList();
taskStart.Insert(0, 20);
taskStart.Insert(1, Convert.ToByte(agvTask.agv_fromaddress.Length));
for (int i = 0; i < 20 - agvTask.agv_fromaddress.Length; i++)
{
taskStart.Add(0);
}
sendData.AddRange(taskStart);
List taskEnd = Encoding.Default.GetBytes(agvTask.agv_toaddress).ToList();
taskEnd.Insert(0, 20);
taskEnd.Insert(1, Convert.ToByte(agvTask.agv_toaddress.Length));
for (int i = 0; i < 20 - agvTask.agv_toaddress.Length; i++)
{
taskEnd.Add(0);
}
sendData.AddRange(taskEnd);
byte[] taskType = BitConverter.GetBytes((ushort)agvTask.agv_worktype.GetValueOrDefault()).ToArray();
Array.Reverse(taskType);
sendData.AddRange(taskType);
List containerType = Encoding.Default.GetBytes(agvTask.agv_barcode).ToList();
containerType.Insert(0, 30);
containerType.Insert(1, Convert.ToByte(agvTask.agv_barcode.Length));
for (int i = 0; i < 30 - agvTask.agv_barcode.Length; i++)
{
containerType.Add(0);
}
sendData.AddRange(containerType);
byte[] taskPriority = BitConverter.GetBytes((ushort)agvTask.agv_grade.GetValueOrDefault()).ToArray();
Array.Reverse(taskPriority);
sendData.AddRange(taskPriority);
byte[] taskFlag = BitConverter.GetBytes((ushort)jobEnum).ToArray();
Array.Reverse(taskFlag);
sendData.AddRange(taskFlag);
HslCommunication.OperateResult operateResult = client.SiemensPLCClient.SiemensS7NetClient.Write("DB1000.0", sendData.ToArray());
if (!operateResult.IsSuccess)
return operateResult.Message;
WriteLog.Info("AGV发送任务").Write("任务号" + agvTask.agv_tasknum + "AGV编号" + client.PLCName+DateTime.Now, "AGV发送任务");
#endregion
//bool flag = client.WriteValue(TaskDBName.taskID.ToString(), agvTask.agv_barcode);
//if (!flag)
// return "AGV任务ID写入失败";
//if (!string.IsNullOrEmpty(agvTask.agv_fromaddress))
//{
// flag = client.WriteValue(TaskDBName.taskStart.ToString(), agvTask.agv_fromaddress);
// if (!flag)
// return "AGV任务起点写入失败";
//}
//if (!string.IsNullOrEmpty(agvTask.agv_toaddress))
//{
// flag = client.WriteValue(TaskDBName.taskEnd.ToString(), agvTask.agv_toaddress);
// if (!flag)
// return "AGV任务终点写入失败";
//}
//if (!string.IsNullOrEmpty(agvTask.agv_tasktype))
//{
// flag = client.WriteValue(TaskDBName.taskType.ToString(), agvTask.agv_worktype);
// if (!flag)
// return "AGV任务类型写入失败";
//}
////if (!string.IsNullOrEmpty(agvTask.containerType))
////{
//// flag = client.WriteValue(TaskDBName.containerType.ToString(), agvTask.containerType);
//// if (!flag)
//// return "AGV任务容器类型写入失败";
////}
//flag = client.WriteValue(TaskDBName.taskPriority.ToString(), agvTask.agv_grade);
//if (!flag)
// return "AGV任务优先级写入失败";
////if (!string.IsNullOrEmpty(agvTask.excuteAgvCode))
////{
//// flag = client.WriteValue(TaskDBName.excuteAgvCode.ToString(), agvTask.excuteAgvCode);
//// if (!flag)
//// return "AGV编号写入失败";
////}
//flag = client.WriteValue(TaskDBName.taskInteractiveW.ToString(), ((int)jobEnum));
//if (!flag)
// return "AGV任务启动命令写入失败。" + ((int)jobEnum);
return "";
}
}
}