Example #1
0
        public void UpdateFromW7()
        {
            if (w7s.Count == 0 || !w7s[w7s.Count - 1].isValid)
            {
                return;
            }

            //TODO update values from memo avg for now take last
            w7 = w7s[w7s.Count - 1];
        }
Example #2
0
        public void receiveCommand(string cmd)
        {
            string[] tokens = cmd.Replace("<", "").Replace(">", "").Split('_');

            bool          is_receptionToken = tokens[tokens.Length - 1] == "OK";
            ECOMMAND_TYPE type;

            if (!Enum.TryParse(tokens[0], out type))
            {
                WriteLineToConsole("RECEIVED INVALID COMMAND: " + cmd);
                return;
            }
            if (type != ECOMMAND_TYPE.W7 & type != ECOMMAND_TYPE.WS)
            {
                windowParent.console_text.Text      += "APP receive" + cmd + "\n";
                windowParent.console_user_text.Text += "APP receive" + cmd + "\n";
            }

            switch (type)
            {
            case ECOMMAND_TYPE.EA:
                if (is_receptionToken)
                {
                    tm_state = ETM_STATE.INITIALISATION;
                }
                break;

            case ECOMMAND_TYPE.EP:
                if (!is_receptionToken)
                {
                    machine_producer = tokens[1];
                    writeCommand("<EP_OK>");
                }
                break;

            case ECOMMAND_TYPE.ET:
                if (!is_receptionToken)
                {
                    if (!Constants.MachineTypes.TryGetValue(tokens[1], out machine_type))
                    {
                        WriteLineToConsole("cmd " + type + " wrong machinetype " + cmd);
                    }
                    writeCommand("<ET_OK>");
                }
                break;

            case ECOMMAND_TYPE.EM:
                if (!is_receptionToken)
                {
                    model_name = tokens[1];
                    writeCommand("<EM_OK>");
                }
                break;

            case ECOMMAND_TYPE.ER:
                if (!is_receptionToken)
                {
                    string[] inclineBounds = tokens[1].Split(',');
                    int      res           = -1;
                    if (int.TryParse(inclineBounds[0], out res))
                    {
                        incline_MIN = res;
                    }
                    if (int.TryParse(inclineBounds[1], out res))
                    {
                        incline_MAX = res;
                    }

                    writeCommand("<ER_OK>");
                }
                break;

            case ECOMMAND_TYPE.ES:
                if (!is_receptionToken)
                {
                    string[] speedBounds = tokens[1].Split(',');
                    double   res         = Constants.MIN_SPEED;
                    if (double.TryParse(speedBounds[0], out res))
                    {
                        speed_MIN = res;
                    }
                    if (double.TryParse(speedBounds[1], out res))
                    {
                        speed_MAX = res;
                    }

                    writeCommand("<ES_OK>");
                }
                break;

            case ECOMMAND_TYPE.EV:
                if (!is_receptionToken)
                {
                    string[] versions = tokens[1].Split(',');
                    sw_name       = versions[0];
                    sw_version    = versions[1];
                    comsw_version = versions[2];

                    writeCommand("<EV_OK>");
                }
                break;

            case ECOMMAND_TYPE.ED:
                if (!is_receptionToken)
                {
                    double res = 0.0f;
                    if (double.TryParse(tokens[1], out res))
                    {
                        wheel_dimension = res;
                    }

                    writeCommand("<ED_OK>");
                }
                break;

            case ECOMMAND_TYPE.EU:
                if (!is_receptionToken)
                {
                    distance_unit = tokens[1];
                    writeCommand("<EU_OK>");
                }
                break;

            case ECOMMAND_TYPE.EI:
                if (!is_receptionToken)
                {
                    string[] parameters = tokens[1].Split(',');
                    reserved_parameter_1 = parameters[0];
                    reserved_parameter_2 = parameters[1];
                    reserved_parameter_3 = parameters[2];
                    writeCommand("<EI_OK>");
                }
                break;

            case ECOMMAND_TYPE.EZ:
                if (!is_receptionToken)
                {
                    writeCommand("<EZ_OK>");
                    tm_state = ETM_STATE.CONNECTED;
                }
                break;

            case ECOMMAND_TYPE.WS:
                if (wSs.Count >= 10)
                {
                    wSs.RemoveAt(0);
                }
                WS nWS = new WS(tokens[1]);
                wSs.Add(nWS);
                UpdateFromWS();
                writeCommand("<WS_OK>", false);
                break;

            case ECOMMAND_TYPE.W7:
                if (w7s.Count >= 10)
                {
                    w7s.RemoveAt(0);
                }
                W7 nW7 = new W7(tokens[1]);
                w7s.Add(nW7);
                UpdateFromW7();

                writeCommand("<W7_OK>", false);
                break;

            case ECOMMAND_TYPE.WT:
                if (!is_receptionToken)
                {
                    tm_state = ETM_STATE.DISCONNECTED;
                    writeCommand("<WT_OK>");
                }
                break;

            case ECOMMAND_TYPE.AT:
                if (is_receptionToken)
                {
                    tm_state = ETM_STATE.DISCONNECTED;
                }
                break;

            case ECOMMAND_TYPE.CP:
                if (is_receptionToken)
                {
                    writeCommand("<WT_7>");
                }
                break;

            case ECOMMAND_TYPE.CC:
            case ECOMMAND_TYPE.CU:
            case ECOMMAND_TYPE.CT:
            case ECOMMAND_TYPE.CR:
            case ECOMMAND_TYPE.CS:

            case ECOMMAND_TYPE.CF:
            case ECOMMAND_TYPE.CG:
            case ECOMMAND_TYPE.CM:
            case ECOMMAND_TYPE.FF:
            case ECOMMAND_TYPE.SLEEP:
            case ECOMMAND_TYPE.DLOAD:
                if (is_receptionToken)
                {
                    WriteLineToConsole("GW - " + cmd);
                }
                break;


            default:
                WriteLineToConsole("cmd " + type + " not implemented");
                break;
            }
        }
Example #3
0
        public void receiveCommand(string cmd)
        {
            string[] tokens = cmd.Replace("<", "").Replace(">", "").Split('_');

            bool          is_receptionToken = tokens[tokens.Length - 1] == "OK";
            ECOMMAND_TYPE type;

            if (!Enum.TryParse(tokens[0], out type))
            {
                WriteLineToConsole("RECEIVED INVALID COMMAND: " + cmd);
                return;
            }

            if (type != ECOMMAND_TYPE.W7 & type != ECOMMAND_TYPE.WS)
            {
                windowParent.console_text.Text      += "GW receive" + cmd + "\n";
                windowParent.console_user_text.Text += "GW receive" + cmd + "\n";
            }

            switch (type)
            {
            case ECOMMAND_TYPE.EA:
                writeCommand("<EA_OK>");
                sendCommand(ECOMMAND_TYPE.EP);
                break;

            case ECOMMAND_TYPE.EP:
                sendCommand(ECOMMAND_TYPE.ET);
                break;

            case ECOMMAND_TYPE.ET:
                sendCommand(ECOMMAND_TYPE.EM);
                break;

            case ECOMMAND_TYPE.EM:
                sendCommand(ECOMMAND_TYPE.ER);
                break;

            case ECOMMAND_TYPE.ER:
                sendCommand(ECOMMAND_TYPE.EV);
                break;

            case ECOMMAND_TYPE.EV:
                sendCommand(ECOMMAND_TYPE.ED);
                break;

            case ECOMMAND_TYPE.ED:
                sendCommand(ECOMMAND_TYPE.EU);
                break;

            case ECOMMAND_TYPE.EU:
                sendCommand(ECOMMAND_TYPE.EI);
                break;

            case ECOMMAND_TYPE.EI:
                sendCommand(ECOMMAND_TYPE.EZ);
                break;

            case ECOMMAND_TYPE.EZ:
                bIsSendingWS = true;
                bIsConnected = true;
                break;

            case ECOMMAND_TYPE.CP:
                int res;
                if (int.TryParse(tokens[1], out res))
                {
                    if (res > 0)
                    {
                        w7           = new W7();
                        bIsSendingW7 = false;
                    }
                    else if (res == 0)
                    {
                        bIsSendingW7 = true;
                    }
                }

                sendCommand(ECOMMAND_TYPE.CP);
                break;

            case ECOMMAND_TYPE.WT:
                writeCommand("<WT_OK>");
                break;

            case ECOMMAND_TYPE.AT:
                bIsConnected = false;
                writeCommand("<AT_OK>");
                break;

            case ECOMMAND_TYPE.CR:
                string[] str_res = tokens[1].Split(',');
                int      cr      = Constants.MIN_INCLINE;
                if (int.TryParse(str_res[0], out cr))
                {
                    w7.incline = cr / 10;
                }
                break;

            case ECOMMAND_TYPE.CS:
                str_res = tokens[1].Split(',');
                double cs = Constants.MIN_SPEED;
                if (double.TryParse(str_res[0], out cs))
                {
                    w7.speed = cs / 10;
                }
                break;

            case ECOMMAND_TYPE.CM:
                str_res = tokens[1].Split(',');
                int cm = Constants.MIN_PRESSURE;
                if (int.TryParse(str_res[0], out cm))
                {
                    wS.reserve_value_3 = cm;
                }
                break;

            case ECOMMAND_TYPE.W7:
            case ECOMMAND_TYPE.WS:
                break;

            default:
                WriteLineToConsole("GW reception - " + type + " not implemented");
                break;
            }
        }