private static bool parseInput(string instr) { if (instr.Equals("load")) { Console.WriteLine("loading..."); //string filepath = "/home/arune/eclipse/c/AVR-App/main.hex"; string filepath = argHexfile; hf = new HexFile(); if (hf.loadHex(filepath)) { Console.WriteLine("done!"); Console.WriteLine("File "+filepath+" loaded."); Console.WriteLine("Size: " + hf.getLength().ToString() + " bytes, end adress " + hf.getAddrUpper().ToString() + "(0x" + hf.getAddrUpper().ToString("X") + ")."); } else Console.WriteLine("Error loading " + filepath + "!"); } else if (instr.Equals("go")) { Console.WriteLine("Connecting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } dl = new Downloader(hf, sc, argReceiverID, false); if (!dl.go()) { Console.WriteLine("Error gooing..."); return true; } sc.close(); } else if (instr.Equals("go bios")) { Console.WriteLine("Connecting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } dl = new Downloader(hf, sc, argReceiverID, true); if (!dl.go()) { Console.WriteLine("Error gooing..."); return true; } sc.close(); } else if (instr.Equals("start")) { Console.WriteLine("Starting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } byte[] data = new byte[8]; CanPacket cp = new CanPacket(CAN_NMT, CAN_NMT_START_APP, MY_ID, argReceiverID, 0, data); sc.writePacket(cp); sc.close(); } else if (instr.Equals("reset")) { Console.WriteLine("Resetting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } byte[] data = new byte[8]; CanPacket cp = new CanPacket(CAN_NMT, CAN_NMT_RESET, MY_ID, argReceiverID, 0, data); sc.writePacket(cp); sc.close(); } else if (instr.Equals("abort")) { if (dl != null) dl.abort(); } else if (instr.Equals("exit")) { return false; } else { Console.WriteLine("Unknown command."); } return true; }
private void loadFile(string filepath) { // If file does not exist, show open file dialog. if (!File.Exists(filepath)) { OpenFileDialog fd = new OpenFileDialog(); fd.Multiselect = false; fd.Filter = "inhex32 files (*.hex)|*.hex"; fd.Title = "Select HEX file to download"; fd.CheckFileExists = true; if (fd.ShowDialog() == DialogResult.OK) { FileStream file = new FileStream(fd.FileName, FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(file); filepath = fd.FileName; sr.Close(); } else return; } hf = new HexFile(); if (dl != null) dl.abort(); dl = null; if (hf.loadHex(filepath)) { currentLoadedFile = filepath; // Handle recent list. if (recentFiles.Contains(filepath)) { recentFiles.Remove(filepath); } recentFiles.AddFirst(filepath); refreshRecentFiles(); saveSettings(); log(""); log("File " + filepath + " loaded."); log("Size: " + hf.getLength().ToString() + " bytes, end adress " + hf.getAddrUpper().ToString() + "(0x" + hf.getAddrUpper().ToString("X") + ")."); } else { log("Error loading " + filepath + "!"); hf = null; } }
void dl_threadAbort(object sender, EventArgs e) { try { this.BeginInvoke((ThreadStart)delegate { threadAbortEvent e2 = (threadAbortEvent)e; switch(e2.getAbortMode()) { case Downloader.abortMode.CHANGE_ID: log("ID and NID changed."); setTrayIcon(TrayIcon.OK); break; case Downloader.abortMode.PROGRAM: log("Download done. Time spent: " + e2.getTimeS().ToString() + " seconds. " + Math.Round(e2.getBps(), 0) + " Bps"); setTrayIcon(TrayIcon.OK); break; case Downloader.abortMode.USER: log("Download aborted."); break; } sc.close(); sc = null; dl = null; downloadTimeout.Enabled = false; }); } catch (InvalidOperationException) { } }
private void download(Downloader.downloadMode downloadmode) { if (dl != null) { log("Process in progress..."); return; } if (downloadmode == Downloader.downloadMode.PROGRAM) { loadFile(currentLoadedFile); if (hf == null) { log("No hexfile loaded."); return; } } if (currentTarget == null) { log("No target selected."); return; } sc = new SerialConnection(); try { sc.setConfiguration((int)serialSettings["baud"], (System.IO.Ports.Parity)Enum.Parse(typeof(System.IO.Ports.Parity), serialSettings["parity"].ToString()), (string)serialSettings["port"], (System.IO.Ports.StopBits)Enum.Parse(typeof(System.IO.Ports.StopBits), serialSettings["stopbits"].ToString()), (int)serialSettings["databits"], false); } catch (Exception e) { log("Error setting serial connection settings: " + e.Message); setTrayIcon(TrayIcon.FAIL); return; } if (!sc.open()) { log("Error opening port."); setTrayIcon(TrayIcon.FAIL); return; } dl = new Downloader(hf, sc, myid, currentTarget.getTargetId(), downloadmode, tmp_new_id); if (!dl.go()) { log("Error downloading/ID change..."); setTrayIcon(TrayIcon.FAIL); return; } setTrayIcon(TrayIcon.DOWNLOADING); downloadTimeout.Stop(); downloadTimeout.Start(); downloadTimeout.Enabled = true; if (downloadmode == Downloader.downloadMode.PROGRAM) { log("Downloading..."); } else if (downloadmode == Downloader.downloadMode.CHANGE_ID) { log("Changeing ID."); } dl.threadAbort += new EventHandler(dl_threadAbort); }
public threadAbortEvent(int diffms, int bytes, Downloader.abortMode abortmode) { if (abortmode == Downloader.abortMode.PROGRAM) { this.timems = diffms; this.times = this.timems/1000; this.bytes = bytes; this.bps = ((double)bytes / ((double)this.timems/1000.0)); } this.abortmode = abortmode; }