| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using System;
- using System.Threading;
- using SHJX.Service.Model.Control;
- using SHJX.Service.Common.Extend;
- using SHJX.Service.Common.ReadXML;
- 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>
- /// 机械手操作
- /// </summary>
- public class ManiPort : SerialPortImp, PortControlImp
- {
- private static readonly ILogger logger = LogFactory.BuildLogger(typeof(ManiPort));
- /// <summary>
- /// 机械手
- /// </summary>
- /// <param name="log">日志</param>
- /// <param name="config">配置</param>
- public ManiPort(ReadConfigUtil config)
- : base(config) { }
- public bool Write(PortArgs args)
- {
- var res = args.WriteWay switch
- {
- WriteWay.Normotopia => zMotorStorage(args, "H"),
- WriteWay.Antiposition => zMotorStorage(args, "L"),
- _ => throw new ArgumentNullException(args.WriteWay.GetEnumDesc<WriteWay>())
- };
- Thread.Sleep(500);
- return res;
- }
- public object Read(PortArgs args)
- {
- object obj = args.ReadWay switch
- {
- "Judge" => GetJudge(args),
- "OriginalPosition" => JudgeStorage(args.NodeId),
- _ => throw new ArgumentNullException(args.ReadWay),
- };
- return obj;
- }
- public bool GetJudge(PortArgs args)
- {
- var storageRes = JudgeStorage(args.NodeId);
- if (storageRes is null) return false;
- var res = storageRes[4].Equals('0');
- return res;
- }
- private bool zMotorStorage(PortArgs args,string op)
- {
- string res1 = "";
- while (res1 != "0009\r" && res1 != "0209\r")
- {
- var storageRes = JudgeXYZMove(3); //抓手动之前Z轴要静止
- if (storageRes.Equals("")) return false;
- res1 = storageRes;
- Thread.Sleep(300);
- }
- return MotorStorage(args.NodeId, 1, op);
- }
- }
- }
|