786,18 → 786,21 |
} |
void _setActiveWP(int iIndex) |
{ |
if (wpActiveMarker == null || !MainMap.Markers.Contains(wpActiveMarker)) |
if (iIndex < wpList.Count) |
{ |
Dispatcher.Invoke(() => |
if (wpActiveMarker == null || !MainMap.Markers.Contains(wpActiveMarker)) |
{ |
wpActiveMarker = new GMapMarker(wpList[iIndex]); |
wpActiveMarker.Shape = new CustomMarkerWPActive(this, wpActiveMarker, "wpActive", 0); |
wpActiveMarker.Offset = new Point(-17.5, -17.5); |
MainMap.Markers.Add(wpActiveMarker); |
}); |
Dispatcher.Invoke(() => |
{ |
wpActiveMarker = new GMapMarker(wpList[iIndex]); |
wpActiveMarker.Shape = new CustomMarkerWPActive(this, wpActiveMarker, "wpActive", 0); |
wpActiveMarker.Offset = new Point(-17.5, -17.5); |
MainMap.Markers.Add(wpActiveMarker); |
}); |
} |
else |
Dispatcher.Invoke(() => wpActiveMarker.Position = wpList[iIndex]); |
} |
else |
Dispatcher.Invoke(() => wpActiveMarker.Position = wpList[iIndex]); |
|
Dispatcher.Invoke(() => tbWPStatusHeight.Text = dtWaypoints.Rows[iIndex][5].ToString() + " m"); |
} |
1405,14 → 1408,14 |
{ |
case 1: |
Dispatcher.Invoke(() => tbCtrl.Text = "FC"); |
// Dispatcher.Invoke(() => buttonSwitchNC.Visibility = Visibility.Visible); |
// Dispatcher.Invoke(() => labelSwitchToNavi.Visibility = Visibility.Visible); |
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"); |
//Dispatcher.Invoke(() => buttonSwitchNC.Visibility = Visibility.Hidden); |
//Dispatcher.Invoke(() => labelSwitchToNavi.Visibility = Visibility.Hidden); |
Dispatcher.Invoke(() => buttonSwitchNC.Visibility = Visibility.Hidden); |
Dispatcher.Invoke(() => labelSwitchToNavi.Visibility = Visibility.Hidden); |
break; |
//case 3: |
// lblCtrl.Invoke((Action)(() => lblCtrl.Text = "MK3MAG")); |
1822,339 → 1825,337 |
/// <param name="data">the received byte array to process</param> |
|
|
byte OSD_FLAG_MASK1 = 0x04 + 0x20 + 0x40 + 0x80; |
byte OSD_FLAG_MASK2 = 0x01 + 0x02 + 0x08 + 0x10; |
int FCSTATUSFLAGS1 = 0; |
int FCSTATUSFLAGS2 = 0; |
byte OSDSTATUSFLAGS1 = 0; |
byte OSDSTATUSFLAGS2 = 0; |
void _processNCDataV2(byte[] data) |
{ |
int i_32, i_16, iVal; |
double d; |
OSD_Base_Data_t osd = new OSD_Base_Data_t(data); |
OSDSTATUSFLAGS1 = osd.OSDSTATUSFLAGS1(); |
FCSTATUSFLAGS1 = (OSDSTATUSFLAGS1 & OSD_FLAG_MASK1) | (OSDSTATUSFLAGS2 & ~OSD_FLAG_MASK1); |
FCSTATUSFLAGS2 = (OSDSTATUSFLAGS1 & OSD_FLAG_MASK2) | (OSDSTATUSFLAGS2 & ~OSD_FLAG_MASK2); |
Dispatcher.Invoke(() => { drGPX[2] = osd.Pos().Lng; }); |
Dispatcher.Invoke(() => { drGPX[1] = osd.Pos().Lat; }); |
Dispatcher.Invoke(() => { drGPX[4] = DateTime.UtcNow.ToString("u", System.Globalization.CultureInfo.InvariantCulture); }); //2011-01-14T01:59:01Z }); |
Dispatcher.Invoke((Action)(() => tbNCGrSpeed.Text = osd.Speed().ToString("0.0 m/s"))); |
if (_Simulate) |
Dispatcher.Invoke((Action)(() => tbTopSpeed.Text = osd.Speed().ToString("0.0 m/s"))); |
|
switch ((int)data[0]) |
if ((int)data[0] < 17) |
{ |
case 10: |
break; |
case 11: |
//---------------NC-Flags-------------------------- |
Dispatcher.Invoke((Action)(() => NC1_2.Background = ((data[14] & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_PH 0x02 |
Dispatcher.Invoke((Action)(() => NC1_3.Background = ((data[14] & 4) == 4) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => NC1_4.Background = ((data[14] & 8) == 8) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_RANGE_LIMIT 0x08 |
Dispatcher.Invoke((Action)(() => NC1_5.Background = ((data[14] & 16) == 16) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_NOSERIALLINK 0x10 |
Dispatcher.Invoke((Action)(() => NC1_6.Background = ((data[14] & 32) == 32) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_TARGET_REACHED 0x20 |
Dispatcher.Invoke((Action)(() => NC1_7.Background = ((data[14] & 64) == 64) ? new SolidColorBrush(Colors.DodgerBlue) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_MANUAL_CONTROL 0x40 |
Dispatcher.Invoke((Action)(() => NC1_8.Background = ((data[14] & 128) == 128) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_GPS_OK 0x80 |
int i_32, i_16, iVal; |
double d; |
OSD_Base_Data_t osd = new OSD_Base_Data_t(data); |
OSDSTATUSFLAGS1 = osd.OSDSTATUSFLAGS1(); |
Dispatcher.Invoke(() => { drGPX[2] = osd.Pos().Lng; }); |
Dispatcher.Invoke(() => { drGPX[1] = osd.Pos().Lat; }); |
Dispatcher.Invoke(() => { drGPX[4] = DateTime.UtcNow.ToString("u", System.Globalization.CultureInfo.InvariantCulture); }); //2011-01-14T01:59:01Z }); |
Dispatcher.Invoke((Action)(() => tbNCGrSpeed.Text = osd.Speed().ToString("0.0 m/s"))); |
if (_Simulate) |
Dispatcher.Invoke((Action)(() => tbTopSpeed.Text = osd.Speed().ToString("0.0 m/s"))); |
|
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.Text = ((data[14] & 4) == 4) ? "CH" : "PH"));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.Background = (((data[14] & 2) == 2) | ((data[14] & 4) == 4)) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.Foreground = (((data[14] & 2) == 2) | ((data[14] & 4) == 4)) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.BorderBrush = (((data[14] & 2) == 2) | ((data[14] & 4) == 4)) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
switch ((int)data[0]) |
{ |
case 10: |
break; |
case 11: |
OSDSTATUSFLAGS2 = osd.OSDSTATUSFLAGS2(); |
//---------------NC-Flags-------------------------- |
Dispatcher.Invoke((Action)(() => NC1_2.Background = ((data[14] & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_PH 0x02 |
Dispatcher.Invoke((Action)(() => NC1_3.Background = ((data[14] & 4) == 4) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => NC1_4.Background = ((data[14] & 8) == 8) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_RANGE_LIMIT 0x08 |
Dispatcher.Invoke((Action)(() => NC1_5.Background = ((data[14] & 16) == 16) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_NOSERIALLINK 0x10 |
Dispatcher.Invoke((Action)(() => NC1_6.Background = ((data[14] & 32) == 32) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_TARGET_REACHED 0x20 |
Dispatcher.Invoke((Action)(() => NC1_7.Background = ((data[14] & 64) == 64) ? new SolidColorBrush(Colors.DodgerBlue) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_MANUAL_CONTROL 0x40 |
Dispatcher.Invoke((Action)(() => NC1_8.Background = ((data[14] & 128) == 128) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_GPS_OK 0x80 |
|
//--------------- NC Error ------------------------ |
Dispatcher.Invoke((Action)(() => tbNCErr.Text = data[16].ToString())); //NC Errornumber |
if (data[16] > 0) |
_readNCError(); |
if (data[16] > 0 & data[16] < 44) |
ErrorLog(LogMsgType.Error, " NC Error [" + data[16].ToString() + "]: ", NC_Error_Link[data[16]], NC_Error[data[16]]); |
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.Text = ((data[14] & 4) == 4) ? "CH" : "PH"));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.Background = (((data[14] & 2) == 2) | ((data[14] & 4) == 4)) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.Foreground = (((data[14] & 2) == 2) | ((data[14] & 4) == 4)) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusPH.BorderBrush = (((data[14] & 2) == 2) | ((data[14] & 4) == 4)) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// NC_FLAG_PH 0x02 / NC_FLAG_CH 0x04 |
|
break; |
case 12: |
//--------------- RC quality ------------------------ |
Dispatcher.Invoke((Action)(() => tbRCQ.Text = data[23].ToString())); |
Dispatcher.Invoke((Action)(() => tbTopRC.Text = data[23].ToString())); |
//--------------- NC Error ------------------------ |
Dispatcher.Invoke((Action)(() => tbNCErr.Text = data[16].ToString())); //NC Errornumber |
if (data[16] > 0) |
_readNCError(); |
if (data[16] > 0 & data[16] < 44) |
ErrorLog(LogMsgType.Error, " NC Error [" + data[16].ToString() + "]: ", NC_Error_Link[data[16]], NC_Error[data[16]]); |
|
if (data[23] > _iThresholdRC) |
{ |
_iRCLevelJitter = 0; _bVoiceRCLevelActive = false; |
if (stbRCLevelAnim != null && _bAnimRCLevelActive) |
break; |
case 12: |
//--------------- RC quality ------------------------ |
Dispatcher.Invoke((Action)(() => tbRCQ.Text = data[23].ToString())); |
Dispatcher.Invoke((Action)(() => tbTopRC.Text = data[23].ToString())); |
|
if (data[23] > _iThresholdRC) |
{ |
Dispatcher.Invoke(() => stbRCLevelAnim.Stop()); |
_bAnimRCLevelActive = false; |
_iRCLevelJitter = 0; _bVoiceRCLevelActive = false; |
if (stbRCLevelAnim != null && _bAnimRCLevelActive) |
{ |
Dispatcher.Invoke(() => stbRCLevelAnim.Stop()); |
_bAnimRCLevelActive = false; |
} |
} |
} |
else |
{ |
if (_iRCLevelJitter < 20) _iRCLevelJitter++; |
if (_iRCLevelJitter == 20) |
else |
{ |
if (stbRCLevelAnim != null && !_bAnimRCLevelActive) |
if (_iRCLevelJitter < 20) _iRCLevelJitter++; |
if (_iRCLevelJitter == 20) |
{ |
Dispatcher.Invoke(() => stbRCLevelAnim.Begin()); |
_bAnimRCLevelActive = true; |
if (stbRCLevelAnim != null && !_bAnimRCLevelActive) |
{ |
Dispatcher.Invoke(() => stbRCLevelAnim.Begin()); |
_bAnimRCLevelActive = true; |
} |
if (_bVoiceRCLevelPlay && !_bVoiceRCLevelActive) |
{ |
_bVoiceRCLevelActive = true; |
ThreadPool.QueueUserWorkItem(new WaitCallback(_mediaPlayer), "Voice\\MagneticField.mp3"); |
//Thread th = new Thread(() => _mediaPlayer("Voice\\RCLevel.mp3")); |
//th.Start(); |
} |
_iRCLevelJitter++; |
} |
if (_bVoiceRCLevelPlay && !_bVoiceRCLevelActive) |
{ |
_bVoiceRCLevelActive = true; |
ThreadPool.QueueUserWorkItem(new WaitCallback(_mediaPlayer), "Voice\\MagneticField.mp3"); |
//Thread th = new Thread(() => _mediaPlayer("Voice\\RCLevel.mp3")); |
//th.Start(); |
} |
_iRCLevelJitter++; |
} |
} |
break; |
case 13: |
//-------------------------Waypoint max range (by license)------------------------------ |
i_32 = data[24]; |
iVal = i_32 << 8; |
iVal += data[23]; |
break; |
case 13: |
//-------------------------Waypoint max range (by license)------------------------------ |
i_32 = data[24]; |
iVal = i_32 << 8; |
iVal += data[23]; |
|
if (dWPMaxRange != iVal) |
{ |
dWPMaxRange = iVal; |
if (home != null && checkBoxShowWPMaxRange.IsChecked == true) |
if (dWPMaxRange != iVal) |
{ |
if (cWPBound != null && cWPBound.Tag != null) |
MainMap.Markers.Remove(cWPBound.Tag as GMapMarker); |
dWPMaxRange = iVal; |
if (home != null && checkBoxShowWPMaxRange.IsChecked == true) |
{ |
if (cWPBound != null && cWPBound.Tag != null) |
MainMap.Markers.Remove(cWPBound.Tag as GMapMarker); |
|
createCircle(home.Position, dWPMaxRange); |
Dispatcher.Invoke(() => |
{ |
if (comboBoxWPMaxRangeColor.SelectionBoxItem != null) |
createCircle(home.Position, dWPMaxRange); |
Dispatcher.Invoke(() => |
{ |
string s = comboBoxWPMaxRangeColor.SelectionBoxItem.ToString(); |
cWPBound.setColor(s); |
} |
}); |
if (comboBoxWPMaxRangeColor.SelectionBoxItem != null) |
{ |
string s = comboBoxWPMaxRangeColor.SelectionBoxItem.ToString(); |
cWPBound.setColor(s); |
} |
}); |
} |
Dispatcher.Invoke((Action)(() => tbWPMaxRange.Text = iVal.ToString() + " m")); |
} |
Dispatcher.Invoke((Action)(() => tbWPMaxRange.Text = iVal.ToString() + " m")); |
} |
|
OSDSTATUSFLAGS2 = osd.OSDSTATUSFLAGS2(); |
FCSTATUSFLAGS1 = (OSDSTATUSFLAGS1 & OSD_FLAG_MASK1) | (OSDSTATUSFLAGS2 & ~OSD_FLAG_MASK1); |
FCSTATUSFLAGS2 = (OSDSTATUSFLAGS1 & OSD_FLAG_MASK2) | (OSDSTATUSFLAGS2 & ~OSD_FLAG_MASK2); |
break; |
break; |
|
case 14: |
//--------------- Flying time ------------------------ |
i_16 = data[14]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[13] + i_16; |
TimeSpan t = TimeSpan.FromSeconds(iVal); |
string Text = t.Hours.ToString("D2") + ":" + t.Minutes.ToString("D2") + ":" + t.Seconds.ToString("D2"); |
Dispatcher.Invoke((Action)(() => tbFTime.Text = Text.ToString())); |
Dispatcher.Invoke((Action)(() => tbTopFTime.Text = Text.ToString())); |
case 14: |
//--------------- Flying time ------------------------ |
i_16 = data[14]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[13] + i_16; |
TimeSpan t = TimeSpan.FromSeconds(iVal); |
string Text = t.Hours.ToString("D2") + ":" + t.Minutes.ToString("D2") + ":" + t.Seconds.ToString("D2"); |
Dispatcher.Invoke((Action)(() => tbFTime.Text = Text.ToString())); |
Dispatcher.Invoke((Action)(() => tbTopFTime.Text = Text.ToString())); |
|
//--------------------------------Distance HP------------------------------------ |
i_16 = data[16]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[15] + i_16; |
Dispatcher.Invoke((Action)(() => tbHP.Text = ((double)iVal / (double)10).ToString("0.0 m"))); |
//--------------------------------Distance HP------------------------------------ |
i_16 = data[16]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[15] + i_16; |
Dispatcher.Invoke((Action)(() => tbHP.Text = ((double)iVal / (double)10).ToString("0.0 m"))); |
|
//--------------------------Distance to next WP-------------------------------- |
i_16 = data[19]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[18] + i_16; |
Dispatcher.Invoke((Action)(() => tbWP.Text = ((double)iVal / (double)10).ToString("0.0 m"))); |
Dispatcher.Invoke((Action)(() => lblWPRouteDistanceWP.Content = ((double)iVal / (double)10).ToString("0.0 m"))); |
Dispatcher.Invoke((Action)(() => tbWPStatusDistanceWP.Text = ((double)iVal / (double)10).ToString("0.0 m"))); |
//--------------------------Distance to next WP-------------------------------- |
i_16 = data[19]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[18] + i_16; |
Dispatcher.Invoke((Action)(() => tbWP.Text = ((double)iVal / (double)10).ToString("0.0 m"))); |
Dispatcher.Invoke((Action)(() => lblWPRouteDistanceWP.Content = ((double)iVal / (double)10).ToString("0.0 m"))); |
Dispatcher.Invoke((Action)(() => tbWPStatusDistanceWP.Text = ((double)iVal / (double)10).ToString("0.0 m"))); |
|
//-------------------Satellites---------------------------------- |
Dispatcher.Invoke((Action)(() => tbTopSats.Text = data[23].ToString())); |
//-------------------Satellites---------------------------------- |
Dispatcher.Invoke((Action)(() => tbTopSats.Text = data[23].ToString())); |
|
if (data[23] > 4)//if more than 4 sats in use . otherwise the map would jump and scroll insane at beginning |
{ |
_bSatFix = true; _iSatsJitter = 0; _bVoiceSatFixActive = false; |
if (_bAutoHome && !_bFirstSatFix) |
if (data[23] > 4)//if more than 4 sats in use . otherwise the map would jump and scroll insane at beginning |
{ |
if (_iFirstSatFix < 3) |
_iFirstSatFix++; |
else |
_bSatFix = true; _iSatsJitter = 0; _bVoiceSatFixActive = false; |
if (_bAutoHome && !_bFirstSatFix) |
{ |
_bFirstSatFix = true; |
Dispatcher.Invoke(() => _setHomePos()); |
if (_iFirstSatFix < 3) |
_iFirstSatFix++; |
else |
{ |
_bFirstSatFix = true; |
Dispatcher.Invoke(() => _setHomePos()); |
} |
} |
} |
if (stbSatFixLostAnim != null && _bAnimSatFixActive) |
{ |
Dispatcher.Invoke(() => stbSatFixLostAnim.Stop()); |
_bAnimSatFixActive = false; |
} |
if (!_bFollowCopter) |
{ |
_setCopterData(osd.Pos()); |
if (!MainMap.ViewArea.Contains(osd.Pos())) |
if (stbSatFixLostAnim != null && _bAnimSatFixActive) |
{ |
Dispatcher.Invoke(() => stbSatFixLostAnim.Stop()); |
_bAnimSatFixActive = false; |
} |
if (!_bFollowCopter) |
{ |
_setCopterData(osd.Pos()); |
if (!MainMap.ViewArea.Contains(osd.Pos())) |
Dispatcher.Invoke(() => MainMap.Position = osd.Pos()); |
|
} |
else |
Dispatcher.Invoke(() => MainMap.Position = osd.Pos()); |
|
} |
else |
Dispatcher.Invoke(() => MainMap.Position = osd.Pos()); |
} |
else |
{ |
if (_bSatFix) |
{ |
if (data[23] == _iSatsLast) |
if (_bSatFix) |
{ |
if (_iSatsJitter < 20) _iSatsJitter++; |
} |
else |
{ |
_iSatsJitter = 0; |
_iSatsLast = data[23]; |
} |
|
if (_iSatsJitter == 20) |
{ |
if (stbSatFixLostAnim != null && !_bAnimSatFixActive) |
if (data[23] == _iSatsLast) |
{ |
Dispatcher.Invoke(() => stbSatFixLostAnim.Begin()); |
_bAnimSatFixActive = true; |
if (_iSatsJitter < 20) _iSatsJitter++; |
} |
if (_bVoiceSatFixPlay && !_bVoiceSatFixActive) |
else |
{ |
_bVoiceSatFixActive = true; |
ThreadPool.QueueUserWorkItem(new WaitCallback(_mediaPlayer), "Voice\\SatFixLost.mp3"); |
//Thread th = new Thread(() => _mediaPlayer("Voice\\SatFixLost.mp3")); |
//th.Start(); |
_iSatsJitter = 0; |
_iSatsLast = data[23]; |
} |
|
_bSatFix = false; |
if (_iSatsJitter == 20) |
{ |
if (stbSatFixLostAnim != null && !_bAnimSatFixActive) |
{ |
Dispatcher.Invoke(() => stbSatFixLostAnim.Begin()); |
_bAnimSatFixActive = true; |
} |
if (_bVoiceSatFixPlay && !_bVoiceSatFixActive) |
{ |
_bVoiceSatFixActive = true; |
ThreadPool.QueueUserWorkItem(new WaitCallback(_mediaPlayer), "Voice\\SatFixLost.mp3"); |
//Thread th = new Thread(() => _mediaPlayer("Voice\\SatFixLost.mp3")); |
//th.Start(); |
} |
|
_bSatFix = false; |
} |
} |
} |
} |
|
break; |
break; |
|
case 15: |
//--------------------------------Waypoint index------------------------------------ |
Dispatcher.Invoke((Action)(() => tbWPIndex.Text = data[13].ToString())); |
Dispatcher.Invoke((Action)(() => lblWPIndexNC.Content = data[13].ToString())); |
Dispatcher.Invoke((Action)(() => lblWPStatusIndexNC.Content = data[13].ToString())); |
if (data[13] > 0 && _wpIndex != data[13]-1 && wpList.Count >= data[13]-1) |
{ |
_setActiveWP(data[13]-1); |
if ((FCSTATUSFLAGS1 & 2) == 2) |
Dispatcher.Invoke(() => { |
DataGridRow row; |
if (_wpIndex > -1) |
case 15: |
//--------------------------------Waypoint index------------------------------------ |
Dispatcher.Invoke((Action)(() => tbWPIndex.Text = data[13].ToString())); |
Dispatcher.Invoke((Action)(() => lblWPIndexNC.Content = data[13].ToString())); |
Dispatcher.Invoke((Action)(() => lblWPStatusIndexNC.Content = data[13].ToString())); |
if (data[13] > 0 && _wpIndex != data[13] - 1 && wpList.Count > data[13] - 1) |
{ |
_setActiveWP(data[13] - 1); |
if ((OSDSTATUSFLAGS2 & 2) == 2) |
Dispatcher.Invoke(() => |
{ |
DataGridRow row; |
if (_wpIndex > -1) |
{ |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(wpOffset[_wpIndex]); |
row.Background = new SolidColorBrush(Colors.Transparent); |
row.BorderBrush = new SolidColorBrush(Colors.Transparent); |
row.BorderThickness = new Thickness(0); |
} |
|
_wpIndex = data[13] - 1; |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(wpOffset[_wpIndex]); |
row.Background = new SolidColorBrush(Colors.Transparent); |
row.BorderBrush = new SolidColorBrush(Colors.Transparent); |
row.BorderThickness = new Thickness(0); |
} |
|
_wpIndex = data[13]-1; |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(wpOffset[_wpIndex]); |
row.Background = new SolidColorBrush(Color.FromArgb(80, 0, 255, 100)); |
row.BorderBrush = new SolidColorBrush(Colors.SpringGreen); |
row.BorderThickness = new Thickness(2); |
dgvWP.UpdateLayout(); |
}); |
_wpIndex = data[13]-1; |
} |
else |
{ |
if ((data[13] == 0 || wpList.Count == 0) & MainMap.Markers.Contains(wpActiveMarker)) |
row.Background = new SolidColorBrush(Color.FromArgb(80, 0, 255, 100)); |
row.BorderBrush = new SolidColorBrush(Colors.SpringGreen); |
row.BorderThickness = new Thickness(2); |
dgvWP.UpdateLayout(); |
}); |
_wpIndex = data[13] - 1; |
} |
else |
{ |
Dispatcher.Invoke(() => MainMap.Markers.Remove(wpActiveMarker)); |
Dispatcher.Invoke(() => |
if ((data[13] == 0 || wpList.Count == 0) & MainMap.Markers.Contains(wpActiveMarker)) |
{ |
DataGridRow row; |
if (_wpIndex > -1 && data[13] == 0 && wpList.Count > _wpIndex) |
Dispatcher.Invoke(() => MainMap.Markers.Remove(wpActiveMarker)); |
Dispatcher.Invoke(() => |
{ |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(wpOffset[_wpIndex]); |
row.Background = new SolidColorBrush(Colors.Transparent); |
row.BorderBrush = new SolidColorBrush(Colors.Transparent); |
row.BorderThickness = new Thickness(0); |
_wpIndex = -1; |
} |
}); |
DataGridRow row; |
if (_wpIndex > -1 && data[13] == 0 && wpList.Count > _wpIndex) |
{ |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(wpOffset[_wpIndex]); |
row.Background = new SolidColorBrush(Colors.Transparent); |
row.BorderBrush = new SolidColorBrush(Colors.Transparent); |
row.BorderThickness = new Thickness(0); |
_wpIndex = -1; |
} |
}); |
|
} |
} |
} |
//----------------Waypoints count---------------------- |
Dispatcher.Invoke((Action)(() => tbWPCount.Text = data[14].ToString())); //Waypoints count |
Dispatcher.Invoke((Action)(() => lblWPCountNC.Content = data[14].ToString())); //Waypoints count |
Dispatcher.Invoke((Action)(() => lblWPStatusCountNC.Content = data[14].ToString())); //Waypoints count |
_wpCount = data[14]; |
//----------------Waypoints count---------------------- |
Dispatcher.Invoke((Action)(() => tbWPCount.Text = data[14].ToString())); //Waypoints count |
Dispatcher.Invoke((Action)(() => lblWPCountNC.Content = data[14].ToString())); //Waypoints count |
Dispatcher.Invoke((Action)(() => lblWPStatusCountNC.Content = data[14].ToString())); //Waypoints count |
_wpCount = data[14]; |
if(_wpCount > dtWaypoints.Rows.Count) |
{ |
Log(LogMsgType.Warning, "The copter reports more waypoints than there are in the local list!"); |
} |
|
//---------------------------------Target hold time------------------------------ |
Dispatcher.Invoke((Action)(() => lblWPHoldTime.Content = data[15].ToString() + " s")); |
Dispatcher.Invoke((Action)(() => tbWPStatusHoldTime.Text = data[15].ToString() + " s")); |
//---------------------------------Target hold time------------------------------ |
Dispatcher.Invoke((Action)(() => lblWPHoldTime.Content = data[15].ToString() + " s")); |
Dispatcher.Invoke((Action)(() => tbWPStatusHoldTime.Text = data[15].ToString() + " s")); |
|
break; |
break; |
|
case 16: |
//--------------- Capacity used ------------------------ |
i_16 = data[18]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[17] + i_16; |
Dispatcher.Invoke((Action)(() => tbCapacity.Text = iVal.ToString() + " mAh")); |
Dispatcher.Invoke((Action)(() => tbTopCapacity.Text = iVal.ToString() + " mAh")); |
case 16: |
//--------------- Capacity used ------------------------ |
i_16 = data[18]; |
i_16 = (Int16)(i_16 << 8); |
iVal = data[17] + i_16; |
Dispatcher.Invoke((Action)(() => tbCapacity.Text = iVal.ToString() + " mAh")); |
Dispatcher.Invoke((Action)(() => tbTopCapacity.Text = iVal.ToString() + " mAh")); |
|
//--------------- Heading compass ------------------------ |
i_16 = data[21]; |
iVal = 2 * i_16; |
Dispatcher.Invoke((Action)(() => tbHeadingCompass.Text = iVal.ToString() + " °")); |
if (_Simulate) |
{ |
Dispatcher.Invoke(() => ArtHor.rotate = iVal); |
Dispatcher.Invoke(() => ((CustomMarkerCopter)(copter.Shape)).rotate = iVal); |
} |
//--------------- Heading compass ------------------------ |
i_16 = data[21]; |
iVal = 2 * i_16; |
Dispatcher.Invoke((Action)(() => tbHeadingCompass.Text = iVal.ToString() + " °")); |
if (_Simulate) |
{ |
Dispatcher.Invoke(() => ArtHor.rotate = iVal); |
Dispatcher.Invoke(() => ((CustomMarkerCopter)(copter.Shape)).rotate = iVal); |
} |
|
break; |
case 17: |
break; |
case 17: |
|
break; |
case 18: |
break; |
case 18: |
|
break; |
default: |
break; |
} |
//-------------------------------------------------------------------------------- |
//-----------------------------FC Status Flags------------------------------- |
//-------------------------------------------------------------------------------- |
Dispatcher.Invoke((Action)(() => FC1_1.Background = ((FCSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_MOTOR_RUN 0x01 |
Dispatcher.Invoke((Action)(() => FC1_2.Background = ((FCSTATUSFLAGS1 & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_FLY 0x02 |
Dispatcher.Invoke((Action)(() => FC1_3.Background = ((FCSTATUSFLAGS1 & 4) == 4) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_CALIBRATE 0x04 |
Dispatcher.Invoke((Action)(() => FC1_4.Background = ((FCSTATUSFLAGS1 & 8) == 8) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_START 0x08 |
Dispatcher.Invoke((Action)(() => FC1_5.Background = ((FCSTATUSFLAGS1 & 16) == 16) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_EMERGENCY_LANDING 0x10 |
Dispatcher.Invoke((Action)(() => FC1_6.Background = ((FCSTATUSFLAGS1 & 32) == 32) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_LOWBAT 0x20 |
break; |
default: |
break; |
} |
//-------------------------------------------------------------------------------- |
//-----------------------------FC Status Flags------------------------------- |
//-------------------------------------------------------------------------------- |
Dispatcher.Invoke((Action)(() => FC1_1.Background = ((OSDSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_MOTOR_RUN 0x01 |
Dispatcher.Invoke((Action)(() => FC1_2.Background = ((OSDSTATUSFLAGS2 & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_FLY 0x02 |
Dispatcher.Invoke((Action)(() => FC1_3.Background = ((OSDSTATUSFLAGS1 & 4) == 4) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_CALIBRATE 0x04 |
Dispatcher.Invoke((Action)(() => FC1_4.Background = ((OSDSTATUSFLAGS2 & 8) == 8) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_START 0x08 |
Dispatcher.Invoke((Action)(() => FC1_5.Background = ((OSDSTATUSFLAGS2 & 16) == 16) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_EMERGENCY_LANDING 0x10 |
Dispatcher.Invoke((Action)(() => FC1_6.Background = ((OSDSTATUSFLAGS1 & 32) == 32) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_LOWBAT 0x20 |
|
Dispatcher.Invoke((Action)(() => FC2_1.Background = ((FCSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_CAREFREE 0x01 |
Dispatcher.Invoke((Action)(() => FC2_2.Background = ((FCSTATUSFLAGS2 & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
Dispatcher.Invoke((Action)(() => FC2_3.Background = ((FCSTATUSFLAGS2 & 4) == 4) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_RC_FAILSAVE_ACTIVE 0x04 |
Dispatcher.Invoke((Action)(() => FC2_4.Background = ((FCSTATUSFLAGS2 & 8) == 8) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_OUT1_ACTIVE 0x08 |
Dispatcher.Invoke((Action)(() => FC2_5.Background = ((FCSTATUSFLAGS2 & 16) == 16) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_OUT2_ACTIVE 0x10 |
Dispatcher.Invoke((Action)(() => FC2_6.Background = ((FCSTATUSFLAGS2 & 32) == 32) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_WAIT_FOR_TAKEOFF 0x20 // Motor Running, but still on the ground |
Dispatcher.Invoke((Action)(() => FC2_7.Background = ((FCSTATUSFLAGS2 & 64) == 64) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_AUTO_STARTING 0x40 |
Dispatcher.Invoke((Action)(() => FC2_8.Background = ((FCSTATUSFLAGS2 & 128) == 128) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_AUTO_LANDING 0x80 |
Dispatcher.Invoke((Action)(() => FC2_1.Background = ((OSDSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_CAREFREE 0x01 |
Dispatcher.Invoke((Action)(() => FC2_2.Background = ((OSDSTATUSFLAGS1 & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
Dispatcher.Invoke((Action)(() => FC2_3.Background = ((OSDSTATUSFLAGS2 & 4) == 4) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_RC_FAILSAVE_ACTIVE 0x04 |
Dispatcher.Invoke((Action)(() => FC2_4.Background = ((OSDSTATUSFLAGS1 & 8) == 8) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_OUT1_ACTIVE 0x08 |
Dispatcher.Invoke((Action)(() => FC2_5.Background = ((OSDSTATUSFLAGS1 & 16) == 16) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_OUT2_ACTIVE 0x10 |
Dispatcher.Invoke((Action)(() => FC2_6.Background = ((OSDSTATUSFLAGS2 & 32) == 32) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_WAIT_FOR_TAKEOFF 0x20 // Motor Running, but still on the ground |
Dispatcher.Invoke((Action)(() => FC2_7.Background = ((OSDSTATUSFLAGS2 & 64) == 64) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_AUTO_STARTING 0x40 |
Dispatcher.Invoke((Action)(() => FC2_8.Background = ((OSDSTATUSFLAGS2 & 128) == 128) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_AUTO_LANDING 0x80 |
|
//Sidebar StatusSymbols |
Dispatcher.Invoke((Action)(() => tbSideBarStatusMotors.Background = ((FCSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_MOTOR_RUN 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusMotors.Foreground = ((FCSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_MOTOR_RUN 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusMotors.BorderBrush = ((FCSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_MOTOR_RUN 0x01 |
//Sidebar StatusSymbols |
Dispatcher.Invoke((Action)(() => tbSideBarStatusMotors.Background = ((OSDSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_MOTOR_RUN 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusMotors.Foreground = ((OSDSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_MOTOR_RUN 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusMotors.BorderBrush = ((OSDSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_MOTOR_RUN 0x01 |
|
Dispatcher.Invoke((Action)(() => tbSideBarStatusCF.Background = ((FCSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_CAREFREE 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusCF.Foreground = ((FCSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_CAREFREE 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusCF.BorderBrush = ((FCSTATUSFLAGS2 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_CAREFREE 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusCF.Background = ((OSDSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_CAREFREE 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusCF.Foreground = ((OSDSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_CAREFREE 0x01 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusCF.BorderBrush = ((OSDSTATUSFLAGS1 & 1) == 1) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_CAREFREE 0x01 |
|
Dispatcher.Invoke((Action)(() => tbSideBarStatusEmergencyLanding.Background = ((FCSTATUSFLAGS1 & 16) == 16) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_EMERGENCY_LANDING 0x10 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusEmergencyLanding.Foreground = ((FCSTATUSFLAGS1 & 16) == 16) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_EMERGENCY_LANDING 0x10 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusEmergencyLanding.BorderBrush = ((FCSTATUSFLAGS1 & 16) == 16) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_EMERGENCY_LANDING 0x10 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusEmergencyLanding.Background = ((OSDSTATUSFLAGS2 & 16) == 16) ? new SolidColorBrush(Colors.LightCoral) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS_EMERGENCY_LANDING 0x10 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusEmergencyLanding.Foreground = ((OSDSTATUSFLAGS2 & 16) == 16) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_EMERGENCY_LANDING 0x10 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusEmergencyLanding.BorderBrush = ((OSDSTATUSFLAGS2 & 16) == 16) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS_EMERGENCY_LANDING 0x10 |
|
Dispatcher.Invoke((Action)(() => tbSideBarStatusAC.Background = ((FCSTATUSFLAGS2 & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusAC.Foreground = ((FCSTATUSFLAGS2 & 2) == 2) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusAC.BorderBrush = ((FCSTATUSFLAGS2 & 2) == 2) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusAC.Background = ((OSDSTATUSFLAGS1 & 2) == 2) ? new SolidColorBrush(Colors.LightSeaGreen) : new SolidColorBrush(Colors.Transparent)));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusAC.Foreground = ((OSDSTATUSFLAGS1 & 2) == 2) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
Dispatcher.Invoke((Action)(() => tbSideBarStatusAC.BorderBrush = ((OSDSTATUSFLAGS1 & 2) == 2) ? new SolidColorBrush(Colors.White) : new SolidColorBrush(Color.FromArgb(255, 211, 210, 210))));// FC_STATUS2_ALTITUDE_CONTROL 0x02 |
|
_bAirborne = (FCSTATUSFLAGS1 & 2) == 2 ? true : false; |
|
|
_bAirborne = (OSDSTATUSFLAGS2 & 2) == 2 ? true : false; |
} |
} |
public class OSD_Base_Data_t |
{ |
2207,16 → 2208,22 |
|
public double Speed() |
{ |
return (double)data[11]/10; |
if (data.Length > 11) |
return (double)data[11]/10; |
else return 0; |
} |
|
public byte OSDSTATUSFLAGS1() |
{ |
return data[12]; |
if (data.Length > 12) |
return data[12]; |
else return 0; |
} |
public byte OSDSTATUSFLAGS2() |
{ |
return data[13]; |
if (data.Length > 13) |
return data[13]; |
else return 0; |
} |
} |
void _processNCData(byte[] data) |
2785,8 → 2792,8 |
private void _readNavData(bool auto) |
{ |
byte interval = auto ? navctrlInterval : (byte)0; |
// _sendControllerMessage('o', 2, new byte[1] { interval }); |
_sendControllerMessage('o', 2, new byte[3] { interval,4,0 }); |
// _sendControllerMessage('o', 2, new byte[1] { interval }); |
_sendControllerMessage('o', 2, new byte[3] { interval,4,0 }); |
} |
/// <summary> |
/// request the license info |
4490,8 → 4497,8 |
else |
_sendWayPoint(dr, 1, 'w', false); |
|
if(_wpIndex > -1 && _wpIndex < dtWaypoints.Rows.Count) |
_sendWayPoint(dtWaypoints.Rows[_wpIndex], _wpIndex + 1, 's', false); |
if (_wpIndex > -1 && _wpIndex < dtWaypoints.Rows.Count) |
_sendWayPoint(dtWaypoints.Rows[wpOffset[_wpIndex]], _wpIndex+1, 's', false); |
} |
} |
private void btnWPSimulateStart_Click(object sender, RoutedEventArgs e) |