294,8 → 294,8 |
string[] sAnalogData = new string[32]; |
int[] iAnalogData = new int[32]; |
|
int[] iTimings = new int[] {100,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850,900,950,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000 }; |
int[] iMotors = new int[] {3,4,5,6,7,8,9,10,11,12 }; |
int[] iTimings = new int[] { 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000 }; |
int[] iMotors = new int[] { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; |
string[] sLiPoCells = new string[] { "3s", "4s", "5s", "6s" }; |
/// <summary> |
/// interval for sending debugdata (multiplied by 10ms) |
339,7 → 339,7 |
/// <summary> |
/// stuff for enabeling touch zoom for the map |
/// </summary> |
Point pTouch1 = new Point(0,0), pTouch2 = new Point(0,0); |
Point pTouch1 = new Point(0, 0), pTouch2 = new Point(0, 0); |
int iFirstStylusID = -1; |
public string connectButtonText |
{ |
369,10 → 369,10 |
_readIni(); |
if (_bSaveWinStateNormal) |
_setScaleSliders(false); |
cBoxTimingsDebug.ItemsSource = |
cBoxTimingsNav.ItemsSource = |
cBoxTimingsBl.ItemsSource = |
cBoxTimingsOSD.ItemsSource = |
cBoxTimingsDebug.ItemsSource = |
cBoxTimingsNav.ItemsSource = |
cBoxTimingsBl.ItemsSource = |
cBoxTimingsOSD.ItemsSource = |
iTimings; |
cBoxLiPoCells.ItemsSource = sLiPoCells; |
cBoxLiPoCells.SelectedItem = _LipoCells.ToString() + "s"; |
428,7 → 428,7 |
dgvMotors1.DataContext = dtMotors.DefaultView; |
_initDTMotors(); |
|
Setter setter = new Setter(ContentControl.PaddingProperty, new Thickness(5,0,5,0)); |
Setter setter = new Setter(ContentControl.PaddingProperty, new Thickness(5, 0, 5, 0)); |
Style style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader)); |
style.Setters.Add(setter); |
setter = new Setter(ContentControl.BackgroundProperty, new SolidColorBrush(Colors.Transparent)); |
436,32 → 436,32 |
setter = new Setter(ContentControl.ForegroundProperty, new SolidColorBrush(Colors.White)); |
style.Setters.Add(setter); |
|
dtWaypoints.Columns.Add("Index",typeof(int)); |
dtWaypoints.Columns.Add("Index", typeof(int)); |
dtWaypoints.Columns.Add("Type", typeof(int)); |
dtWaypoints.Columns.Add("Name",typeof(string)); |
dtWaypoints.Columns.Add("Latitude",typeof(double)); |
dtWaypoints.Columns.Add("Longitude",typeof(double)); |
dtWaypoints.Columns.Add("Altitude",typeof(string)); |
dtWaypoints.Columns.Add("Heading",typeof(string)); |
dtWaypoints.Columns.Add("Speed",typeof(string)); |
dtWaypoints.Columns.Add("ClimbRate",typeof(string)); |
dtWaypoints.Columns.Add("Radius",typeof(string)); |
dtWaypoints.Columns.Add("HoldTime",typeof(string)); |
dtWaypoints.Columns.Add("AutoTrigger",typeof(string)); |
dtWaypoints.Columns.Add("CamAngle",typeof(string)); |
dtWaypoints.Columns.Add("Event",typeof(string)); |
dtWaypoints.Columns.Add("Out1Timer",typeof(string)); |
dtWaypoints.Columns.Add("Status",typeof(string)); |
dtWaypoints.Columns.Add("Name", typeof(string)); |
dtWaypoints.Columns.Add("Latitude", typeof(double)); |
dtWaypoints.Columns.Add("Longitude", typeof(double)); |
dtWaypoints.Columns.Add("Altitude", typeof(string)); |
dtWaypoints.Columns.Add("Heading", typeof(string)); |
dtWaypoints.Columns.Add("Speed", typeof(string)); |
dtWaypoints.Columns.Add("ClimbRate", typeof(string)); |
dtWaypoints.Columns.Add("Radius", typeof(string)); |
dtWaypoints.Columns.Add("HoldTime", typeof(string)); |
dtWaypoints.Columns.Add("AutoTrigger", typeof(string)); |
dtWaypoints.Columns.Add("CamAngle", typeof(string)); |
dtWaypoints.Columns.Add("Event", typeof(string)); |
dtWaypoints.Columns.Add("Out1Timer", typeof(string)); |
dtWaypoints.Columns.Add("Status", typeof(string)); |
dtWaypoints.PrimaryKey = new DataColumn[] { dtWaypoints.Columns["Index"] }; |
dgvWP.ItemsSource = dtWaypoints.DefaultView; |
dgvWP.ColumnHeaderStyle = new Style(); |
dgvWP.ColumnHeaderStyle = style; |
|
dtGPX.Columns.Add("Index",typeof(int)); |
dtGPX.Columns.Add("Latitude",typeof(double)); |
dtGPX.Columns.Add("Longitude",typeof(double)); |
dtGPX.Columns.Add("Elevation",typeof(int)); |
dtGPX.Columns.Add("Time",typeof(string)); |
dtGPX.Columns.Add("Index", typeof(int)); |
dtGPX.Columns.Add("Latitude", typeof(double)); |
dtGPX.Columns.Add("Longitude", typeof(double)); |
dtGPX.Columns.Add("Elevation", typeof(int)); |
dtGPX.Columns.Add("Time", typeof(string)); |
dtGPX.PrimaryKey = new DataColumn[] { dtGPX.Columns["Index"] }; |
drGPX = dtGPX.NewRow(); |
|
492,6 → 492,7 |
Dispatcher.Invoke(() => imageWiFi.Source = new BitmapImage(new Uri("Images/WiFi_G.png", UriKind.Relative))); |
_getVersion(); |
Thread.Sleep(100); |
_getLic(); |
//_OSDMenue(0); |
//Thread.Sleep(200); |
//_sendSerialData(); |
524,10 → 525,10 |
if (_iLifeCounter > 0) |
{ |
Dispatcher.Invoke(() => imageConn.Source = new BitmapImage(new Uri("Images/Data_G.png", UriKind.Relative))); |
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.LightGreen)); |
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.LightGreen)); |
_iLifeCounter = 0; |
_bConnErr = false; |
if(_bAirborne && _bGPXLog) |
if (_bAirborne && _bGPXLog) |
{ |
drGPX[0] = dtGPX.Rows.Count; |
dtGPX.Rows.Add(new object[] { drGPX[0], drGPX[1], drGPX[2], drGPX[3], drGPX[4] }); |
543,7 → 544,7 |
{ |
Log(LogMsgType.Error, "No communication to NC/FC!"); |
Dispatcher.Invoke(() => imageConn.Source = new BitmapImage(new Uri("Images/Data_R.png", UriKind.Relative))); |
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.Red)); |
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.Red)); |
_bConnErr = true; |
} |
} |
627,12 → 628,12 |
#region thresholds |
private void sliderThresholdVoltageWarn_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) |
{ |
if(!_init) |
if (!_init) |
_dThresholdVoltageWarn = sliderThresholdVoltageWarn.Value; |
} |
private void sliderThresholdVoltageCrit_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) |
{ |
if(!_init) |
if (!_init) |
_dThresholdVoltageCrit = sliderThresholdVoltageCrit.Value; |
} |
private void checkBoxThresholdVoltageVoice_Click(object sender, RoutedEventArgs e) |
642,7 → 643,7 |
|
private void sliderThresholdDistanceWarn_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) |
{ |
if(!_init) |
if (!_init) |
_dThresholdDistanceWarn = sliderThresholdDistanceWarn.Value; |
} |
private void checkBoxThresholdDistanceVoice_Click(object sender, RoutedEventArgs e) |
681,7 → 682,7 |
private void Window_Closing(object sender, CancelEventArgs e) |
{ |
_writeIni(); |
if(_bGPXLog && dtGPX.Rows.Count > 0) |
if (_bGPXLog && dtGPX.Rows.Count > 0) |
_saveGPXLog(); |
} |
private void Window_Closed(object sender, EventArgs e) |
713,7 → 714,7 |
comboBoxMode.SelectedItem = MainMap.Manager.Mode; |
|
} |
|
|
/// <summary> |
/// selection of relevant map providers --> if You need more, You can change the line: |
/// comboBoxMapType.ItemsSource = providerList; |
733,7 → 734,7 |
MainMap.Manager.Mode = AccessMode.ServerAndCache; |
copter = new GMapMarker(MainMap.Position); |
|
copter.Shape = new CustomMarkerCopter(this, copter, MainMap.Position.Lat.ToString("0.#######°") + System.Environment.NewLine + MainMap.Position.Lng.ToString("0.#######°"),"red"); |
copter.Shape = new CustomMarkerCopter(this, copter, MainMap.Position.Lat.ToString("0.#######°") + System.Environment.NewLine + MainMap.Position.Lng.ToString("0.#######°"), "red"); |
if (comboBoxCopterColor.SelectionBoxItem != null) |
{ |
string s = comboBoxCopterColor.SelectionBoxItem.ToString(); |
836,7 → 837,7 |
void _clearWPMarker(string name) |
{ |
GMapMarker p = _findWPMarker(name); |
if(p != null) |
if (p != null) |
MainMap.Markers.Remove(p); |
} |
void _renameWPMarker(string s1, string s2) |
863,7 → 864,7 |
|
GMapMarker it = new GMapMarker(center); |
it.ZIndex = -1; |
|
|
cWPBound.Center = center; |
cWPBound.Bound = GMap.NET.PureProjection.GetPointFromDistance(center, distance); |
cWPBound.Tag = it; |
989,9 → 990,9 |
{ |
if (_bFollowCopter) |
_setCopterData(MainMap.Position); |
if((int)sliderMapZoom.Value != MainMap.Zoom) |
if ((int)sliderMapZoom.Value != MainMap.Zoom) |
sliderMapZoom.Value = MainMap.Zoom; |
if(cWPBound != null && cWPBound.Tag != null) |
if (cWPBound != null && cWPBound.Tag != null) |
UpdateCircle(cWPBound); |
} |
|
1010,7 → 1011,7 |
double d = GMapProviders.EmptyProvider.Projection.GetDistance(home.Position, copter.Position); |
Dispatcher.Invoke(() => tbTopDistanceHP.Text = (d * 1000).ToString("0.0 m")); |
|
if(d*1000 < _dThresholdDistanceWarn) |
if (d * 1000 < _dThresholdDistanceWarn) |
{ |
_iDistanceJitter = 0; _bVoiceDistanceActive = false; |
if (stbDistanceWarnAnim != null && _bAnimDistanceActive) |
1131,12 → 1132,12 |
#region settings |
private void cBoxTimingsDebug_DropDownClosed(object sender, EventArgs e) |
{ |
if(! _bCBInit && cBoxTimingsDebug.SelectedIndex > -1) |
if (!_bCBInit && cBoxTimingsDebug.SelectedIndex > -1) |
debugInterval = (byte)(Convert.ToInt16(cBoxTimingsDebug.SelectedItem) / 10); |
} |
private void cBoxTimingsNav_DropDownClosed(object sender, EventArgs e) |
{ |
if(! _bCBInit && cBoxTimingsNav.SelectedIndex > -1) |
if (!_bCBInit && cBoxTimingsNav.SelectedIndex > -1) |
navctrlInterval = (byte)(Convert.ToInt16(cBoxTimingsNav.SelectedItem) / 10); |
} |
private void cBoxTimingsBl_DropDownClosed(object sender, EventArgs e) |
1219,10 → 1220,10 |
{ |
Dispatcher.Invoke(() => |
{ |
// rtfTerminal.CaretPosition = rtfTerminal.CaretPosition.DocumentEnd; |
// rtfTerminal.Foreground = new SolidColorBrush(LogMsgTypeColor[(int)msgtype]); |
// rtfTerminal.AppendText(msg + "\r"); |
TextRange tr = new TextRange(rtfTerminal.Document.ContentEnd,rtfTerminal.Document.ContentEnd); |
// rtfTerminal.CaretPosition = rtfTerminal.CaretPosition.DocumentEnd; |
// rtfTerminal.Foreground = new SolidColorBrush(LogMsgTypeColor[(int)msgtype]); |
// rtfTerminal.AppendText(msg + "\r"); |
TextRange tr = new TextRange(rtfTerminal.Document.ContentEnd, rtfTerminal.Document.ContentEnd); |
tr.Text = msg; |
tr.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(LogMsgTypeColor[(int)msgtype])); |
rtfTerminal.AppendText("\r"); |
1229,7 → 1230,7 |
rtfTerminal.ScrollToEnd(); |
}); |
} |
private void ErrorLog(LogMsgType msgtype, string msg , string linkURL, string linkName) |
private void ErrorLog(LogMsgType msgtype, string msg, string linkURL, string linkName) |
{ |
|
Dispatcher.Invoke(() => |
1284,7 → 1285,7 |
if (iEnd > 0) |
{ |
iLength = iEnd + 1; |
int iHttp = searchRange.Text.IndexOf("http", iEnd); |
int iHttp = searchRange.Text.IndexOf("http", iEnd); |
if (iHttp == iLength) |
{ |
int iEnd2 = searchRange.Text.IndexOf('\r', iLength); |
1291,7 → 1292,7 |
if (iEnd2 > iLength) |
{ |
iLength = iEnd2 + 1; |
// TextRange result = new TextRange(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), GetTextPositionAtOffset(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), iLength)); |
// TextRange result = new TextRange(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), GetTextPositionAtOffset(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), iLength)); |
|
rtfError.Selection.Select(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), GetTextPositionAtOffset(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), iLength)); |
rtfError.Selection.Text = string.Empty; |
1403,9 → 1404,9 |
{ |
case 1: |
Dispatcher.Invoke(() => tbCtrl.Text = "FC"); |
// Dispatcher.Invoke(() => buttonSwitchNC.Visibility = Visibility.Visible); |
// Dispatcher.Invoke(() => labelSwitchToNavi.Visibility = Visibility.Visible); |
// _setFieldsNA(); //display fields NA for FC |
// Dispatcher.Invoke(() => buttonSwitchNC.Visibility = Visibility.Visible); |
// Dispatcher.Invoke(() => labelSwitchToNavi.Visibility = Visibility.Visible); |
// _setFieldsNA(); //display fields NA for FC |
break; |
case 2: |
Dispatcher.Invoke(() => tbCtrl.Text = "NC"); |
1422,7 → 1423,7 |
Dispatcher.Invoke(() => tbCtrl.Text = "NA"); |
break; |
} |
// _loadLabelNames(); |
// _loadLabelNames(); |
} |
// else |
// Debug.Print("Address == 0?"); |
1450,6 → 1451,10 |
_processBLCtrl(data); |
break; |
|
case 'M'://License info |
_processLicense(data); |
break; |
|
case 'O': //NC Data |
_processNCData(data); |
break; |
1517,7 → 1522,7 |
{ |
if (data.Length == 66) |
{ |
|
|
double v; |
int index = 0; |
Int16 i16 = 0; |
1528,7 → 1533,7 |
i16 = (Int16)(i16 << 8); |
iAnalogData[index] = data[i] + i16; |
sAnalogData[index] = (data[i] + i16).ToString(); |
// dtAnalog.Rows[index].SetField(1, sAnalogData[index]); |
// dtAnalog.Rows[index].SetField(1, sAnalogData[index]); |
|
if (adr == 2) //NC |
{ |
1545,7 → 1550,7 |
case 4: //altitude |
Dispatcher.Invoke(() => tbAlt.Text = ((double)iAnalogData[index] / (double)10).ToString("0.0 m")); |
Dispatcher.Invoke(() => tbTopHeight.Text = ((double)iAnalogData[index] / (double)10).ToString("0.0 m")); |
Dispatcher.Invoke(() => { drGPX[3] = (double)iAnalogData[index] / (double)10; }); |
Dispatcher.Invoke(() => { drGPX[3] = (double)iAnalogData[index] / (double)10; }); |
break; |
case 7: //Voltage |
v = (double)iAnalogData[index] / (double)10; |
1555,12 → 1560,12 |
if (v - _dLipoVMin < 1 | v < _dThresholdVoltageWarn) |
{ |
if (v == _dVoltLast) |
if(_iVoltJitter < 20) _iVoltJitter++; |
else |
{ |
_iVoltJitter = 0; |
_dVoltLast = v; |
} |
if (_iVoltJitter < 20) _iVoltJitter++; |
else |
{ |
_iVoltJitter = 0; |
_dVoltLast = v; |
} |
if (_iVoltJitter == 20) |
{ |
Dispatcher.Invoke(() => pbTopVoltage.Foreground = Brushes.Orange); |
1634,7 → 1639,7 |
case 20: //Earthmagnet field |
Dispatcher.Invoke((Action)(() => tbMagF.Text = sAnalogData[index] + "%")); |
Dispatcher.Invoke((Action)(() => tbTopEarthMag.Text = sAnalogData[index] + "%")); |
|
|
if (Math.Abs(100 - iAnalogData[index]) < _iThresholdMagField) |
{ |
Dispatcher.Invoke(() => imageEarthMag.Source = new BitmapImage(new Uri("Images/EarthMag.png", UriKind.Relative))); |
1648,7 → 1653,7 |
else |
{ |
Dispatcher.Invoke(() => imageEarthMag.Source = new BitmapImage(new Uri("Images/EarthMag_R.png", UriKind.Relative))); |
if(_iMagneticFieldLast >= Math.Abs(100 - iAnalogData[index])) |
if (_iMagneticFieldLast >= Math.Abs(100 - iAnalogData[index])) |
{ |
if (_iMagneticFieldJitter < 20) |
_iMagneticFieldJitter++; |
1658,7 → 1663,7 |
_iMagneticFieldJitter = 0; |
_iMagneticFieldLast = Math.Abs(100 - iAnalogData[index]); |
} |
if(_iMagneticFieldJitter == 20) |
if (_iMagneticFieldJitter == 20) |
{ |
if (stbMagneticFieldAnim != null && !_bAnimMagneticFieldActive) |
{ |
1676,25 → 1681,25 |
} |
break; |
case 21: //GroundSpeed |
Dispatcher.Invoke((Action)(() => tbSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s"))); |
if (!_Simulate) |
Dispatcher.Invoke((Action)(() => tbTopSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s"))); |
Dispatcher.Invoke((Action)(() => tbSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s"))); |
if (!_Simulate) |
Dispatcher.Invoke((Action)(() => tbTopSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s"))); |
break; |
|
///********** needs testing --> not sure what position this is *************** |
case 28: //Distance East from saved home position -> calculate distance with distance N + height |
dTemp = Math.Pow((double)iAnalogData[index], 2) + Math.Pow((double)iAnalogData[index - 1], 2); |
dTemp = Math.Sqrt(dTemp) / (double)10; //'flat' distance from HP with N/E |
// lblNCDist.Invoke((Action)(() => lblNCDist.Text = dTemp.ToString("0.00"))); |
dTemp = Math.Pow(dTemp, 2) + Math.Pow(((double)iAnalogData[4] / (double)10), 2); //adding 'height' into calculation |
dTemp = Math.Sqrt(dTemp) / (double)10; |
// Dispatcher.Invoke((Action)(() => tbTopDistanceHP.Text = dTemp.ToString("0.0 m"))); |
Dispatcher.Invoke((Action)(() => tbHP1.Text = dTemp.ToString("0.0 m"))); |
dTemp = Math.Pow((double)iAnalogData[index], 2) + Math.Pow((double)iAnalogData[index - 1], 2); |
dTemp = Math.Sqrt(dTemp) / (double)10; //'flat' distance from HP with N/E |
// lblNCDist.Invoke((Action)(() => lblNCDist.Text = dTemp.ToString("0.00"))); |
dTemp = Math.Pow(dTemp, 2) + Math.Pow(((double)iAnalogData[4] / (double)10), 2); //adding 'height' into calculation |
dTemp = Math.Sqrt(dTemp) / (double)10; |
// Dispatcher.Invoke((Action)(() => tbTopDistanceHP.Text = dTemp.ToString("0.0 m"))); |
Dispatcher.Invoke((Action)(() => tbHP1.Text = dTemp.ToString("0.0 m"))); |
break; |
|
case 31: //Sats used |
Dispatcher.Invoke((Action)(() => tbSats.Text = sAnalogData[index])); |
// Dispatcher.Invoke((Action)(() => tbTopSats.Text = sAnalogData[index])); |
Dispatcher.Invoke((Action)(() => tbSats.Text = sAnalogData[index])); |
// Dispatcher.Invoke((Action)(() => tbTopSats.Text = sAnalogData[index])); |
break; |
} |
} |
1728,16 → 1733,16 |
if (data[5] > 0) //error0 |
{ |
if (adr == 1) |
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[5].ToString() + ": " + ((FC_HWError0)data[5]).ToString(),"",""); |
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[5].ToString() + ": " + ((FC_HWError0)data[5]).ToString(), "", ""); |
if (adr == 2) |
ErrorLog(LogMsgType.Error, " NC - HW-Error " + data[5].ToString() + ": " + ((NC_HWError0)data[5]).ToString(),"",""); |
ErrorLog(LogMsgType.Error, " NC - HW-Error " + data[5].ToString() + ": " + ((NC_HWError0)data[5]).ToString(), "", ""); |
} |
if (data[6] > 0) //error1 |
{ |
if (adr == 1) |
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[6].ToString() + ": " + ((FC_HWError1)data[6]).ToString(),"",""); |
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[6].ToString() + ": " + ((FC_HWError1)data[6]).ToString(), "", ""); |
if (adr == 2) |
ErrorLog(LogMsgType.Error, " NC - Unknown HW-ERROR: " + data[6].ToString(),"",""); //@moment NC has only one error field |
ErrorLog(LogMsgType.Error, " NC - Unknown HW-ERROR: " + data[6].ToString(), "", ""); //@moment NC has only one error field |
} |
//if ((data[5] + data[6] == 0) && _bErrorLog) |
// _clearErrorLog(adr == 1 ? "FC - HW-Error" : "NC - HW-Error"); |
1745,6 → 1750,20 |
} |
check_HWError = false; |
} |
|
void _processLicense(byte[] data) |
{ |
if (data.Length > 480) |
{ |
Dispatcher.Invoke(() => { |
tbDataLicenseUser.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 1, 127)); |
tbDataLicenseMail.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 129, 127)); |
tbDataLicenseFeature.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 257, 127)); |
tbDataLicenseExpire.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 385, 11)); |
tbDataLicenseLicense.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 397, 16)); |
}); |
} |
} |
/// <summary> |
/// BL-Ctrl data 'K' |
/// for FC you have to use a customized firmware |
2305,6 → 2324,7 |
Thread.Sleep(100); |
_getVersion(); |
Thread.Sleep(100); |
_getLic(); |
// _OSDMenue(0); |
} |
else |
2356,6 → 2376,21 |
_sendControllerMessage('o', 2, new byte[1] { interval }); |
} |
/// <summary> |
/// request the license info |
/// </summary> |
void _getLic() |
{ |
if (serialPortCtrl.Port.IsOpen) |
{ |
Stream serialStream = serialPortCtrl.Port.BaseStream; |
byte[] bytes = FlightControllerMessage.CreateMessage('m', 2, new byte[1] { (byte)1 }); |
serialStream.Write(bytes, 0, bytes.Length); |
} |
else |
Log(LogMsgType.Error, "NOT CONNECTED!"); |
|
} |
/// <summary> |
/// get the errortext for pending NC error |
/// </summary> |
private void _readNCError() |
3675,15 → 3710,20 |
GMapMarker p = ((GMapMarker)wp.DataContext); |
if (p != null && index < dtWaypoints.Rows.Count) |
{ |
//dtWaypoints.Rows[index][3] = p.Position.Lat; |
//dtWaypoints.Rows[index][4] = p.Position.Lng; |
//Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
if(wp.WPType == 0 | wp.WPType == 3) |
{ |
wpList[index] = p.Position; |
MainMap.Markers.Remove(mRouteWP); |
_routeUpdate(); |
{ |
PointLatLng x = new PointLatLng((double)dtWaypoints.Rows[index][3], (double)dtWaypoints.Rows[index][4]); |
int wpListIndex = wpList.IndexOf(x); |
if (wpListIndex > -1) |
{ |
wpList[wpListIndex] = p.Position; |
MainMap.Markers.Remove(mRouteWP); |
_routeUpdate(); |
} |
} |
dtWaypoints.Rows[index][3] = p.Position.Lat; |
dtWaypoints.Rows[index][4] = p.Position.Lng; |
} |
} |
void _updateDTWPPosFin(CustomMarkerWP wp) |
4150,11 → 4190,18 |
dgvWP.Items.Refresh(); |
dgvWP.SelectedIndex = index - 1; |
_dgvWPselectEditRow(); |
PointLatLng p = wpList[index]; |
wpList.RemoveAt(index); |
wpList.Insert(index - 1, p); |
MainMap.Markers.Remove(mRouteWP); |
_routeUpdate(); |
if (((int)dtWaypoints.Rows[index][1] == 0 | (int)dtWaypoints.Rows[index][1] == 3) && ((int)dtWaypoints.Rows[index - 1][1] == 0 | (int)dtWaypoints.Rows[index - 1][1] == 3))// && wpList.Count > index) |
{ |
PointLatLng x = new PointLatLng((double)dtWaypoints.Rows[index][3], (double)dtWaypoints.Rows[index][4]); |
int wpListIndex = wpList.IndexOf(x); |
if (wpListIndex > 0) |
{ |
wpList.RemoveAt(wpListIndex); |
wpList.Insert(wpListIndex - 1, x); |
MainMap.Markers.Remove(mRouteWP); |
_routeUpdate(); |
} |
} |
} |
} |
|
4180,11 → 4227,21 |
dgvWP.Items.Refresh(); |
dgvWP.SelectedIndex = index + 1; |
_dgvWPselectEditRow(); |
PointLatLng p = wpList[index]; |
wpList.RemoveAt(index); |
wpList.Insert(index + 1, p); |
MainMap.Markers.Remove(mRouteWP); |
_routeUpdate(); |
if (((int)dtWaypoints.Rows[index][1] == 0 | (int)dtWaypoints.Rows[index][1] == 3) && ((int)dtWaypoints.Rows[index+1][1] == 0 | (int)dtWaypoints.Rows[index+1][1] == 3))// && wpList.Count > index) |
{ |
PointLatLng x = new PointLatLng((double)dtWaypoints.Rows[index][3], (double)dtWaypoints.Rows[index][4]); |
int wpListIndex = wpList.IndexOf(x); |
if (wpListIndex > -1) |
{ |
wpList.RemoveAt(wpListIndex); |
if (wpList.Count > wpListIndex) |
wpList.Insert(wpListIndex + 1, x); |
else |
wpList.Add(x); |
MainMap.Markers.Remove(mRouteWP); |
_routeUpdate(); |
} |
} |
} |
|
} |