|
- using BPASmartClient.MorkCL.Model.Control;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace BPASmartClient.MorkCL.Server
- {
- /// <summary>
- /// 机器人服务类
- /// </summary>
- internal class RobotServer : RobotSet, IModbus
- {
-
- public RobotServer()
- {
- //MyModbus = new ModbusTcp();
- }
- public void Init(string IP = "", int Port = 502, string PortName = "")
- {
- //MyModbus = new ModbusTcp();
- CommHelper.CreateModbusTcp(IP, Port).OnSuccess(S =>
- {
- MyModbus = S.Content;
- TaskManage.GetInstance.StartLong(new Action(() =>
- {
- MyModbus.ReadCoil("GM600".ToModbusAdd(), 9).OnSuccess(s =>
- {
- for (byte i = 0; i < 3; i++)
- {
- MaterialPouringRequest[i] = s.Content[i * 3];
- MaterialPouringComplete[i] = s.Content[i * 3 + 1];
- DiningOutRequest[i] = s.Content[i * 3 + 2];
- }
- });
- Thread.Sleep(20);
-
- MyModbus.ReadCoil("GM620".ToModbusAdd()).OnSuccess((b) => { Home = b.Content; });
- Thread.Sleep(20);
-
- MyModbus.ReadCoil("GM630".ToModbusAdd(), 12).OnSuccess(s =>
- {
- for (byte i = 0; i < s.Content.Length; i++)
- WarehousingComplete[i] = s.Content[i];
- });
- Thread.Sleep(20);
-
- MyModbus.ReadHoldRegister<ushort>("GI5".ToModbusAdd(), 1).OnSuccess(s => { TaskFeedback = (RobotMainTask)s.Content; });
-
- IsIdle = (TaskFeedback == RobotMainTask.无任务 && Home);
- Thread.Sleep(20);
-
- MyModbus.ReadCoil("GM130".ToModbusAdd()).OnSuccess((b) => { RemoteMode = b.Content; });
- Thread.Sleep(20);
-
- MyModbus.ReadCoil("GM650".ToModbusAdd()).OnSuccess((b) => { AtCleanLoc = b.Content; });
- Thread.Sleep(20);
-
- }), $"机器人服务-{IP}", true);
- });
- //MyModbus.WithModbusTcp(IP, Port).UseConnected(() =>
- //{
- // ((ModbusTcp)MyModbus).master.Transport.ReadTimeout = 3000;
- // ((ModbusTcp)MyModbus).master.Transport.WriteTimeout = 3000;
-
- // TaskManage.GetInstance.StartLong(new Action(() =>
- // {
- // MyModbus.Read<bool[]>("GM600".ToModbusAdd(), 9).OnSuccess(s =>
- // {
- // for (byte i = 0; i < 3; i++)
- // {
- // MaterialPouringRequest[i] = s[i * 3];
- // MaterialPouringComplete[i] = s[i * 3 + 1];
- // DiningOutRequest[i] = s[i * 3 + 2];
- // }
- // });
- // Thread.Sleep(20);
-
- // MyModbus.Read<bool>("GM620".ToModbusAdd()).OnSuccess((b) => { Home = b; });
- // Thread.Sleep(20);
-
- // MyModbus.Read<bool[]>("GM630".ToModbusAdd(), 12).OnSuccess(s =>
- // {
- // for (byte i = 0; i < s.Length; i++)
- // WarehousingComplete[i] = s[i];
- // });
- // Thread.Sleep(20);
-
- // MyModbus.Read<ushort>("GI5".ToModbusAdd(), 1).OnSuccess(s => { TaskFeedback = (RobotMainTask)s; });
-
- // IsIdle = (TaskFeedback == RobotMainTask.无任务 && Home);
- // Thread.Sleep(20);
-
- // MyModbus.Read<bool>("GM130".ToModbusAdd(), 1).OnSuccess((b) => { RemoteMode = b; });
- // Thread.Sleep(20);
-
- // MyModbus.Read<bool>("GM650".ToModbusAdd(), 1).OnSuccess((b) => { AtCleanLoc = b; });
- // Thread.Sleep(20);
-
- // }), $"机器人服务-{IP}", true);
- //});
- }
-
- public void WriteValue<T>(string address, T value)
- {
- throw new NotImplementedException();
- }
-
- private void RobotInit()
- {
- if (EnableState && ProgramRuning) return;
- //if (!CR_Data.Home)
- //{
- // Noticer.GetInstance.Show("煮面机器人初始化失败,机器人不在原点");
- // return;
- //}
-
- while (!EnableState || !ProgramRuning)
- {
- //复位
- RobotReset = true;
- Thread.Sleep(1000);
- RobotReset = false;
- Thread.Sleep(500);
-
- if (!EnableState)
- {
- //上使能
- RobotEnable = true;
- Thread.Sleep(1000);
- RobotEnable = false;
- Thread.Sleep(500);
- }
-
- //启动
- RobotStart = true;
- Thread.Sleep(1000);
- RobotStart = false;
-
- Thread.Sleep(1000);
- }
- }
-
- public bool InitVariable()
- {
- if (MyModbus is not null && MyModbus.IsConnected())
- {
- try
- {
- MyModbus.WriteHoldRegister<ushort>("GI0".ToModbusAdd(), 0);
- MyModbus.WriteHoldRegister<ushort>("GI1".ToModbusAdd(), 0);
- for (int i = 0; i <= 8; i++)
- {
- MyModbus.WriteCoil(("GM" + (500 + i).ToString()).ToModbusAdd(), false);
- }
- return true;
- }
- catch (Exception)
- {
-
- return false;
- }
-
- }
- else
- return false;
- }
- }
- }
|