Example #1
0
        public Vector3 ReadHardwareCoordinates()
        {
            Logger.Instance.Debug(this, "readhw", "wait for lock");
            int retry = 0;

            Logger.Instance.Debug(this, "readhw", "read coordinates");
            while (true)
            {
                RTAction action = new RTAction(rtSender, new RTGetPositionCommand());
                // action.ReadyToRun.WaitOne();
                action.Run();
                action.Finished.WaitOne(timeoutT);

                if (action.ActionResult == null ||
                    !action.ActionResult.ContainsKey("X") ||
                    !action.ActionResult.ContainsKey("Y") ||
                    !action.ActionResult.ContainsKey("Z"))
                {
                    action.Dispose();
                    Logger.Instance.Warning(this, "readhw", String.Format("Can not read coordinates, retry."));
                    retry++;
                    if (retry >= maxretry)
                    {
                        Logger.Instance.Error(this, "readhw", String.Format("Max retry exceed"));
                        throw new TimeoutException();
                    }
                    Thread.Sleep(300);
                    continue;
                }
                var xs = action.ActionResult["X"];
                var ys = action.ActionResult["Y"];
                var zs = action.ActionResult["Z"];
                action.Dispose();

                var pos = new Vector3(decimal.Parse(xs, CultureInfo.InvariantCulture),
                                      decimal.Parse(ys, CultureInfo.InvariantCulture),
                                      decimal.Parse(zs, CultureInfo.InvariantCulture));
                pos.x /= config.X_axis.steps_per_mm;
                pos.y /= config.Y_axis.steps_per_mm;
                pos.z /= config.Z_axis.steps_per_mm;
                return(pos);
            }
        }
Example #2
0
        public (bool ex, bool ey, bool ez, bool ep) ReadCurrentEndstops()
        {
            Logger.Instance.Debug(this, "readhw", "read endstops");
            int retry = 0;

            while (true)
            {
                RTAction action = null;
                try
                {
                    action = new RTAction(rtSender, new RTGetEndstopsCommand());
                    // action.ReadyToRun.WaitOne();
                    action.Run();
                    action.Finished.WaitOne(timeoutT);

                    var result = (action.ActionResult["EX"] == "1",
                                  action.ActionResult["EY"] == "1",
                                  action.ActionResult["EZ"] == "1",
                                  action.ActionResult["EP"] == "1");
                    action.Dispose();
                    return(result);
                }
                catch (Exception e)
                {
                    if (action != null)
                    {
                        action.Dispose();
                    }
                    Logger.Instance.Warning(this, "readhw", String.Format("Can not read position, retry. {0}", e));
                    retry++;
                    if (retry >= maxretry)
                    {
                        Logger.Instance.Warning(this, "readhw", String.Format("Max retry exceed"));
                        throw e;
                    }
                    Thread.Sleep(300);
                }
            }
        }