From 9376389dbf19d202f766a4fe47cf80dfe4db4f42 Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期四, 30 四月 2026 11:47:19 +0800
Subject: [PATCH] 规范读取modbus,增加容器出入场调接口
---
项目代码/WIDESEA_WCSServer/WIDESEAWCS_Tasks/TaskAcquisition/TaskAcquisition_Back1_Job.cs | 155 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 133 insertions(+), 22 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/TaskAcquisition/TaskAcquisition_Back1_Job.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/TaskAcquisition/TaskAcquisition_Back1_Job.cs"
index decf43d..450e111 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/TaskAcquisition/TaskAcquisition_Back1_Job.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WCSServer/WIDESEAWCS_Tasks/TaskAcquisition/TaskAcquisition_Back1_Job.cs"
@@ -1,15 +1,26 @@
-锘縰sing Quartz;
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using Quartz;
+using SixLabors.ImageSharp;
+using SqlSugar.Extensions;
using System;
using System.Collections.Generic;
+using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Common.StationEnum;
+using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.PDA;
using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_IBasicInfoService;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_Tasks.TaskAcquisition;
namespace WIDESEAWCS_Tasks
{
@@ -24,40 +35,140 @@
private readonly ITaskService _taskService;
private readonly ISys_ConfigService _sys_ConfigService;
private readonly IDt_StationManagerRepository _stationManagerRepository;
- public TaskAcquisition_Back1_Job(ITaskRepository taskRepository, ITaskService taskService, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository)
+ private readonly IDt_MaterialInfoRepository _IDt_MaterialInfoRepository;
+ public TaskAcquisition_Back1_Job(ITaskRepository taskRepository, ITaskService taskService, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_MaterialInfoRepository IDt_MaterialInfoRepository)
{
_taskRepository = taskRepository;
_taskService = taskService;
_sys_ConfigService = configService;
_stationManagerRepository = stationManagerRepository;
+ _IDt_MaterialInfoRepository = IDt_MaterialInfoRepository;
}
public Task Execute(IJobExecutionContext context)
{
- string ip = "127.0.0.1";
- int port = 502;
- string name = "鍚庡簳鏉�1";
- ModbusTcp modbusTcp = new ModbusTcp(ip, port, name);
- modbusTcp.Connect();
- //var a = modbusTcp.Read("40002", 20);
- //string barcode = Encoding.UTF8.GetString(a).Replace("\0", "").Replace("\\0", "");
+ bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+ if (flag && value != null)
+ {
+ OtherDevice device = (OtherDevice)value;
+ if (!device.IsConnected)
+ {
+ return Task.CompletedTask;
+ }
+ //string ip = "127.0.0.1";
+ //int port = 502;
+ //string Region = "鍚庡簳鏉�1";
+ //ModbusTcp modbusTcp = new ModbusTcp(ip, port, Region);
+ //modbusTcp.Connect();
+ // Dictionary<int, int> Signal = new Dictionary<int, int>() { [10] = 2, [30] = 3, [50] = 4, [70] = 5 };
+ // Dictionary<int, int> FeedingPoint = new Dictionary<int, int>() { [10] = 2001, [30] = 2002, [50] = 2003, [70] = 2004 }; // 鍙枡鐨勭偣浣� 缁堢偣浣嶇疆
- // 璇诲彇鎸囧畾鐨勫湴鍧�璇诲埌10杩涘埗鐨刟scii鐮佽浆鎴�16杩涘埗
- byte[] rawBytes = modbusTcp.Read("10", 20);
- string originalDecimalStr = Encoding.ASCII.GetString(rawBytes).TrimEnd('\0');
- Console.WriteLine($"璇诲彇鍒扮殑鍘熷鍗佽繘鍒跺瓧绗︿覆锛歿originalDecimalStr}");
- // 涓嬮潰杩欎竴娈靛氨鏄綘瑕佺殑锛氳浆 16 杩涘埗
- ulong number = ulong.Parse(originalDecimalStr); // 杞垚鏁板瓧
- string hexStr = number.ToString("X"); // 杞ぇ鍐�16杩涘埗
- Console.WriteLine("杞崲鎴�16杩涘埗锛�" + hexStr);
+ Baseconversion baseconversion = new Baseconversion();
+ try
+ {
+ List<Dt_StationManager> dt_StationManagers = _stationManagerRepository.QueryData(x =>
+ x.StationStatus == ((int)StationEnum.Enable).ToString()
+ && x.StationArea == ((int)StationEnum.Rearbaseplate1).ToString()
+ && x.Remark == "涓婄嚎鐐�").ToList();
+
+ foreach (var item in dt_StationManagers)
+ {
+ byte[] SignalNumber = device.Communicator.Read(item.StationChildCode, 1); // 淇″彿 1锛氬彨鏂� 2锛氭媺鍑虹┖妗�
+
+ if (SignalNumber[1] == 1)
+ {
+ byte[] PartNumber = device.Communicator.Read(item.StationDeviceCode, 20); // 璇诲彇闆朵欢鍙�
+
+ string Ku1_Value = baseconversion.TenthTurn16(PartNumber);
+ if (Ku1_Value.IsNotEmptyOrNull())
+ {
+ // 绛夊姛鑳芥祴璇曞畬锛岃繖閲岃鍋氭棩蹇楄褰�
+
+ Console.WriteLine(Ku1_Value);
+ // 鎵惧搴旂殑闆朵欢鍙锋槸鍚﹀凡缁忕粦瀹�(缁勭洏) // 杩欓噷瑕佹敼瑕佸姞鍖哄煙 鍔犳槸鍚﹀凡鐢熸垚浠诲姟 杩樿鏍规嵁鏃堕棿鎺掑簭 鍏堢粦瀹氱殑鍏堝彂杩囧幓
+ Dt_MaterialInfo? dt_MaterialInfo = _IDt_MaterialInfoRepository.QueryData(x => x.MaterialName == Ku1_Value
+ && x.Region == ((int)StationEnum.Rearbaseplate1).ToString()
+ && (x.IsNotEmptyOrNull())).OrderBy(x => x.CreateDate).FirstOrDefault();
+
+ if (dt_MaterialInfo != null)
+ {
+ Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.PalletCode == dt_MaterialInfo.ContainerCode);
+ if (dt_Task != null) continue; //璇佹槑鏈夊綋鍓嶄换鍔�
+
+ dt_Task = new Dt_Task();
+ dt_Task.PalletCode = dt_MaterialInfo.ContainerCode;
+ dt_Task.SourceAddress = dt_MaterialInfo.Position; // 褰撳墠浣嶇疆
+ dt_Task.TargetAddress = item.StationLocation; // 缁堢偣浣嶇疆
+ dt_Task.Grade = 2;
+ dt_Task.TaskState = (int)TaskAGVCarryStatusEnum.AGV_CarryNew;
+ dt_Task.TaskType = (int)TaskAGVCarryTypeEnum.Carry;
+ dt_Task.Roadway = (int.Parse(item.StationChildCode) - 1).ToString(); // 搴�1 鍙枡閭e氨鏄�1宸烽亾
+ dt_Task.CurrentAddress = dt_MaterialInfo.Position; // 褰撳墠浣嶇疆
+ dt_Task.NextAddress = item.StationLocation; // 缁堢偣浣嶇疆
+
+ dt_MaterialInfo.EndPosition = item.StationLocation; // 缁堢偣浣嶇疆
+
+ item.StationStatus = ((int)StationEnum.Thereisatask).ToString();
+ item.StationRemark = dt_MaterialInfo.ContainerCode;
+ _stationManagerRepository.UpdateData(item);
+
+ _taskRepository.AddData(dt_Task);
+ _IDt_MaterialInfoRepository.UpdateData(dt_MaterialInfo);
+ }
+
+ // 濡傛灉娌$粦瀹氬垯涓嶇敓鎴愪换鍔� 濡傛灉鏌ユ壘鍒板搴旂殑闆朵欢鍙风粦瀹氫簡 鍒欑敓鎴愪竴鏉′换鍔℃暟鎹�
+ }
+ }
+
+ if (SignalNumber[1] == 2) // 琛ㄧず鎷夊嚭绌烘
+ {
+ Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationLocation && x.TaskType == (int)TaskAGVCarryTypeEnum.CarryEmpty);
+ if (dt_Task != null) continue;
+
+ Dt_StationManager RecyclingpointStation = _stationManagerRepository.QueryFirst(x =>
+ x.StationStatus == ((int)StationEnum.Enable).ToString()
+ && x.StationArea == ((int)StationEnum.Rearbaseplate1).ToString()
+ && x.Remark == "鍥炴敹鐐�");
+
+ if (RecyclingpointStation == null)
+ {
+ // 璁板綍閿欒鏃ュ織
+ continue;
+ }
+ dt_Task = new Dt_Task();
+ dt_Task.PalletCode = item.StationRemark;
+ dt_Task.SourceAddress = item.StationLocation;
+ dt_Task.TargetAddress = RecyclingpointStation.StationLocation;
+ dt_Task.Grade = 2;
+ dt_Task.TaskState = (int)TaskAGVCarryStatusEnum.AGV_CarryNew;
+ dt_Task.TaskType = (int)TaskAGVCarryTypeEnum.CarryEmpty;
+ dt_Task.Roadway = (int.Parse(item.StationChildCode) - 1).ToString(); // 搴�1 鍙枡閭e氨鏄�1宸烽亾
+ dt_Task.CurrentAddress = item.StationLocation; // 褰撳墠浣嶇疆
+ dt_Task.NextAddress = RecyclingpointStation.StationLocation;// 缁堢偣浣嶇疆
+
+ RecyclingpointStation.StationStatus = ((int)StationEnum.Thereisatask).ToString();
+
+ _stationManagerRepository.UpdateData(RecyclingpointStation);
+ _taskRepository.AddData(dt_Task);
+ }
+ }
+ }
+ catch (Exception)
+ {
+
+ throw;
+ }
+ }
// 16杩涘埗杞垚10杩涘埗
// 2. 16杩涘埗 鈫� 杞洖鍗佽繘鍒讹紙浣犺鐨勫姛鑳斤級
- ulong decimalResult = Convert.ToUInt64(hexStr, 16);
- Console.WriteLine("16杩涘埗杞洖鍗佽繘鍒讹細" + decimalResult);
- bool flag = modbusTcp.Write("30", decimalResult.ToString());
+ //ulong decimalResult = Convert.ToUInt64("123", 16);
+ //Console.WriteLine("16杩涘埗杞洖鍗佽繘鍒讹細" + decimalResult);
- modbusTcp.Disconnect();
- Console.WriteLine("杩涘叆浜員askAcquisition_Back1_Job");
+ //// 鍐欏叆
+ //bool flag2 = modbusTcp.Write("30", decimalResult.ToString());
+
+ //modbusTcp.Disconnect();
+ //Console.WriteLine("杩涘叆浜員askAcquisition_Back1_Job");
return Task.CompletedTask;
}
}
--
Gitblit v1.9.3