internal void LoadFirmware(string filename) { // Load the file into a memory block byte[] data = ReadFileIntoByteArray(filename); // Set up an XMODEM object var xmodem = new XModem.XModem(_w600Port); int bytesSent = 0; xmodem.PacketSent += (sender, args) => { bytesSent += 1024; Console.Write("{0}% sent\r", Math.Min(bytesSent, data.Length) * 100 / data.Length); }; // Tell the FEZ to get ready for some firmware //SendCommand(FezCommand.LoadFirmware); //_w600Port.ReadLine(); // Eat "Start File Transfer" chit chat // Transfer the block int result = xmodem.XmodemTransmit(data, data.Length, true); // Throw an exception if anything freaked if (result < data.Length) { throw new Exception("Failed to transmit file " + result); } Console.WriteLine(); // There is a bunch more yak on the serial port, and the device // has restarted in normal operation. You know, just FYI. //while (true) //{ // var line = fezPort.ReadLine(); // System.Console.WriteLine(line); //} Close(); }
internal void LoadFirmware(string filename) { // Load the file into a memory block byte[] data = ReadFileIntoByteArray(filename); // Set up an XMODEM object var xmodem = new XModem.XModem(_fezPort); int bytesSent = 0; xmodem.PacketSent += (sender, args) => { bytesSent += 1024; Console.Write("{0}% sent\r", Math.Min(bytesSent, data.Length)*100/data.Length); }; // Tell the FEZ to get ready for some firmware SendCommand(FezCommand.LoadFirmware); _fezPort.ReadLine(); // Eat "Start File Transfer" chit chat // Transfer the block int result = xmodem.XmodemTransmit(data, data.Length, true); // Throw an exception if anything freaked if (result < data.Length) { throw new FezBootloaderException("Failed to transmit file " + result); } Console.WriteLine(); // There is a bunch more yak on the serial port, and the device // has restarted in normal operation. You know, just FYI. //while (true) //{ // var line = fezPort.ReadLine(); // System.Console.WriteLine(line); //} Close(); }