本文整理汇总了C#中MissionPlanner.Arduino.ArduinoSTK类的典型用法代码示例。如果您正苦于以下问题:C# ArduinoSTK类的具体用法?C# ArduinoSTK怎么用?C# ArduinoSTK使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ArduinoSTK类属于MissionPlanner.Arduino命名空间,在下文中一共展示了ArduinoSTK类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BUT_wipeeeprom_Click
private void BUT_wipeeeprom_Click(object sender, EventArgs e)
{
byte[] EEPROM = new byte[4*1024];
for (int i = 0; i < EEPROM.Length;i++)
{
EEPROM[i] = 0xff;
}
IArduinoComms port = new ArduinoSTK();
if (DialogResult.Yes == CustomMessageBox.Show("is this a 1280?", "", MessageBoxButtons.YesNo))
{
port = new ArduinoSTK();
port.BaudRate = 57600;
}
else
{
port = new ArduinoSTKv2();
port.BaudRate = 115200;
}
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Parity = Parity.None;
port.DtrEnable = true;
port.PortName = MissionPlanner.MainV2.comPortName;
try
{
port.Open();
if (port.connectAP())
{
// waypoints
int start = 0;
int end = 1024*4;
log.Info(start + " to " + end);
port.upload(EEPROM, (short)start, (short)(end - start), (short)start);
if (port.keepalive())
{
// Config
if (port.keepalive())
{
System.Threading.Thread.Sleep(2000);
//MessageBox.Show("Upload Completed");
}
else
{
CustomMessageBox.Show("Communication Error - WPs wrote but no config");
}
}
else
{
CustomMessageBox.Show("Communication Error - Bad data");
}
}
else
{
CustomMessageBox.Show("Communication Error - no connection");
}
port.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Port in use? " + ex.ToString()); port.Close(); }
}
示例2: UploadFW
private void UploadFW(bool custom = false)
{
ArduinoSTK comPort = new ArduinoSTK();
uploader.Uploader uploader = new uploader.Uploader();
try
{
comPort.PortName = MainV2.comPort.BaseStream.PortName;
comPort.BaudRate = 115200;
comPort.Open();
}
catch { CustomMessageBox.Show("Invalid ComPort or in use"); return; }
bool bootloadermode = false;
// attempt bootloader mode
try
{
uploader_ProgressEvent(0);
uploader_LogEvent("Trying Bootloader Mode");
uploader.port = comPort;
uploader.connect_and_sync();
uploader.ProgressEvent += new ProgressEventHandler(uploader_ProgressEvent);
uploader.LogEvent += new LogEventHandler(uploader_LogEvent);
uploader_LogEvent("In Bootloader Mode");
bootloadermode = true;
}
catch
{
// cleanup bootloader mode fail, and try firmware mode
comPort.Close();
comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate;
try
{
comPort.Open();
}
catch { CustomMessageBox.Show("Error opening port", "error"); return; }
uploader.ProgressEvent += new ProgressEventHandler(uploader_ProgressEvent);
uploader.LogEvent += new LogEventHandler(uploader_LogEvent);
uploader_LogEvent("Trying Firmware Mode");
bootloadermode = false;
}
// check for either already bootloadermode, or if we can do a ATI to ID the firmware
if (bootloadermode || doConnect(comPort))
{
uploader.IHex iHex = new uploader.IHex();
iHex.LogEvent += new LogEventHandler(iHex_LogEvent);
iHex.ProgressEvent += new ProgressEventHandler(iHex_ProgressEvent);
// put into bootloader mode/udpate mode
if (!bootloadermode)
{
try
{
comPort.Write("AT&UPDATE\r\n");
string left = comPort.ReadExisting();
log.Info(left);
Sleep(700);
comPort.BaudRate = 115200;
}
catch { }
}
global::uploader.Uploader.Board device = global::uploader.Uploader.Board.FAILED;
global::uploader.Uploader.Frequency freq = global::uploader.Uploader.Frequency.FAILED;
// get the device type and frequency in the bootloader
uploader.getDevice(ref device, ref freq);
// get firmware for this device
if (getFirmware(device, custom))
{
// load the hex
try
{
iHex.load(firmwarefile);
}
catch { CustomMessageBox.Show("Bad Firmware File"); goto exit; }
// upload the hex and verify
try
{
uploader.upload(comPort, iHex);
}
catch (Exception ex) { CustomMessageBox.Show("Upload Failed " + ex.Message); }
}
else
{
//.........这里部分代码省略.........
示例3: BUT_flashdl_Click
private void BUT_flashdl_Click(object sender, EventArgs e)
{
byte[] FLASH = new byte[256 * 1024];
IArduinoComms port = new ArduinoSTK();
if (DialogResult.Yes == CustomMessageBox.Show("is this a 1280?", "", MessageBoxButtons.YesNo))
{
port = new ArduinoSTK();
port.BaudRate = 57600;
}
else
{
port = new ArduinoSTKv2();
port.BaudRate = 115200;
}
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Parity = Parity.None;
port.DtrEnable = true;
port.PortName = MissionPlanner.MainV2.comPortName;
try
{
port.Open();
System.Threading.Thread.Sleep(100);
if (port.connectAP())
{
// waypoints
int start = 0;
short length = 0x100;
log.Info(start + " to " + FLASH.Length);
while (start < FLASH.Length)
{
log.Info("Doing " + length + " at " + start);
port.setaddress(start);
port.downloadflash(length).CopyTo(FLASH, start);
start += length;
}
StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"flash.bin", false);
BinaryWriter bw = new BinaryWriter(sw.BaseStream);
bw.Write(FLASH, 0, FLASH.Length);
bw.Close();
sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"flash.hex", false);
for (int i = 0; i < FLASH.Length; i += 16)
{
string add = string.Format("{0:X4}", i);
if (i % (0x1000 << 4) == 0)
{
if (i != 0)
sw.WriteLine(":02000002{0:X4}{1:X2}", ((i >> 4) & 0xf000), 0x100 - (2 + 2 + (((i >> 4) & 0xf000) >> 8) & 0xff));
}
if (add.Length == 5)
{
add = add.Substring(1);
}
sw.Write(":{0:X2}{1}00", 16, add);
byte ck = (byte)(16 + (i & 0xff) + ((i >> 8) & 0xff));
for (int a = 0; a < 16; a++)
{
ck += FLASH[i + a];
sw.Write("{0:X2}", FLASH[i + a]);
}
sw.WriteLine("{0:X2}", (byte)(0x100 - ck));
}
sw.Close();
log.Info("Downloaded");
}
else
{
CustomMessageBox.Show("Communication Error - no connection");
}
port.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Port in use? " + ex.ToString()); port.Close(); }
}
示例4: BUT_flashup_Click
private void BUT_flashup_Click(object sender, EventArgs e)
{
byte[] FLASH = new byte[1];
try
{
StreamReader sr = new StreamReader(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"firmware.hex");
FLASH = readIntelHEXv2(sr);
sr.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Failed to read firmware.hex : " + ex.Message); }
IArduinoComms port = new ArduinoSTK();
if (DialogResult.Yes == CustomMessageBox.Show("is this a 1280?", "", MessageBoxButtons.YesNo))
{
port = new ArduinoSTK();
port.BaudRate = 57600;
}
else
{
port = new ArduinoSTKv2();
port.BaudRate = 115200;
}
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Parity = Parity.None;
port.DtrEnable = true;
try
{
port.PortName = MissionPlanner.MainV2.comPortName;
port.Open();
if (port.connectAP())
{
log.Info("starting");
port.uploadflash(FLASH, 0, FLASH.Length, 0);
log.Info("Uploaded");
}
else
{
CustomMessageBox.Show("Communication Error - no connection");
}
port.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Check port settings or Port in use? " + ex.ToString()); port.Close(); }
}
示例5: BUT_copyto1280_Click
private void BUT_copyto1280_Click(object sender, EventArgs e)
{
IArduinoComms port = new ArduinoSTK();
port.BaudRate = 57600;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Parity = Parity.None;
port.DtrEnable = true;
StreamReader sr = new StreamReader(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"EEPROM1280.bin");
BinaryReader br = new BinaryReader(sr.BaseStream);
byte[] EEPROM = br.ReadBytes(1024 * 4);
br.Close();
sr.Close();
sr = new StreamReader(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"FLASH1280.bin");
br = new BinaryReader(sr.BaseStream);
byte[] FLASH = br.ReadBytes(1024 * 128);
br.Close();
sr.Close();
try
{
port.PortName = MissionPlanner.MainV2.comPortName;
port.Open();
if (port.connectAP())
{
log.Info("starting");
port.uploadflash(FLASH, 0, FLASH.Length, 0);
port.upload(EEPROM, 0, (short)EEPROM.Length, 0);
log.Info("Uploaded");
}
else
{
CustomMessageBox.Show("Communication Error - no connection");
}
port.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Check port settings or Port in use? " + ex.ToString()); port.Close(); }
}
示例6: BUT_dleeprom_Click
private void BUT_dleeprom_Click(object sender, EventArgs e)
{
IArduinoComms port = new ArduinoSTK();
if (DialogResult.Yes == CustomMessageBox.Show("is this a 1280?", "", MessageBoxButtons.YesNo))
{
port = new ArduinoSTK();
port.BaudRate = 57600;
}
else
{
port = new ArduinoSTKv2();
port.BaudRate = 115200;
}
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Parity = Parity.None;
port.DtrEnable = true;
try
{
port.PortName = MissionPlanner.MainV2.comPortName;
log.Info("Open Port");
port.Open();
log.Info("Connect AP");
if (port.connectAP())
{
log.Info("Download AP");
byte[] EEPROM = new byte[1024*4];
for (int a = 0; a < 4 * 1024; a += 0x100)
{
port.setaddress(a);
port.download(0x100).CopyTo(EEPROM,a);
}
log.Info("Verify State");
if (port.keepalive())
{
StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"EEPROM.bin");
BinaryWriter bw = new BinaryWriter(sw.BaseStream);
bw.Write(EEPROM, 0, 1024 * 4);
bw.Close();
}
else
{
CustomMessageBox.Show("Communication Error - Bad data");
}
}
else
{
CustomMessageBox.Show("Communication Error - no connection");
}
port.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Port Error? " + ex.ToString()); if (port != null && port.IsOpen) { port.Close(); } }
}
示例7: BUT_copy1280_Click
private void BUT_copy1280_Click(object sender, EventArgs e)
{
ArduinoSTK port = new ArduinoSTK();
port.BaudRate = 57600;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Parity = Parity.None;
port.DtrEnable = true;
try
{
port.PortName = MissionPlanner.MainV2.comPortName;
log.Info("Open Port");
port.Open();
log.Info("Connect AP");
if (port.connectAP())
{
log.Info("Download AP");
byte[] EEPROM = new byte[1024 * 4];
for (int a = 0; a < 4 * 1024; a += 0x100)
{
port.setaddress(a);
port.download(0x100).CopyTo(EEPROM, a);
}
log.Info("Verify State");
if (port.keepalive())
{
StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"EEPROM1280.bin");
BinaryWriter bw = new BinaryWriter(sw.BaseStream);
bw.Write(EEPROM, 0, EEPROM.Length);
bw.Close();
log.Info("Download AP");
byte[] FLASH = new byte[1024 * 128];
for (int a = 0; a < FLASH.Length; a += 0x100)
{
port.setaddress(a);
port.downloadflash(0x100).CopyTo(FLASH, a);
}
sw = new StreamWriter(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + @"FLASH1280.bin");
bw = new BinaryWriter(sw.BaseStream);
bw.Write(FLASH, 0, FLASH.Length);
bw.Close();
}
else
{
CustomMessageBox.Show("Communication Error - Bad data");
}
}
else
{
CustomMessageBox.Show("Communication Error - no connection");
}
port.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Port Error? " + ex.ToString()); if (port != null && port.IsOpen) { port.Close(); } }
}
示例8: button1_Click
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "EEPROM.bin|*.bin";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
openFileDialog1.InitialDirectory = Path.GetDirectoryName(Application.ExecutablePath);
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
StreamReader sr = new StreamReader(openFileDialog1.FileName);
BinaryReader br = new BinaryReader(sr.BaseStream);
byte[] EEPROM = br.ReadBytes(1024 * 4);
br.Close();
sr.Close();
IArduinoComms port = new ArduinoSTK();
if (DialogResult.Yes == CustomMessageBox.Show("is this a 1280?", "", MessageBoxButtons.YesNo))
{
port = new ArduinoSTK();
port.BaudRate = 57600;
}
else
{
port = new ArduinoSTKv2();
port.BaudRate = 115200;
}
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Parity = Parity.None;
port.DtrEnable = true;
port.PortName = MissionPlanner.MainV2.comPortName;
try
{
port.Open();
if (port.connectAP())
{
// waypoints
int start = 0;
int end = 1024*4;
log.Info(start + " to " + end);
port.upload(EEPROM, (short)start, (short)(end - start), (short)start);
if (port.keepalive())
{
// Config
if (port.keepalive())
{
System.Threading.Thread.Sleep(2000);
//MessageBox.Show("Upload Completed");
}
else
{
CustomMessageBox.Show("Communication Error - WPs wrote but no config");
}
}
else
{
CustomMessageBox.Show("Communication Error - Bad data");
}
}
else
{
CustomMessageBox.Show("Communication Error - no connection");
}
port.Close();
}
catch (Exception ex) { CustomMessageBox.Show("Port in use? " + ex.ToString()); port.Close(); }
}
catch (Exception) { CustomMessageBox.Show("Error reading file"); }
}
}
示例9: UploadFlash
/// <summary>
/// upload to arduino standalone
/// </summary>
/// <param name="filename"></param>
/// <param name="board"></param>
public bool UploadFlash(string comport, string filename, BoardDetect.boards board)
{
if (board == BoardDetect.boards.px4 || board == BoardDetect.boards.px4v2 || board == BoardDetect.boards.px4v4)
{
try
{
return UploadPX4(filename, board);
}
catch (MissingFieldException)
{
CustomMessageBox.Show("Please update, your install is currupt", Strings.ERROR);
return false;
}
}
if (board == BoardDetect.boards.vrbrainv40 || board == BoardDetect.boards.vrbrainv45 ||
board == BoardDetect.boards.vrbrainv50 || board == BoardDetect.boards.vrbrainv51 ||
board == BoardDetect.boards.vrbrainv52 || board == BoardDetect.boards.vrcorev10 ||
board == BoardDetect.boards.vrubrainv51 || board == BoardDetect.boards.vrubrainv52)
{
return UploadVRBRAIN(filename, board);
}
byte[] FLASH = new byte[1];
try
{
updateProgress(0, Strings.ReadingHexFile);
using (StreamReader sr = new StreamReader(filename))
{
FLASH = readIntelHEXv2(sr);
}
log.InfoFormat("\n\nSize: {0}\n\n", FLASH.Length);
}
catch (Exception ex)
{
updateProgress(0, Strings.FailedReadHEX);
CustomMessageBox.Show(Strings.FailedToReadHex + ex.Message);
return false;
}
IArduinoComms port = new ArduinoSTK();
if (board == BoardDetect.boards.b1280)
{
if (FLASH.Length > 126976)
{
CustomMessageBox.Show("Firmware is to big for a 1280, Please upgrade your hardware!!");
return false;
}
//port = new ArduinoSTK();
port.BaudRate = 57600;
}
else if (board == BoardDetect.boards.b2560 || board == BoardDetect.boards.b2560v2)
{
port = new ArduinoSTKv2
{
BaudRate = 115200
};
}
port.DataBits = 8;
port.StopBits = System.IO.Ports.StopBits.One;
port.Parity = System.IO.Ports.Parity.None;
port.DtrEnable = true;
try
{
port.PortName = comport;
port.Open();
if (port.connectAP())
{
log.Info("starting");
updateProgress(0, String.Format(Strings.UploadingBytesToBoard, FLASH.Length) + board);
// this is enough to make ap_var reset
//port.upload(new byte[256], 0, 2, 0);
port.Progress += updateProgress;
if (!port.uploadflash(FLASH, 0, FLASH.Length, 0))
{
if (port.IsOpen)
port.Close();
throw new Exception("Upload failed. Lost sync. Try Arduino!!");
}
port.Progress -= updateProgress;
updateProgress(100, Strings.UploadComplete);
log.Info("Uploaded");
int start = 0;
short length = 0x100;
//.........这里部分代码省略.........
示例10: decodeApVar
/// <summary>
/// return the software id from eeprom
/// </summary>
/// <param name="comport">Port</param>
/// <param name="version">Board type</param>
/// <returns></returns>
public static int decodeApVar(string comport, BoardDetect.boards version)
{
IArduinoComms port = new ArduinoSTK();
if (version == boards.b1280)
{
port = new ArduinoSTK();
port.BaudRate = 57600;
}
else if (version == boards.b2560 || version == boards.b2560v2)
{
port = new ArduinoSTKv2();
port.BaudRate = 115200;
}
else { return -1; }
port.PortName = comport;
port.DtrEnable = true;
port.Open();
port.connectAP();
byte[] buffer = port.download(1024 * 4);
port.Close();
if (buffer[0] != 'A' && buffer[0] != 'P' || buffer[1] != 'P' && buffer[1] != 'A') // this is the apvar header
{
return -1;
}
else
{
if (buffer[0] == 'A' && buffer[1] == 'P' && buffer[2] == 2)
{ // apvar header and version
int pos = 4;
byte key = 0;
while (pos < (1024 * 4))
{
int size = buffer[pos] & 63;
pos++;
key = buffer[pos];
pos++;
log.InfoFormat("{0:X4}: key {1} size {2}\n ", pos - 2, key, size + 1);
if (key == 0xff)
{
log.InfoFormat("end sentinal at {0}", pos - 2);
break;
}
if (key == 0)
{
//Array.Reverse(buffer, pos, 2);
return BitConverter.ToUInt16(buffer, pos);
}
for (int i = 0; i <= size; i++)
{
Console.Write(" {0:X2}", buffer[pos]);
pos++;
}
}
}
if (buffer[0] == 'P' && buffer[1] == 'A' && buffer[2] == 5) // ap param
{
int pos = 4;
byte key = 0;
while (pos < (1024 * 4))
{
key = buffer[pos];
pos++;
int group = buffer[pos];
pos++;
int type = buffer[pos];
pos++;
int size = type_size((ap_var_type)Enum.Parse(typeof(ap_var_type), type.ToString()));
Console.Write("{0:X4}: type {1} ({2}) key {3} group {4} size {5}\n ", pos - 2, type, type_names[type], key, group, size);
if (key == 0xff)
{
log.InfoFormat("end sentinal at {0}", pos - 2);
break;
}
if (key == 0)
{
//Array.Reverse(buffer, pos, 2);
return BitConverter.ToUInt16(buffer, pos);
}
for (int i = 0; i < size; i++)
{
Console.Write(" {0:X2}", buffer[pos]);
pos++;
}
//.........这里部分代码省略.........
示例11: UploadFlash
/// <summary>
/// upload to arduino standalone
/// </summary>
/// <param name="filename"></param>
/// <param name="board"></param>
public bool UploadFlash(string comport, string filename, BoardDetect.boards board)
{
if (board == BoardDetect.boards.px4|| board == BoardDetect.boards.px4v2)
{
return UploadPX4(filename);
}
byte[] FLASH = new byte[1];
StreamReader sr = null;
try
{
updateProgress(0, "Reading Hex File");
sr = new StreamReader(filename);
FLASH = readIntelHEXv2(sr);
sr.Close();
log.InfoFormat("\n\nSize: {0}\n\n", FLASH.Length);
}
catch (Exception ex)
{
if (sr != null)
{
sr.Dispose();
}
updateProgress(0, "Failed read HEX");
CustomMessageBox.Show("Failed to read firmware.hex : " + ex.Message);
return false;
}
IArduinoComms port = new ArduinoSTK();
if (board == BoardDetect.boards.b1280)
{
if (FLASH.Length > 126976)
{
CustomMessageBox.Show("Firmware is to big for a 1280, Please upgrade your hardware!!");
return false;
}
//port = new ArduinoSTK();
port.BaudRate = 57600;
}
else if (board == BoardDetect.boards.b2560 || board == BoardDetect.boards.b2560v2)
{
port = new ArduinoSTKv2
{
BaudRate = 115200
};
}
port.DataBits = 8;
port.StopBits = System.IO.Ports.StopBits.One;
port.Parity = System.IO.Ports.Parity.None;
port.DtrEnable = true;
try
{
port.PortName = comport;
port.Open();
if (port.connectAP())
{
log.Info("starting");
updateProgress(0, "Uploading " + FLASH.Length + " bytes to Board: " + board);
// this is enough to make ap_var reset
//port.upload(new byte[256], 0, 2, 0);
port.Progress += updateProgress;
if (!port.uploadflash(FLASH, 0, FLASH.Length, 0))
{
if (port.IsOpen)
port.Close();
throw new Exception("Upload failed. Lost sync. Try Arduino!!");
}
port.Progress -= updateProgress;
updateProgress(100, "Upload Complete");
log.Info("Uploaded");
int start = 0;
short length = 0x100;
byte[] flashverify = new byte[FLASH.Length + 256];
updateProgress(0, "Verify Firmware");
while (start < FLASH.Length)
{
updateProgress((int)((start / (float)FLASH.Length) * 100), "Verify Firmware");
port.setaddress(start);
log.Info("Downloading " + length + " at " + start);
port.downloadflash(length).CopyTo(flashverify, start);
start += length;
}
//.........这里部分代码省略.........