| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using HslCommunication; |
| | | using Newtonsoft.Json; |
| | | using SixLabors.ImageSharp.ColorSpaces; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_BasicInfoRepository; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO.StackerHandTask; |
| | | using WIDESEAWCS_IBasicInfoRepository; |
| | | using WIDESEAWCS_Model.BasicInfo; |
| | | using WIDESEAWCS_QuartzJob.DeviceBase; |
| | | using WIDESEAWCS_QuartzJob.DeviceEnum; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Repository; |
| | | using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; |
| | | using static WIDESEAWCS_QuartzJob.Service.DeviceInfoService; |
| | | |
| | | namespace WIDESEAWCS_QuartzJob.Service |
| | | { |
| | | public class DeviceInfoService : ServiceBase<Dt_DeviceInfo, IDeviceInfoRepository>, IDeviceInfoService |
| | | { |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IDt_StationManagerRepository _stationManagerRepository; |
| | | private readonly IMapper _mapper; |
| | | public DeviceInfoService(IDeviceInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper) : base(BaseDal) |
| | | public DeviceInfoService(IDeviceInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IMapper mapper, IDt_StationManagerRepository stationManagerRepository) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _mapper = mapper; |
| | | _stationManagerRepository = stationManagerRepository; |
| | | } |
| | | |
| | | public override WebResponseContent AddData(SaveModel saveModel) |
| | |
| | | List<Dt_DeviceInfo> deviceInfos = await Db.Queryable<Dt_DeviceInfo>().Where(x => x.DeviceStatus == ((int)DeviceStatusEnum.Enable).ToString()).Includes(x => x.ProtocolList).ToListAsync(); |
| | | return _mapper.Map<List<DeviceInfoDTO>>(deviceInfos); |
| | | } |
| | | |
| | | #region å åæºæå¨å½ä»¤ |
| | | |
| | | public WebResponseContent StackerHandTask(HandTask stackerhand) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | StackerCraneTaskCommand stackerCraneTaskCommand = new StackerCraneTaskCommand(); |
| | | |
| | | if (stackerhand == null || stackerhand.TaskType == "") |
| | | { |
| | | return content.Error("请è¾å
¥ä»»å¡å½ä»¤"); |
| | | } |
| | | stackerCraneTaskCommand.WorkType = (byte)Convert.ToSByte(stackerhand.TaskType); |
| | | //å
¥åº |
| | | if (stackerhand.TaskType == "17") |
| | | { |
| | | string[] sourceCodes = stackerhand.SourceAddress.Split("-"); |
| | | if (sourceCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(sourceCodes[0]))); |
| | | stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); |
| | | stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"èµ·ç¹é误ï¼ã{stackerhand.SourceAddress}ã"); |
| | | } |
| | | |
| | | string[] targetCodes = stackerhand.TargetAddress.Split("-"); |
| | | if (targetCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(targetCodes[0]))); |
| | | stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); |
| | | stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ç»ç¹é误ï¼ã{stackerhand.TargetAddress}ã"); |
| | | } |
| | | } |
| | | //åºåº |
| | | else if (stackerhand.TaskType == "18") |
| | | { |
| | | string[] sourceCodes = stackerhand.SourceAddress.Split("-"); |
| | | if (sourceCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(sourceCodes[0]))); |
| | | stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); |
| | | stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"èµ·ç¹é误ï¼ã{stackerhand.SourceAddress}ã"); |
| | | } |
| | | string[] targetCodes = stackerhand.TargetAddress.Split("-"); |
| | | if (targetCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(targetCodes[0]))); |
| | | stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); |
| | | stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ç»ç¹é误ï¼ã{stackerhand.TargetAddress}ã"); |
| | | } |
| | | } |
| | | //ç§»åº |
| | | else if (stackerhand.TaskType == "20") |
| | | { |
| | | string[] sourceCodes = stackerhand.SourceAddress.Split("-"); |
| | | if (sourceCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(sourceCodes[0]))); |
| | | stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); |
| | | stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"èµ·ç¹é误ï¼ã{stackerhand.SourceAddress}ã"); |
| | | } |
| | | |
| | | string[] targetCodes = stackerhand.TargetAddress.Split("-"); |
| | | if (targetCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(targetCodes[0]))); |
| | | stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); |
| | | stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ç»ç¹é误ï¼ã{stackerhand.TargetAddress}ã"); |
| | | } |
| | | } |
| | | //åè´§ |
| | | else if (stackerhand.TaskType == "24") |
| | | { |
| | | string[] sourceCodes = stackerhand.SourceAddress.Split("-"); |
| | | if (sourceCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(sourceCodes[0]))); |
| | | stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(sourceCodes[1]); |
| | | stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(sourceCodes[2]); |
| | | |
| | | stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(0); |
| | | stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(0); |
| | | stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(0); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"èµ·ç¹é误ï¼ã{stackerhand.SourceAddress}ã"); |
| | | } |
| | | } |
| | | //æ¾è´§ |
| | | else if (stackerhand.TaskType == "48") |
| | | { |
| | | string[] targetCodes = stackerhand.TargetAddress.Split("-"); |
| | | if (targetCodes.Length == 3) |
| | | { |
| | | stackerCraneTaskCommand.StartRow = (byte)Convert.ToSByte(0); |
| | | stackerCraneTaskCommand.StartColumn = (byte)Convert.ToSByte(0); |
| | | stackerCraneTaskCommand.StartLayer = (byte)Convert.ToSByte(0); |
| | | |
| | | stackerCraneTaskCommand.EndRow = (byte)Convert.ToSByte(GetRowCode(Convert.ToInt32(targetCodes[0]))); |
| | | stackerCraneTaskCommand.EndColumn = (byte)Convert.ToSByte(targetCodes[1]); |
| | | stackerCraneTaskCommand.EndLayer = (byte)Convert.ToSByte(targetCodes[2]); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ç»ç¹é误ï¼ã{stackerhand.SourceAddress}ã"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content.Error("æªæ¾å°ä»»å¡å½ä»¤"); |
| | | } |
| | | StackerSendCommand(stackerCraneTaskCommand, stackerhand.DeviceCode); |
| | | return content; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent StackerReset(string DeviceCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | |
| | | if (device != null) |
| | | { |
| | | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device; |
| | | |
| | | commonStackerCrane.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(2)); |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent StackerEmergencyStop(string DeviceCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | |
| | | if (device != null) |
| | | { |
| | | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device; |
| | | |
| | | commonStackerCrane.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(2)); |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public void StackerSendCommand(StackerCraneTaskCommand? command,string DeviceCode) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | |
| | | if (device != null) |
| | | { |
| | | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)device; |
| | | if (commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Automatic) && !commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Fault) && !commonStackerCrane.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Running)) |
| | | { |
| | | commonStackerCrane.SetValue(StackerCraneDBName.TaskNum, (short)Convert.ToInt16(1)); |
| | | Thread.Sleep(100); |
| | | |
| | | commonStackerCrane.SetValue(StackerCraneDBName.StartRow, command.StartRow); |
| | | Thread.Sleep(100); |
| | | |
| | | commonStackerCrane.SetValue(StackerCraneDBName.StartColumn, command.StartColumn); |
| | | Thread.Sleep(100); |
| | | |
| | | commonStackerCrane.SetValue(StackerCraneDBName.StartColumn, command.StartLayer); |
| | | Thread.Sleep(100); |
| | | |
| | | commonStackerCrane.SetValue(StackerCraneDBName.EndRow, command.EndRow); |
| | | Thread.Sleep(100); |
| | | |
| | | commonStackerCrane.SetValue(StackerCraneDBName.EndColumn, command.EndColumn); |
| | | Thread.Sleep(100); |
| | | commonStackerCrane.SetValue(StackerCraneDBName.EndLayer, command.EndLayer); |
| | | Thread.Sleep(100); |
| | | commonStackerCrane.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(command.WorkType)); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("请å¨å åæºèæºæ¨¡å¼ãå¾
æºç¶æãæ æ
éçæ
åµä¸ä¸åä»»å¡"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | } |
| | | |
| | | public int GetRowCode(int number) |
| | | { |
| | | if (number == 1 || number == 15 || number == 11 || number == 19) |
| | | { |
| | | return 1; |
| | | } |
| | | else if (number == 2 || number == 5 || number == 8 || number == 12 || number == 16 || number == 20) |
| | | { |
| | | return 2; |
| | | } |
| | | else if (number == 3 || number == 6 || number == 9 || number == 13 || number == 17 || number == 21) |
| | | { |
| | | return 3; |
| | | } |
| | | else if (number == 4 || number == 7 || number == 10 || number == 14 || number == 18 || number == 22) |
| | | { |
| | | return 4; |
| | | } |
| | | else |
| | | { |
| | | throw new ArgumentOutOfRangeException(nameof(number), "è¾å
¥çæ°åå¿
é¡»å¨1-16èå´å
"); |
| | | } |
| | | } |
| | | public class StackerCraneTaskCommand |
| | | { |
| | | #region <Public Menber> |
| | | |
| | | /// <summary> |
| | | /// èµ·å§è¡ |
| | | /// </summary> |
| | | public byte StartRow { get; set; } |
| | | |
| | | /// <summary> |
| | | /// èµ·å§å |
| | | /// </summary> |
| | | public byte StartColumn { get; set; } |
| | | |
| | | /// <summary> |
| | | /// èµ·å§å± |
| | | /// </summary> |
| | | public byte StartLayer { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç®æ è¡ |
| | | /// </summary> |
| | | public byte EndRow { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç®æ å |
| | | /// </summary> |
| | | public byte EndColumn { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç®æ å± |
| | | /// </summary> |
| | | public byte EndLayer { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ä½ä¸ç±»å |
| | | /// </summary> |
| | | public byte WorkType { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// é¢çåè |
| | | /// </summary> |
| | | public byte Spare { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å· |
| | | /// </summary> |
| | | public short TaskNum { get; set; } |
| | | |
| | | #endregion <Public Menber> |
| | | } |
| | | public enum StackerCraneDBName |
| | | { |
| | | /// <summary> |
| | | /// ä»»å¡å· |
| | | /// </summary> |
| | | TaskNum, |
| | | |
| | | /// <summary> |
| | | /// ä½ä¸ç±»å |
| | | /// </summary> |
| | | WorkType, |
| | | |
| | | /// <summary> |
| | | /// èµ·å§è¡ |
| | | /// </summary> |
| | | StartRow, |
| | | |
| | | /// <summary> |
| | | /// èµ·å§å |
| | | /// </summary> |
| | | StartColumn, |
| | | |
| | | /// <summary> |
| | | /// èµ·å§å± |
| | | /// </summary> |
| | | StartLayer, |
| | | |
| | | /// <summary> |
| | | /// ç®æ è¡ |
| | | /// </summary> |
| | | EndRow, |
| | | |
| | | /// <summary> |
| | | /// ç®æ å |
| | | /// </summary> |
| | | EndColumn, |
| | | |
| | | /// <summary> |
| | | /// ç®æ å± |
| | | /// </summary> |
| | | EndLayer, |
| | | |
| | | /// <summary> |
| | | /// æçå· |
| | | /// </summary> |
| | | Barcode, |
| | | |
| | | /// <summary> |
| | | /// èµ·ç¹ |
| | | /// </summary> |
| | | StartAddress, |
| | | |
| | | /// <summary> |
| | | /// ç»ç¹ |
| | | /// </summary> |
| | | EndAddress, |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å®æ |
| | | /// </summary> |
| | | TaskCompleted, |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡åé |
| | | /// </summary> |
| | | SendTask, |
| | | |
| | | /// <summary> |
| | | /// èªå¨ç¶æ |
| | | /// </summary> |
| | | Automatic, |
| | | |
| | | /// <summary> |
| | | /// ä½ä¸å®æ |
| | | /// </summary> |
| | | WorkCompleted, |
| | | |
| | | /// <summary> |
| | | /// è¿è¡ä¸ |
| | | /// </summary> |
| | | Running, |
| | | |
| | | /// <summary> |
| | | /// æ
é |
| | | /// </summary> |
| | | Fault, |
| | | |
| | | /// <summary> |
| | | /// ä½ä¸ç±»å |
| | | /// </summary> |
| | | TaskType, |
| | | |
| | | /// <summary> |
| | | /// å½åä»»å¡å· |
| | | /// </summary> |
| | | CurrentTaskNum, |
| | | |
| | | /// <summary> |
| | | /// æè´§ |
| | | /// </summary> |
| | | InStock, |
| | | PickupLocation, |
| | | PutcargoLocation, |
| | | |
| | | /// <summary> |
| | | /// å½åå |
| | | /// </summary> |
| | | CurrentColumn, |
| | | |
| | | /// <summary> |
| | | /// å½åå± |
| | | /// </summary> |
| | | CurrentLayer, |
| | | |
| | | /// <summary> |
| | | /// æ°´å¹³ç¹ä½ |
| | | /// </summary> |
| | | LevelPoint, |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region è¾é线æå¨å½ä»¤ |
| | | |
| | | public WebResponseContent GetConveyorLineInfo(string DeviceChildCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | short x = conveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.InteractiveSignal, stationManager.stationChildCode); |
| | | var structs = BitConverter.GetBytes(x).ToArray().ToBoolArray(); |
| | | short ConveyorLineTaskNum = conveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.ConveyorLineTaskNum, stationManager.stationChildCode); |
| | | uint ConveyorLineAlarm = conveyorLine.GetValue<ConveyorLineDBName, uint>(ConveyorLineDBName.ConveyorLineAlarm, stationManager.stationChildCode); |
| | | ConveyorLineTaskCommand obj = new() |
| | | { |
| | | InStock = structs[2] == true ? "æè´§" : "空é²", |
| | | TaskNum = ConveyorLineTaskNum.ToString(), |
| | | Alarm = AlarmInfo(ConveyorLineAlarm) |
| | | }; |
| | | return content.OK(data:obj); |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent ConveyorLineHandTask(HandTask ConveyorLinehand) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (ConveyorLinehand == null || ConveyorLinehand.TaskType == "") |
| | | { |
| | | return content.Error("请è¾å
¥ä»»å¡å½ä»¤"); |
| | | } |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == ConveyorLinehand.DeviceCode); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | //å
¥åº |
| | | if (ConveyorLinehand.TaskType == "1") |
| | | { |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(ConveyorLinehand.TargetAddress), stationManager.stationChildCode); |
| | | Thread.Sleep(100); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(1), stationManager.stationChildCode); |
| | | Thread.Sleep(100); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(ConveyorLinehand.TaskType), stationManager.stationChildCode); |
| | | return content.OK("åéè¾é线å
¥åºä»»å¡æå!"); |
| | | } |
| | | //åºåº |
| | | else if (ConveyorLinehand.TaskType == "2") |
| | | { |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, Convert.ToInt16(ConveyorLinehand.TargetAddress), stationManager.stationChildCode); |
| | | Thread.Sleep(100); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, Convert.ToInt16(1), stationManager.stationChildCode); |
| | | Thread.Sleep(100); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(ConveyorLinehand.TaskType), stationManager.stationChildCode); |
| | | return content.OK("åéè¾é线åºåºä»»å¡æå!"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("æªæ¾å°ä»»å¡å½ä»¤"); |
| | | } |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent ConveyorLineReset(string DeviceChildCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(7), stationManager.stationChildCode); |
| | | return content.OK("å¤ä½æå"); |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent ConveyorLineEmergencyStop(string DeviceChildCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(7), stationManager.stationChildCode); |
| | | return content.OK("忢æå"); |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent ConveyorLineReturn(string DeviceChildCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode); |
| | | return content.OK("éåæå"); |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent ConveyorLineCancel(string DeviceChildCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(4), stationManager.stationChildCode); |
| | | return content.OK("åæ¶æå"); |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent ConveyorLineInitialize(string DeviceChildCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == DeviceChildCode); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(6), stationManager.stationChildCode); |
| | | return content.OK("åå§åæå"); |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | string AlarmInfo(uint Alarm) => Alarm switch |
| | | { |
| | | 0 => "æ¥å", |
| | | 1 => "åé¢å¨æ¥è¦1", |
| | | 2 => "åé¢å¨æ¥è¦2", |
| | | 3 => "å·¦è¶
宽", |
| | | 4 => "å³è¶
宽", |
| | | 5 => "è¶
é«", |
| | | 6 => "读ç 失败", |
| | | 7 => "è´§ç©è¶
é", |
| | | 8 => "è¿è¡è¶
æ¶", |
| | | 9 => "å·¥ä½ä¼ æå¨å¼å¸¸", |
| | | 10 => "é¢ç1", |
| | | 11 => "é¢ç2", |
| | | 12 => "é¢ç3", |
| | | 13 => "é¢ç4", |
| | | 14 => "é¢ç5", |
| | | 15 => "é¢ç6", |
| | | }; |
| | | |
| | | public enum ConveyorLineDBName |
| | | { |
| | | InteractiveSignal, |
| | | ConveyorLineBarcode, |
| | | ConveyorLineAlarm, |
| | | ConveyorLineTargetAddress, |
| | | ConveyorLineTaskNum, |
| | | |
| | | WriteInteractiveSignal, |
| | | WriteConveyorLineTargetAddress, |
| | | WriteConveyorLineTaskNum, |
| | | } |
| | | public class ConveyorLineTaskCommand |
| | | { |
| | | public string InStock { get; set; } |
| | | |
| | | public string TaskNum { get; set; } |
| | | |
| | | public string Alarm { get; set; } |
| | | } |
| | | #endregion |
| | | |
| | | #region RGVæå¨å½ä»¤ |
| | | public WebResponseContent RGVHandTask(HandTask RGVhand) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (RGVhand == null || RGVhand.TaskType == "") |
| | | { |
| | | return content.Error("请è¾å
¥ä»»å¡å½ä»¤"); |
| | | } |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == RGVhand.DeviceCode); |
| | | if (device != null) |
| | | { |
| | | if (RGVhand.DeviceCode == "RGV01" || RGVhand.DeviceCode == "RGV02") |
| | | { |
| | | CommonRGV_FirstFloor RGVcommand = (CommonRGV_FirstFloor)device; |
| | | if (RGVhand.TaskType == "1") |
| | | { |
| | | if (RGVhand.SourceAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PickupLocation = (byte)Convert.ToSByte(RGVhand.SourceAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandFirstFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}åå®ä½å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}åå®ä½å½ä»¤åè´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | } |
| | | else if (RGVhand.TaskType == "2") |
| | | { |
| | | if (RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandFirstFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}æ¾å®ä½å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}æ¾å®ä½å½ä»¤æ¾è´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "3") |
| | | { |
| | | if (RGVhand.SourceAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PickupLocation = (byte)Convert.ToSByte(RGVhand.SourceAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandFirstFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}åè´§å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}åè´§å½ä»¤åè´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "4") |
| | | { |
| | | if (RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandFirstFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}æ¾è´§å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}æ¾è´§å½ä»¤æ¾è´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "5") |
| | | { |
| | | if (RGVhand.TargetAddress != null && RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PickupLocation = (byte)Convert.ToSByte(RGVhand.SourceAddress), |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandFirstFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}åæ¾è´§å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}åæ¾è´§å½ä»¤æ¾è´§ä½ååè´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "6") |
| | | { |
| | | if (RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(4), |
| | | }; |
| | | SendCommandFirstFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}éå½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}éåå½ä»¤æ¾è´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}æªç¥ä»»å¡å½ä»¤"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | CommonRGV RGVcommand = (CommonRGV)device; |
| | | if (RGVhand.TaskType == "1") |
| | | { |
| | | if (RGVhand.SourceAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PickupLocation = (byte)Convert.ToSByte(RGVhand.SourceAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandSecondFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}åå®ä½å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}åå®ä½å½ä»¤åè´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | } |
| | | else if (RGVhand.TaskType == "2") |
| | | { |
| | | if (RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandSecondFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}æ¾å®ä½å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}æ¾å®ä½å½ä»¤æ¾è´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "3") |
| | | { |
| | | if (RGVhand.SourceAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PickupLocation = (byte)Convert.ToSByte(RGVhand.SourceAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandSecondFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}åè´§å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}åè´§å½ä»¤åè´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "4") |
| | | { |
| | | if (RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandSecondFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}æ¾è´§å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}æ¾è´§å½ä»¤æ¾è´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "5") |
| | | { |
| | | if (RGVhand.TargetAddress != null && RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PickupLocation = (byte)Convert.ToSByte(RGVhand.SourceAddress), |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandSecondFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}åæ¾è´§å½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("åæ¾è´§å½ä»¤æ¾è´§ä½ååè´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else if (RGVhand.TaskType == "6") |
| | | { |
| | | if (RGVhand.TargetAddress != null) |
| | | { |
| | | RGVTaskCommand command = new RGVTaskCommand() |
| | | { |
| | | PutcargoLocation = (byte)Convert.ToSByte(RGVhand.TargetAddress), |
| | | TaskType = (byte)Convert.ToSByte(RGVhand.TaskType), |
| | | }; |
| | | SendCommandSecondFloor(RGVcommand, command); |
| | | return content.OK($"{device.DeviceName}éåå½ä»¤ä¸åæå"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}éåå½ä»¤æ¾è´§ä½ä¸è½ä¸ºç©º"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"{device.DeviceName}æªç¥ä»»å¡å½ä»¤"); |
| | | } |
| | | } |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent RGVReset(string DeviceCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | if (device != null) |
| | | { |
| | | if (DeviceCode == "RGV01" || DeviceCode == "RGV02") |
| | | { |
| | | CommonRGV_FirstFloor commonRGV = (CommonRGV_FirstFloor)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(9)); |
| | | } |
| | | else |
| | | { |
| | | CommonRGV commonRGV = (CommonRGV)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(9)); |
| | | } |
| | | return content.OK($"{device.DeviceName}å¤ä½æå"); |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent RGVEmergencyStop(string DeviceCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | if (device != null) |
| | | { |
| | | if (DeviceCode == "RGV01" || DeviceCode == "RGV02") |
| | | { |
| | | CommonRGV_FirstFloor commonRGV = (CommonRGV_FirstFloor)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(11)); |
| | | } |
| | | else |
| | | { |
| | | CommonRGV commonRGV = (CommonRGV)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(11)); |
| | | } |
| | | return content.OK($"{device.DeviceName}忢æå"); |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent RGVCancel(string DeviceCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | if (device != null) |
| | | { |
| | | if (DeviceCode == "RGV01" || DeviceCode == "RGV02") |
| | | { |
| | | CommonRGV_FirstFloor commonRGV = (CommonRGV_FirstFloor)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(7)); |
| | | } |
| | | else |
| | | { |
| | | CommonRGV commonRGV = (CommonRGV)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(7)); |
| | | } |
| | | return content.OK($"{device.DeviceName}䏿æå"); |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent RGVInitialize(string DeviceCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | if (device != null) |
| | | { |
| | | |
| | | if (DeviceCode == "RGV01" || DeviceCode == "RGV02") |
| | | { |
| | | CommonRGV_FirstFloor commonRGV = (CommonRGV_FirstFloor)device; |
| | | DeviceProDTO? devicePro = commonRGV.DeviceProDTOs.Where(x => x.DeviceChildCode == commonRGV.DeviceCode && x.DeviceProParamName == "TaskType").FirstOrDefault(); |
| | | byte[] byt = Encoding.UTF8.GetBytes("08"); |
| | | commonRGV.Communicator.Write(devicePro.DeviceProAddress, byt); |
| | | } |
| | | else |
| | | { |
| | | CommonRGV commonRGV = (CommonRGV)device; |
| | | DeviceProDTO? devicePro = commonRGV.DeviceProDTOs.Where(x => x.DeviceChildCode == commonRGV.DeviceCode && x.DeviceProParamName == "TaskType").FirstOrDefault(); |
| | | byte[] byt = Encoding.UTF8.GetBytes("8"); |
| | | commonRGV.Communicator.Write(devicePro.DeviceProAddress, byt); |
| | | } |
| | | return content.OK($"{device.DeviceName}åå§åæå"); |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent RGVPause(string DeviceCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); |
| | | if (device != null) |
| | | { |
| | | if (DeviceCode == "RGV01" || DeviceCode == "RGV02") |
| | | { |
| | | CommonRGV_FirstFloor commonRGV = (CommonRGV_FirstFloor)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(10)); |
| | | } |
| | | else |
| | | { |
| | | CommonRGV commonRGV = (CommonRGV)device; |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(10)); |
| | | } |
| | | return content.OK($"{device.DeviceName}æåæå"); |
| | | } |
| | | return content.Error("æªæ¾å°è®¾å¤ä¿¡æ¯è¯·èç³»IT"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | public void SendCommandFirstFloor(CommonRGV_FirstFloor commonRGV, RGVTaskCommand? rgvTaskCommand) |
| | | { |
| | | commonRGV.SetValue(StackerCraneDBName.TaskNum, Convert.ToInt16(1)); |
| | | Thread.Sleep(100); |
| | | commonRGV.SetValue(StackerCraneDBName.PutcargoLocation, (byte)Convert.ToSByte(rgvTaskCommand.PutcargoLocation)); |
| | | Thread.Sleep(100); |
| | | commonRGV.SetValue(StackerCraneDBName.PickupLocation, (byte)Convert.ToSByte(rgvTaskCommand.PickupLocation)); |
| | | Thread.Sleep(100); |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(rgvTaskCommand.TaskType)); |
| | | |
| | | } |
| | | public void SendCommandSecondFloor(CommonRGV commonRGV, RGVTaskCommand? rgvTaskCommand) |
| | | { |
| | | commonRGV.SetValue(StackerCraneDBName.TaskNum, Convert.ToInt16(1)); |
| | | Thread.Sleep(100); |
| | | commonRGV.SetValue(StackerCraneDBName.PutcargoLocation, (byte)Convert.ToSByte(rgvTaskCommand.PutcargoLocation)); |
| | | Thread.Sleep(100); |
| | | commonRGV.SetValue(StackerCraneDBName.PickupLocation, (byte)Convert.ToSByte(rgvTaskCommand.PickupLocation)); |
| | | Thread.Sleep(100); |
| | | commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(rgvTaskCommand.TaskType)); |
| | | |
| | | } |
| | | |
| | | public class RGVTaskCommand |
| | | { |
| | | #region <Public Menber> |
| | | |
| | | /// <summary> |
| | | /// åè´§ä½ |
| | | /// </summary> |
| | | public byte PickupLocation { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¾è´§ä½ |
| | | /// </summary> |
| | | public byte PutcargoLocation { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡ç±»å |
| | | /// </summary> |
| | | public byte TaskType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é¢ç |
| | | /// </summary> |
| | | public byte Spare { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å· |
| | | /// </summary> |
| | | public short TaskNum { get; set; } |
| | | |
| | | |
| | | #endregion <Public Menber> |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |