private void BUT_sn_Click(object sender, EventArgs e) { px4uploader.Uploader up; CustomMessageBox.Show("Please unplug press ok, and plug board in", "px4"); DateTime DEADLINE = DateTime.Now.AddSeconds(30); while (DateTime.Now < DEADLINE) { string[] allports = SerialPort.GetPortNames(); foreach (string port in allports) { Console.WriteLine(DateTime.Now.Millisecond + " Trying Port " + port); try { up = new Uploader(port, 115200); } catch (Exception ex) { //System.Threading.Thread.Sleep(50); Console.WriteLine(ex.Message); continue; } try { up.identify(); Console.WriteLine("Found board type {0} boardrev {1} bl rev {2} fwmax {3} on {4}", up.board_type, up.board_rev, up.bl_rev, up.fw_maxsize, port); byte[] sn = up.__get_sn(); StringBuilder sb = new StringBuilder(); Console.Write("SN: "); for (int s = 0; s < sn.Length; s += 1) { Console.Write(sn[s].ToString("X2")); sb.Append(sn[s].ToString("X2")); } txtboardsn.Text = sb.ToString(); up.close(); CustomMessageBox.Show("Done"); return; } catch (Exception) { Console.WriteLine("Not There.."); //Console.WriteLine(ex.Message); up.close(); continue; } } } }
public void identify() { port.DiscardInBuffer(); //Console.WriteLine("0 " + DateTime.Now.Millisecond); // make sure we are in sync before starting self.__sync(); //Console.WriteLine("1 "+DateTime.Now.Millisecond); //get the bootloader protocol ID first self.bl_rev = self.__getInfo(Info.BL_REV); // Console.WriteLine("2 " + DateTime.Now.Millisecond); if ((bl_rev < (int)BL_REV_MIN) || (bl_rev > (int)BL_REV_MAX)) { throw new Exception("Bootloader protocol mismatch"); } print("Got BL Info - changing timeout"); // revert to default write timeout port.WriteTimeout = 500; self.board_type = self.__getInfo(Info.BOARD_ID); self.board_rev = self.__getInfo(Info.BOARD_REV); self.fw_maxsize = self.__getInfo(Info.FLASH_SIZE); if (bl_rev >= 5) { try { self.chip = self.__getCHIP(); self.chip_desc = self.__getCHIPDES(); } catch { __sync(); } } if (bl_rev >= 5) { try { self.sn = self.__get_sn(); } catch { __sync(); } } if (bl_rev >= 5) { try { self.extf_maxsize = __getInfo(Info.EXTF_SIZE); } catch { __sync(); } } Console.WriteLine( "Found board type {0} brdrev {1} blrev {2} fwmax {3} extf {7} chip {5:X} chipdes {6} SN {8} on {4}", board_type, board_rev, bl_rev, fw_maxsize, port, chip, chip_desc, extf_maxsize, BitConverter.ToString(self.sn).Replace("-", string.Empty)); }