yanjinhui
2025-06-07 9250e3e48760f91fbefef03331fc7b14b4b1be18
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs
@@ -5,6 +5,7 @@
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using SqlSugar;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseRepository;
@@ -53,23 +54,94 @@
                int ext = (int)para.ExtendSpeed;//左PLC自动伸出缩回速度
                int ret = (int)para.RetractionSpeed;//右PLC自动伸出缩回速度
                int liftPosition= (int)para.LeftPosition;//左伸出位置
                int rigtpostition= (int)para.RightPosition;//右伸出位置
                try
                {
                    var leftorigin = devices.Value.left.Communicator.Read<bool>("M115");//左plc到原点位置信号
                    var rightorigin = devices.Value.right.Communicator.Read<bool>("M115");//右plc到达原点位置信号
                    if (leftorigin == true || rightorigin == true)
                    {
                        return new WebResponseContent { Status = false, Message = "已到原始点" };
                    }
                }
                catch (Exception)
                {
                }
                try
                {
                    var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//左plc到达目标位置
                    var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                    if (lefttarget == true || righttarget == true)
                    {
                        return new WebResponseContent { Status = false, Message = "已到最大值" };
                    }
                }
                catch (Exception)
                {
                }
                if (ExtendedState == "伸出")
                {
                    devices.Value.left.Communicator.Write<int>("D1001", ext);//左PLC自动伸出缩回速度
                    devices.Value.left.Communicator.Write<bool>("M102", true);//伸出按钮
                    devices.Value.right.Communicator.Write<int>("D1001", ret);//右PLC自动伸出缩回速度
                    devices.Value.right.Communicator.Write<bool>("M102", true);//伸出按钮
                    Console.WriteLine($"自动伸缩杆伸出 {ext}");
                    try
                    {
                        devices.Value.left.Communicator.Write<int>("D1001", ext);//左PLC自动伸出缩回速度
                        devices.Value.left.Communicator.Write<bool>("M102", true);//伸出按钮
                        Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                        devices.Value.left.Communicator.Write<bool>("M102", false); // 释放按钮
                        devices.Value.left.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        devices.Value.right.Communicator.Write<int>("D1001", ret);//右PLC自动伸出缩回速度
                        devices.Value.right.Communicator.Write<bool>("M102", true);//伸出按钮
                        Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M102", false); // 释放按钮
                        devices.Value.right.Communicator.Write<int>("D1002", rigtpostition);//右伸出位置
                    }
                    catch (Exception)
                    {
                    }
                    Console.WriteLine($"自动伸缩杆伸出 {ext},左伸出位置{liftPosition},右伸出位置{rigtpostition}");
                }
                else if (ExtendedState == "缩回")
                {
                    devices.Value.left.Communicator.Write<int>("D1001", ext);//左PLC自动伸出缩回速度
                    devices.Value.left.Communicator.Write<bool>("M103", true);//缩回按钮
                    devices.Value.right.Communicator.Write<int>("D1001", ret);//右PLC自动伸出缩回速度
                    devices.Value.right.Communicator.Write<bool>("M103", true);//缩回按钮
                    try
                    {
                        devices.Value.left.Communicator.Write<int>("D1001", ext);//左PLC自动伸出缩回速度
                        devices.Value.left.Communicator.Write<bool>("M103", true);//缩回按钮
                        Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                        devices.Value.left.Communicator.Write<bool>("M103", false); // 释放按钮
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        devices.Value.right.Communicator.Write<int>("D1001", ret);//右PLC自动伸出缩回速度
                        devices.Value.right.Communicator.Write<bool>("M103", true);//缩回按钮
                        Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M103", false); // 释放按钮
                    }
                    catch (Exception)
                    {
                    }
                    Console.WriteLine($"自动伸缩杆缩回 {ret}");
                }
                else
                {
                    return new WebResponseContent { Status = false, Message = "未知的操作命令" };
@@ -78,8 +150,9 @@
                return new WebResponseContent { Status = true, Message = "成功",
                    Data = new
                    {
                        ExtendSpeed = ext,//
                        RetractionSpeed = ret
                        ExtendSpeed = ext,
                        RetractionSpeed = ret,
                    }
                };
            }
@@ -118,29 +191,72 @@
                var para = BaseDal.QueryData().Where(x => x.Deptid == deid).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                int ext = (int)para.ManualExtend;//左PLC手动伸出缩回速度
                int ret = (int)para.ManualRetraction;//右PLC手动伸出缩回速度
                int liftPosition = (int)para.LeftPosition;//左伸出位置
                int rigtpostition = (int)para.RightPosition;//右伸出位置
                try
                {
                    var leftorigin = devices.Value.left.Communicator.Read<bool>("M115");//左plc到原点位置信号
                    var rightorigin = devices.Value.right.Communicator.Read<bool>("M115");//右plc到达原点位置信号
                    if (leftorigin == true || rightorigin == true)
                    {
                        return new WebResponseContent { Status = false, Message = "已到原始点" };
                    }
                }
                catch (Exception)
                {
                }
                try
                {
                    var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//左plc到达目标位置
                    var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                    if (lefttarget == true || righttarget == true)
                    {
                        return new WebResponseContent { Status = false, Message = "已到最大值" };
                    }
                }
                catch (Exception)
                {
                }
                if (position == "左" && ExtendedState == "伸出")
                {
                    devices.Value.left.Communicator.Write<int>("D1000", ext);//左PLC手动伸出缩回速度
                    devices.Value.left.Communicator.Write<bool>("M100", true);//伸出按钮
                    Console.WriteLine($"{position}伸缩杆手动伸出缩回{ext}");
                    Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                    devices.Value.left.Communicator.Write<bool>("M100", false); // 释放按钮
                    devices.Value.left.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                    Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                }
                else if (position == "左" && ExtendedState == "缩回")
                {
                    devices.Value.left.Communicator.Write<int>("D1000", ext);//左PLC手动伸出缩回速度
                    devices.Value.left.Communicator.Write<bool>("M101", true);
                    Console.WriteLine($"{position}伸缩杆手动伸出缩回{ext}");
                    Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                    devices.Value.left.Communicator.Write<bool>("M101", false); // 释放按钮
                    Console.WriteLine($"{position}伸缩杆手动缩回{ext}");
                }
                else if (position == "右" && ExtendedState == "伸出")
                {
                    devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                    devices.Value.right.Communicator.Write<bool>("M100", true);
                    Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                    devices.Value.right.Communicator.Write<bool>("M100", false); // 释放按钮
                    devices.Value.right.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                    Console.WriteLine($"{position}伸缩杆手动伸出{ret}");
                }
                else if (position == "右" && ExtendedState == "缩回")
                {
                    devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                    devices.Value.right.Communicator.Write<bool>("M101", true);
                    Thread.Sleep(100); // 等待100ms(模拟按钮按下)
                    devices.Value.right.Communicator.Write<bool>("M101", false); // 释放按钮
                    Console.WriteLine($"{position}伸缩杆手动缩回{ret}");
                }
                return new WebResponseContent { Status = true, 
@@ -150,7 +266,7 @@
                        ManualExtend = ext,
                        ManualRetraction = ret
                    }
                };//这里要加返回速度
                };
            }
            catch (Exception ex)
            {
@@ -201,6 +317,8 @@
                    RetractionSpeed = entity.RetractionSpeed,
                    ManualExtend = entity.ManualExtend,
                    ManualRetraction = entity.ManualRetraction,
                    LeftPosition = entity.LeftPosition,
                    RightPosition = entity.RightPosition,
                    Deptid = isAdmin ? deid : dept.GetValueOrDefault()//如果当前用户是管理员,就用配置文件中的 DepartmentID,否则用传入的 entity 参数中的 Deptid
                };
                // 添加数据
@@ -222,7 +340,111 @@
        }
        /// <summary>
        ///当自动伸出需要暂停时,暂停按钮
        /// </summary>
        /// <returns></returns>
        public WebResponseContent PauseButton()
        {
            try
            {
                //根据int.TryParse(AppSettings.Get("DepartmentID")读取到当前是轨道几,所有人都只能操作当前
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID 无法转换为整数" };
                };
                var devices = GetDevicesByDeptId(deid);
                try
                {
                    devices.Value.left.Communicator.Write<bool>("M104", true);
                }
                catch (Exception)
                {
                }
                try
                {
                    devices.Value.right.Communicator.Write<bool>("M104", true);
                }
                catch (Exception)
                {
                }
                return new WebResponseContent { Status =true,Message="暂停成功",Data = devices};
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
        /// <summary>
        /// 获取当前程序最新的伸缩杆速度
        /// </summary>
        /// <returns></returns>
        public WebResponseContent BackfillSpeed()
        {
            try
            {
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID 无法转换为整数" };
                }
                var para = BaseDal.QueryData().Where(x => x.Deptid == deid).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                if (para == null)
                {
                    return new WebResponseContent { Message = "你还没有配置速度" };
                }
                return new WebResponseContent { Status = true, Data = para };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
        /// <summary>
        /// 获取当前伸缩杆的位置(自动)
        /// </summary>
        /// <param name="ExtendedState"></param>
        /// <returns></returns>
        public WebResponseContent CurrentLocation()
        {
            try
            {
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID 无法转换为整数" };
                }
                var devices = GetDevicesByDeptId(deid);
                    var deviceslift = devices.Value.left.Communicator.Read<float>("D80");
                    var devicesright = devices.Value.right.Communicator.Read<float>("D80");
                    Console.WriteLine($"当前左右伸缩杆返回速度分别为为{deviceslift}");
                return new WebResponseContent
                {
                    Status = true,
                    Data = new { lift = deviceslift, Right = devicesright }
                };
                }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
        /// <summary>
@@ -248,28 +470,11 @@
        public WebResponseContent BackfillSpeed()
        {
            try
            {
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    return new WebResponseContent { Status = false, Message = "配置项 DepartmentID 无法转换为整数" };
                }
                var para = BaseDal.QueryData().Where(x => x.Deptid == deid).OrderByDescending(x => x.CreateDate).FirstOrDefault();
                if (para==null)
                {
                    return new WebResponseContent { Message = "你还没有配置速度" };
                }
                return new WebResponseContent { Status = true, Data = para };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = ex.Message };
            }
        }
    }
}