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]; }
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; } }
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; } }