public void PackerBoot() { try { UpdateMessage("App Version: " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + "\r\n"); //search for nodes //UpdateMessage(StringResource.str("search_newnode")); // NodeMaster.SearchNode(byte.Parse(Program.curr_cfg.Element("def_addr").Value)); boot_ok = 0; int tryfound; //check the availability of each board foreach (UIPacker pk in Program.packers) { foreach (byte n in pk.weight_nodes) { if ((n % 4) == 3) { UpdateMessage("\r\n"); } tryfound = 3; while (!NodeMaster.SearchNode(n) && (tryfound > 0)) { Thread.Sleep(500); tryfound--; } if (tryfound <= 0) { UpdateMessage(StringResource.str("search_node") + n + StringResource.str("fail") + "\t\t"); Program.engwnd.btn_updatefw_Click(null, null); } else { boot_ok++; UpdateMessage(n + ": ver " + NodeMaster.GetNodeReg(n, "fw_rev_uw").ToString() + "\t\t"); } } byte nvib = pk.vib_addr; tryfound = 3; while ((!NodeMaster.SearchNode(nvib)) && (tryfound > 0)) { Thread.Sleep(500); tryfound--; } if (tryfound <= 0) { UpdateMessage(StringResource.str("search_node") + nvib + StringResource.str("fail") + "\t\t"); } else { boot_ok++; UpdateMessage(nvib + ": ver " + NodeMaster.GetNodeReg(nvib, "fw_rev_uw").ToString() + "\t\t"); } Thread.Sleep(2000); if (boot_ok > 0) { //load config for node UpdateMessage("\r\n" + StringResource.str("init_nodereg")); //todo pk.LoadPackConfig(pk.pkg_confs.cfg_name, true); NodeMaster.Action(new byte[] { pk.vib_addr }, "intf"); NodeMaster.Action(pk.wn_addrs, "stop"); NodeMaster.Action(new byte[] { pk.vib_addr }, "stop"); } } } catch (Exception ex) { UpdateMessage(ex.Message); boot_ok = 0; Thread.Sleep(3000); } }