Преглед на файлове

Siasun robot new line chars are "\r\n"

sangwq преди 1 година
родител
ревизия
f6ac5e975e
променени са 1 файла, в които са добавени 20 реда и са изтрити 19 реда
  1. 20 19
      Venus/Venus_RT/Devices/TM/SIASUNRobot.cs

+ 20 - 19
Venus/Venus_RT/Devices/TM/SIASUNRobot.cs

@@ -50,9 +50,11 @@ namespace Venus_RT.Devices
         private readonly Regex _rex_check_load = new Regex(@"LOAD\s+(A|B)\s+(\w+)\s*");
         private readonly Regex _rex_error_code = new Regex(@"_ERR\s+(\d+)\s*");
 
+        private const string EOF = "\r\n";
+
         public SIASUNRobot()
         {
-            _socket = new AsyncSocket("");
+            _socket = new AsyncSocket("", EOF);
             _socket.Connect(SC.GetStringValue($"TM.IPAddress"));
             _socket.OnDataChanged += OnReceiveMessage;
             _socket.OnErrorHappened += OnErrorHappen;
@@ -77,11 +79,11 @@ namespace Venus_RT.Devices
             _status = RState.Running;
             _currentOP = OPStep.Home;
 
-            return _SendCommand("HOME ALL\r");
+            return _SendCommand("HOME ALL");
         }
         public bool Halt()
         {
-            return _SendCommand("HALT\r");
+            return _SendCommand("HALT");
         }
         public bool CheckLoad(Hand hand = Hand.Blade1)
         {
@@ -90,7 +92,7 @@ namespace Venus_RT.Devices
 
             _currentOP = hand == Hand.Blade2 ? OPStep.CheckLoad_ArmB : OPStep.CheckLoad_ArmA;
             _status = RState.Running;
-            return _SendCommand($"CHECK LOAD {_checkLoadStation} ARM {Hand2Arm(hand)}\r");
+            return _SendCommand($"CHECK LOAD {_checkLoadStation} ARM {Hand2Arm(hand)}");
         }
         public bool Goto(ModuleName station, int slot, Hand hand)
         {
@@ -99,7 +101,7 @@ namespace Venus_RT.Devices
 
             _currentOP = OPStep.Goto;
             _status = RState.Running;
-            return _SendCommand($"GOTO N {_StationNumbers[station]} SLOT {slot} ARM {Hand2Arm(hand)}\r");
+            return _SendCommand($"GOTO N {_StationNumbers[station]} SLOT {slot} ARM {Hand2Arm(hand)}");
         }
         public bool MoveTo(ModuleName stnFrom, ModuleName stnTo, Hand hand)
         {
@@ -108,7 +110,7 @@ namespace Venus_RT.Devices
 
             _currentOP = OPStep.MoveTo;
             _status = RState.Running;
-            return _SendCommand($"XFER ARM {Hand2Arm(hand)} {_StationNumbers[stnFrom]} {_StationNumbers[stnTo]}\r");
+            return _SendCommand($"XFER ARM {Hand2Arm(hand)} {_StationNumbers[stnFrom]} {_StationNumbers[stnTo]}");
         }
         public bool PickExtend(ModuleName chamber, int slot, Hand hand)
         {
@@ -118,7 +120,7 @@ namespace Venus_RT.Devices
             _currentOP = OPStep.PickExtend;
             _status = RState.Running;
             SetRobotMovingInfo(RobotAction.Extending, hand, chamber);
-            return _SendCommand($"PICK {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} ENRT\r");
+            return _SendCommand($"PICK {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} ENRT");
         }
         public bool PickRetract(ModuleName chamber, int slot, Hand hand)
         {
@@ -128,7 +130,7 @@ namespace Venus_RT.Devices
             _currentOP = OPStep.PickRetract;
             _status = RState.Running;
             SetRobotMovingInfo(RobotAction.Retracting, hand, chamber);
-            return _SendCommand($"PICK {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} STRT\r");
+            return _SendCommand($"PICK {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} STRT");
         }
         public bool PlaceExtend(ModuleName chamber, int slot, Hand hand)
         {
@@ -138,7 +140,7 @@ namespace Venus_RT.Devices
             _currentOP = OPStep.PlaceExtent;
             _status = RState.Running;
             SetRobotMovingInfo(RobotAction.Extending, hand, chamber);
-            return _SendCommand($"PLACE {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} ENRT\r");
+            return _SendCommand($"PLACE {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} ENRT");
         }
         public bool PlaceRetract(ModuleName chamber, int slot, Hand hand)
         {
@@ -148,7 +150,7 @@ namespace Venus_RT.Devices
             _currentOP = OPStep.PlaceExtent;
             _status = RState.Running;
             SetRobotMovingInfo(RobotAction.Retracting, hand, chamber);
-            return _SendCommand($"PLACE {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} STRT\r");
+            return _SendCommand($"PLACE {_StationNumbers[chamber]} SLOT {slot} ARM {Hand2Arm(hand)} STRT");
         }
         public bool Pick(ModuleName station, int slot, Hand hand)
         {
@@ -158,7 +160,7 @@ namespace Venus_RT.Devices
             _currentOP = OPStep.Pick;
             _status = RState.Running;
             SetRobotMovingInfo(RobotAction.Picking, hand, station);
-            return _SendCommand($"PICK {_StationNumbers[station]} SLOT {slot} ARM {Hand2Arm(hand)}\r");
+            return _SendCommand($"PICK {_StationNumbers[station]} SLOT {slot} ARM {Hand2Arm(hand)}");
         }
         public bool Place(ModuleName station, int slot, Hand hand)
         {
@@ -168,13 +170,13 @@ namespace Venus_RT.Devices
             _currentOP = OPStep.Place;
             _status = RState.Running;
             SetRobotMovingInfo(RobotAction.Placing, hand, station);
-            return _SendCommand($"PLACE {_StationNumbers[station]} SLOT {slot} ARM {Hand2Arm(hand)}\r");
+            return _SendCommand($"PLACE {_StationNumbers[station]} SLOT {slot} ARM {Hand2Arm(hand)}");
         }
 
         private bool _SendCommand(string cmd)
         {
             LOG.WriteSingeLine(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"Send Command to SIASUN TM Robot: {cmd}");
-            return _socket.Write(cmd);
+            return _socket.Write(cmd + EOF);
         }
 
         private bool CheckRobotStatus()
@@ -200,19 +202,18 @@ namespace Venus_RT.Devices
 
         private void OnReceiveMessage(string RevMsg)
         {
-            if(_rex_error_code.IsMatch(RevMsg))
+            LOG.WriteSingeLine(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"Receive message from SIASUN TM Robot: {RevMsg}, while {_currentOP}");
+
+            if (_rex_error_code.IsMatch(RevMsg))
             {
                 _IsHomed = false;
                 _status = RState.Failed;
 
                 var results = _rex_error_code.Match(RevMsg);
                 ErrorMessageHandler(results.Groups[1].Value);
-
                 return;
             }
 
-            LOG.WriteSingeLine(eEvent.INFO_TM_ROBOT, ModuleName.TMRobot, $"Receive message from SIASUN TM Robot: {RevMsg}, while {_currentOP}");
-
             switch (_currentOP)
             {
                 case OPStep.Goto:
@@ -238,8 +239,8 @@ namespace Venus_RT.Devices
                     break;
                 case OPStep.Home:
                     {
-                       
-                        if (RevMsg.TrimEnd(new char[] { '\r', '\n' }) == "_RDY")
+
+                        if (RevMsg.Trim() == "_RDY")
                         {
                             //CheckLoad(Hand.Blade1);
                             _currentOP = OPStep.Idle;