private void WriteCharsetVersion(string version)
{
byte[] tempEeprom = new byte[3];
tempEeprom[0] = (byte)version[0];
tempEeprom[1] = (byte)version[1];
tempEeprom[2] = (byte)version[2];
//Set Com port
ArduinoSTK sp;
try
{
if (comPort.IsOpen)
comPort.Close();
sp = new ArduinoSTK();
sp.PortName = CMB_ComPort.Text;
sp.BaudRate = 57600;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.Parity = Parity.None;
sp.DtrEnable = false;
sp.RtsEnable = false; //added
sp.Open();
}
catch { MessageBox.Show("Error opening com port", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
if (sp.connectAP())
{
try
{
bool spupload_flag = false;
for (int i = 0; i < 10; i++)
{ //try to upload two times if it fail
spupload_flag = sp.upload(tempEeprom, (short)0, (short)tempEeprom.Length, (short)CS_VERSION1_ADDR);
if (!spupload_flag)
{
if (sp.keepalive()) Console.WriteLine("keepalive successful (iter " + i + ")");
else Console.WriteLine("keepalive fail (iter " + i + ")");
}
else break;
}
if (spupload_flag) MessageBox.Show("Done writing configuration data!");
else MessageBox.Show("Failed to upload new configuration data");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
MessageBox.Show("Failed to talk to bootloader");
}
sp.Close();
}