| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- using System;
- using System.Threading;
- using SHJX.Service.Common.Extend;
- using SHJX.Service.Common.ReadXML;
- using SHJX.Service.Model.Control;
- using SHJX.Service.ServerClient.Interface;
- using SHJX.Service.ServerClient.TempController;
- using SHJX.Service.Common.Logging;
- using Microsoft.Extensions.Logging;
- namespace SHJX.Service.ServerClient.RS485Control
- {
- /// <summary>
- /// MotorZ通信
- /// </summary>
- public class MotorZPort : SerialPortImp, PortControlImp
- {
- private static readonly ILogger logger = LogFactory.BuildLogger(typeof(MotorZPort));
- /// <summary>
- /// Z轴
- /// </summary>
- /// <param name="log">日志</param>
- /// <param name="config">配置</param>
- public MotorZPort( ReadConfigUtil config)
- : base( config)
- {
- config.GetSpeed.ForEach(item => {
- if (item.NodeName == "MotorZ")
- speedZ = item.Speed;
- });
- }
- private double speedZ = 0;
- public object Read(PortArgs args)
- {
- object res = args.ReadWay switch
- {
- "OriginalPosition" => GetOriginalPosition(args),
- _ => JudgeStorage(args.NodeId),
- };
- return res;
- }
- public object GetOriginalPosition(PortArgs args)
- {
- var res = JudgeStorage(args.NodeId);
- if (res is null or { Length: 0 }) return false;
- return res[2].Equals('0');
- }
- public bool Write(PortArgs args)
- {
- //var portArgs = new PortArgs
- //{
- // TypeName = "Mani",
- // NodeId = 3,
- // ReadWay = "Judge"
- //};
- long distance = args.Distance;
- //var resbool = GetJudge(portArgs);
- //if (resbool)
- //{
- // distance /= 2;//通过判断抓手状态决定Z轴运行距离
- //}
- var res = args.WriteWay switch
- {
- WriteWay.Move => zmove(args),
- WriteWay.GoBack => MotorGoBack(args.NodeId, 3),
- WriteWay.Stop => MotorStop(args.NodeId),
- WriteWay.Speed => MotorSpeed(args.NodeId, args.Distance),
- WriteWay.AcSpeed => MotorAcSpeed(args.NodeId, args.Distance),
- WriteWay.DeSpeed => MotorDeSpeed(args.NodeId, args.Distance),
- _ => throw new ArgumentNullException(args.WriteWay.GetEnumDesc<WriteWay>()),
- };
- return res;
- }
- private bool zmove(PortArgs args)
- {
- string res1 = "";
- while (res1 != "0009\r" && res1 != "0209\r")
- {
- var storageRes = JudgeXYZMove(1);//Z轴动之前x轴要静止
- if (storageRes.Equals("")) return false;
- res1 = storageRes;
- Thread.Sleep(300);
- }
- res1 = "";
- while (res1 != "0009\r" && res1 != "0209\r")
- {
- var storageRes = JudgeXYZMove(2);//Z轴动之前Y轴要静止
- if (storageRes.Equals("")) return false;
- res1 = storageRes;
- Thread.Sleep(300);
- }
- return Move(args.NodeId, args.Distance, 50, speedZ);
- }
- }
- }
|