internal bool readEEPROM(int length) { bool fail = false; ArduinoSTK sp = osd.OpenArduino(); byte[] data; if (sp != null && sp.connectAP()) { try { for (int i = 0; i < 5; i++) //try to download two times if it fail { data = sp.download(EEPROM_SIZE); if (sp.down_flag) { eeprom.data = data; break; } else { if (sp.keepalive()) { Console.WriteLine("keepalive successful (iter " + i + ")"); } else { Console.WriteLine("keepalive fail (iter " + i + ")"); } } } } catch (Exception ex) { if (ex != null) { MessageBox.Show(ex.Message); fail = true; } } } else { MessageBox.Show("Failed to talk to bootloader"); fail = true; } try { sp.Close(); } catch {}; return(fail); }