Rev 2312 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2312 | Rev 2313 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | using System.Windows.Media.Animation; |
24 | using System.Windows.Media.Animation; |
25 | using System.Windows.Media.Imaging; |
25 | using System.Windows.Media.Imaging; |
26 | using System.Windows.Navigation; |
26 | using System.Windows.Navigation; |
27 | using System.Windows.Shapes; |
27 | using System.Windows.Shapes; |
28 | using System.Windows.Threading; |
28 | using System.Windows.Threading; |
- | 29 | using System.Globalization; |
|
Line 29... | Line 30... | ||
29 | 30 | ||
30 | namespace MKLiveView |
31 | namespace MKLiveView |
31 | { |
32 | { |
32 | /// <summary> |
33 | /// <summary> |
Line 260... | Line 261... | ||
260 | /// datatable for motordata (current,temp) |
261 | /// datatable for motordata (current,temp) |
261 | /// </summary> |
262 | /// </summary> |
262 | DataTable dtMotors1 = new DataTable(); |
263 | DataTable dtMotors1 = new DataTable(); |
Line 263... | Line 264... | ||
263 | 264 | ||
- | 265 | DataTable dtWaypoints = new DataTable(); |
|
264 | DataTable dtWaypoints = new DataTable(); |
266 | static volatile int _iWPCount = -1; |
- | 267 | static volatile int _iWPIndex = -1; |
|
265 | static volatile int _iWP = -1; |
268 | int _iWPTimeout = 1000; |
266 | bool _bGetWP = false; |
269 | bool _bGetWP = false; |
Line 267... | Line 270... | ||
267 | static volatile bool _bGetWPCount = false; |
270 | static volatile bool _bGetWPCount = false; |
Line 345... | Line 348... | ||
345 | /// initialize the datatables |
348 | /// initialize the datatables |
346 | /// with columnnames etc |
349 | /// with columnnames etc |
347 | /// </summary> |
350 | /// </summary> |
348 | void _dataTablesInit() |
351 | void _dataTablesInit() |
349 | { |
352 | { |
350 | //dtAnalog.Columns.Add("ID"); |
- | |
351 | //dtAnalog.Columns.Add("Value"); |
- | |
352 | // dataGridView1.DataSource = dtAnalog; |
- | |
353 | - | ||
354 | dtMotors1.Columns.Add("#"); |
353 | dtMotors1.Columns.Add("#"); |
355 | if (Thread.CurrentThread.CurrentUICulture.Name == "") |
354 | if (Thread.CurrentThread.CurrentUICulture.Name == "de-DE") |
356 | dtMotors1.Columns.Add("Current"); |
- | |
357 | else |
- | |
358 | dtMotors1.Columns.Add("Strom"); |
355 | dtMotors1.Columns.Add("Strom"); |
- | 356 | else |
|
- | 357 | dtMotors1.Columns.Add("Current"); |
|
359 | dtMotors1.Columns.Add("Temp"); |
358 | dtMotors1.Columns.Add("Temp"); |
360 | //dtMotors2.Columns.Add("#"); |
- | |
361 | //if (Thread.CurrentThread.CurrentUICulture.Name == "") |
- | |
362 | // dtMotors2.Columns.Add("Current"); |
- | |
363 | //else |
- | |
364 | // dtMotors2.Columns.Add("Strom"); |
- | |
365 | //dtMotors2.Columns.Add("Temp"); |
- | |
366 | dgvMotors1.DataContext = dtMotors1.DefaultView; |
359 | dgvMotors1.DataContext = dtMotors1.DefaultView; |
367 | //dgvMotors2.DataContext = dtMotors2.DefaultView; |
- | |
368 | _initDTMotors(); |
360 | _initDTMotors(); |
369 | //dgvMotors1.Columns[0].Width = 24; |
- | |
370 | //dgvMotors1.Columns[1].Width = 74; |
- | |
371 | //dgvMotors1.Columns[2].Width = 74; |
- | |
372 | //dgvMotors2.Columns[0].Width = 24; |
- | |
373 | //dgvMotors2.Columns[1].Width = 74; |
- | |
374 | //dgvMotors2.Columns[2].Width = 74; |
- | |
375 | 361 | ||
376 | dtWaypoints.Columns.Add("Index"); |
- | |
377 | dtWaypoints.Columns.Add("Type"); |
- | |
378 | dtWaypoints.Columns.Add("Name"); |
- | |
379 | dtWaypoints.Columns.Add("Latitude"); |
- | |
380 | dtWaypoints.Columns.Add("Longitude"); |
- | |
381 | dtWaypoints.Columns.Add("Altitude"); |
- | |
382 | dtWaypoints.Columns.Add("Heading"); |
- | |
383 | dtWaypoints.Columns.Add("Speed"); |
- | |
384 | dtWaypoints.Columns.Add("Altitude rate"); |
- | |
385 | dtWaypoints.Columns.Add("Tol radius"); |
- | |
386 | dtWaypoints.Columns.Add("Hold time"); |
- | |
387 | dtWaypoints.Columns.Add("AutoTrigger"); |
- | |
388 | dtWaypoints.Columns.Add("Cam angle"); |
- | |
389 | dtWaypoints.Columns.Add("Event"); |
- | |
390 | dtWaypoints.Columns.Add("Eventchan Val"); |
- | |
391 | dtWaypoints.Columns.Add("Status"); |
- | |
392 | dtWaypoints.PrimaryKey = new DataColumn[] { dtWaypoints.Columns["Index"] }; |
- | |
393 | dgvWP.DataContext = dtWaypoints.DefaultView; |
- | |
394 | Setter setter = new Setter(ContentControl.PaddingProperty, new Thickness(5,0,5,0)); |
362 | Setter setter = new Setter(ContentControl.PaddingProperty, new Thickness(5,0,5,0)); |
395 | Style style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader)); |
363 | Style style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader)); |
396 | style.Setters.Add(setter); |
364 | style.Setters.Add(setter); |
397 | setter = new Setter(ContentControl.BackgroundProperty, new SolidColorBrush(Colors.Transparent)); |
365 | setter = new Setter(ContentControl.BackgroundProperty, new SolidColorBrush(Colors.Transparent)); |
398 | style.Setters.Add(setter); |
366 | style.Setters.Add(setter); |
399 | setter = new Setter(ContentControl.ForegroundProperty, new SolidColorBrush(Colors.White)); |
367 | setter = new Setter(ContentControl.ForegroundProperty, new SolidColorBrush(Colors.White)); |
400 | style.Setters.Add(setter); |
368 | style.Setters.Add(setter); |
- | 369 | ||
- | 370 | dtWaypoints.Columns.Add("Index",typeof(int)); |
|
- | 371 | dtWaypoints.Columns.Add("Type",typeof(string)); |
|
- | 372 | dtWaypoints.Columns.Add("Name",typeof(string)); |
|
- | 373 | dtWaypoints.Columns.Add("Latitude",typeof(string)); |
|
- | 374 | dtWaypoints.Columns.Add("Longitude",typeof(string)); |
|
- | 375 | dtWaypoints.Columns.Add("Altitude",typeof(string)); |
|
- | 376 | dtWaypoints.Columns.Add("Heading",typeof(string)); |
|
- | 377 | dtWaypoints.Columns.Add("Speed",typeof(string)); |
|
- | 378 | dtWaypoints.Columns.Add("ClimbRate",typeof(string)); |
|
- | 379 | dtWaypoints.Columns.Add("Radius",typeof(string)); |
|
- | 380 | dtWaypoints.Columns.Add("HoldTime",typeof(string)); |
|
- | 381 | dtWaypoints.Columns.Add("AutoTrigger",typeof(string)); |
|
- | 382 | dtWaypoints.Columns.Add("CamAngle",typeof(string)); |
|
- | 383 | dtWaypoints.Columns.Add("Event",typeof(string)); |
|
- | 384 | dtWaypoints.Columns.Add("Out1Timer",typeof(string)); |
|
- | 385 | dtWaypoints.Columns.Add("Status",typeof(string)); |
|
- | 386 | dtWaypoints.PrimaryKey = new DataColumn[] { dtWaypoints.Columns["Index"] }; |
|
- | 387 | dgvWP.ItemsSource = dtWaypoints.DefaultView; |
|
401 | dgvWP.ColumnHeaderStyle = new Style(); |
388 | dgvWP.ColumnHeaderStyle = new Style(); |
402 | dgvWP.ColumnHeaderStyle = style; |
389 | dgvWP.ColumnHeaderStyle = style; |
- | 390 | ||
- | 391 | ||
403 | } |
392 | } |
404 | /// <summary> |
393 | /// <summary> |
405 | /// initialize the 2 datatables for motor values |
394 | /// initialize the datatable dtMotors1 for motor values |
406 | /// dtMotors1 - motor 1 - 4 |
- | |
407 | /// dtMotors2 - motor 5 - 8 |
- | |
408 | /// DataGridView dgvMotors1/2 are bound to dtMotors1/2 |
395 | /// DataGridView dgvMotors1 is bound to dtMotors1 |
409 | /// </summary> |
396 | /// </summary> |
410 | void _initDTMotors() |
397 | void _initDTMotors() |
411 | { |
398 | { |
412 | for (int i = 0; i < 12; i++) |
399 | for (int i = 0; i < 12; i++) |
413 | { |
400 | { |
Line 416... | Line 403... | ||
416 | else |
403 | else |
417 | { |
404 | { |
418 | dtMotors1.Rows[i].SetField(1, "NA"); |
405 | dtMotors1.Rows[i].SetField(1, "NA"); |
419 | dtMotors1.Rows[i].SetField(2, "NA"); |
406 | dtMotors1.Rows[i].SetField(2, "NA"); |
420 | } |
407 | } |
421 | //if (dtMotors2.Rows.Count < 4) |
- | |
422 | // dtMotors2.Rows.Add((i + 5).ToString(), "NA", "NA"); |
- | |
423 | //else |
- | |
424 | //{ |
- | |
425 | // dtMotors2.Rows[i].SetField(1, "NA"); |
- | |
426 | // dtMotors2.Rows[i].SetField(2, "NA"); |
- | |
427 | //} |
- | |
428 | } |
408 | } |
429 | // Dispatcher.Invoke((Action)(() => dgvMotors1.UpdateLayout())); |
- | |
430 | //dgvMotors2.Invoke((Action)(() => dgvMotors2.Refresh())); |
- | |
431 | } |
409 | } |
Line 432... | Line 410... | ||
432 | 410 | ||
Line 433... | Line 411... | ||
433 | #endregion init |
411 | #endregion init |
Line 521... | Line 499... | ||
521 | Thread t = new Thread(new ThreadStart(_getWP)); |
499 | Thread t = new Thread(new ThreadStart(_getWP)); |
522 | t.Start(); |
500 | t.Start(); |
523 | } |
501 | } |
524 | private void btnSendWPList_Click(object sender, RoutedEventArgs e) |
502 | private void btnSendWPList_Click(object sender, RoutedEventArgs e) |
525 | { |
503 | { |
526 | - | ||
- | 504 | Thread t = new Thread(new ThreadStart(_sendWPList)); |
|
- | 505 | t.Start(); |
|
527 | } |
506 | } |
Line 528... | Line 507... | ||
528 | 507 | ||
529 | private void btnConnectToCopter_Click(object sender, RoutedEventArgs e) |
508 | private void btnConnectToCopter_Click(object sender, RoutedEventArgs e) |
530 | { |
509 | { |
Line 1239... | Line 1218... | ||
1239 | 1218 | ||
1240 | case 'X': //Waypoint data |
1219 | case 'X': //Waypoint data |
1241 | _processWPData(data); |
1220 | _processWPData(data); |
Line -... | Line 1221... | ||
- | 1221 | break; |
|
- | 1222 | ||
- | 1223 | case 'W': //return new Waypoint items count after sending waypoint to copter |
|
1242 | break; |
1224 | _iWPCount = data[0]; |
1243 | 1225 | break; |
|
1244 | //default: |
1226 | //default: |
1245 | // Log(LogMsgType.Incoming, "cmd: " + cmdID.ToString()); |
1227 | // Log(LogMsgType.Incoming, "cmd: " + cmdID.ToString()); |
1246 | // Log(LogMsgType.Incoming, BitConverter.ToString(data)); |
1228 | // Log(LogMsgType.Incoming, BitConverter.ToString(data)); |
Line 1776... | Line 1758... | ||
1776 | /// called by index |
1758 | /// called by index |
1777 | /// </summary> |
1759 | /// </summary> |
1778 | /// <param name="data">the received byte array to process</param> |
1760 | /// <param name="data">the received byte array to process</param> |
1779 | void _processWPData(byte[] data) |
1761 | void _processWPData(byte[] data) |
1780 | { |
1762 | { |
1781 | _iWP = data[0]; |
1763 | _iWPCount = data[0]; |
1782 | _bGetWPCount = false; |
1764 | _bGetWPCount = false; |
1783 | if (data.Length >= 28) |
1765 | if (data.Length >= 28) |
1784 | { |
1766 | { |
1785 | //int count = data[0]; |
- | |
1786 | //int index = data[1]; |
- | |
1787 | //cbWPIndex.Invoke((Action)(() => cbWPIndex.Items.Clear())); |
- | |
1788 | //for (int i = 0; i < count; i++) |
- | |
1789 | // cbWPIndex.Invoke((Action)(() => cbWPIndex.Items.Add(i + 1))); |
- | |
1790 | //cbWPIndex.Invoke((Action)(() => cbWPIndex.SelectedItem = index)); |
- | |
1791 | Dispatcher.Invoke(() => lblWPIndex.Content = data[1].ToString()); |
1767 | Dispatcher.Invoke(() => lblWPIndex.Content = data[1].ToString()); |
1792 | Dispatcher.Invoke(() => lblWPCount.Content = data[0].ToString()); |
1768 | Dispatcher.Invoke(() => lblWPCount.Content = data[0].ToString()); |
1793 | if (_bGetWP) |
1769 | if (_bGetWP) |
1794 | { |
1770 | { |
1795 | if (data[1] == 1) |
1771 | if (data[1] == 1) |
1796 | dtWaypoints.Rows.Clear(); |
1772 | dtWaypoints.Rows.Clear(); |
1797 | DataRow dr = dtWaypoints.NewRow(); |
1773 | DataRow dr = dtWaypoints.NewRow(); |
1798 | dr = Waypoints.toDataRow(data, dr); |
1774 | dr = Waypoints.toDataRow(data, dr); |
1799 | //if (dtWaypoints.Rows.Contains(data[1])) |
1775 | dtWaypoints.Rows.Add(dr); |
1800 | //{ |
- | |
1801 | // dtWaypoints.Rows.Find(data[1]).Delete(); |
1776 | Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
1802 | // dtWaypoints.Rows.InsertAt(dr, data[1] - 1); |
1777 | Dispatcher.Invoke(() => _iWPIndex = data[1]); |
1803 | //} |
- | |
1804 | //else |
- | |
1805 | dtWaypoints.Rows.Add(dr); |
- | |
1806 | - | ||
1807 | if (data[1] == data[0]) |
1778 | if (data[1] == data[0]) |
1808 | { |
1779 | { |
1809 | _bGetWP = false; |
1780 | _bGetWP = false; |
1810 | Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
1781 | Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
1811 | } |
1782 | } |
Line 1814... | Line 1785... | ||
1814 | } |
1785 | } |
1815 | else |
1786 | else |
1816 | { |
1787 | { |
1817 | Dispatcher.Invoke(() => lblWPIndex.Content = 0); |
1788 | Dispatcher.Invoke(() => lblWPIndex.Content = 0); |
1818 | Dispatcher.Invoke(() => lblWPCount.Content = 0); |
1789 | Dispatcher.Invoke(() => lblWPCount.Content = 0); |
1819 | // Debug.Print(new string(ASCIIEncoding.ASCII.GetChars(data, 0, data.Length))); |
- | |
1820 | } |
1790 | } |
1821 | } |
1791 | } |
1822 | /// <summary> |
1792 | /// <summary> |
1823 | /// OSD Menue 'L' |
1793 | /// OSD Menue 'L' |
1824 | /// single page called by pagenumber |
1794 | /// single page called by pagenumber |
Line 2045... | Line 2015... | ||
2045 | // { |
2015 | // { |
2046 | _bGetWPCount = true; |
2016 | _bGetWPCount = true; |
2047 | _getpWP(1); |
2017 | _getpWP(1); |
2048 | while (_bGetWPCount) |
2018 | while (_bGetWPCount) |
2049 | Thread.Sleep(100); |
2019 | Thread.Sleep(100); |
2050 | if (_iWP > 0) |
2020 | if (_iWPCount > 0) |
2051 | _getWPList(); |
2021 | _getWPList(); |
2052 | // } |
2022 | // } |
2053 | //} |
2023 | //} |
2054 | } |
2024 | } |
2055 | void _getWPList() |
2025 | void _getWPList() |
2056 | { |
2026 | { |
2057 | _bGetWP = true; |
2027 | _bGetWP = true; |
- | 2028 | int iTimeout=0; |
|
2058 | for (int j = 0; j < _iWP; j++) |
2029 | for (int j = 0; j < _iWPCount; j++) |
2059 | { |
2030 | { |
2060 | _getpWP(j + 1); |
2031 | _getpWP(j + 1); |
- | 2032 | iTimeout = 0; |
|
- | 2033 | while (_iWPIndex != j + 1 & iTimeout < _iWPTimeout * 5) |
|
- | 2034 | { |
|
2061 | Thread.Sleep(10); |
2035 | Thread.Sleep(1); |
- | 2036 | iTimeout++; |
|
- | 2037 | } |
|
2062 | } |
2038 | } |
2063 | } |
2039 | } |
- | 2040 | void _sendWPList() |
|
- | 2041 | { |
|
- | 2042 | if (serialPortCtrl.Port.IsOpen) |
|
- | 2043 | { |
|
- | 2044 | byte[] bData = new byte[30]; |
|
- | 2045 | for (int i = 0; i < 30; i++) |
|
- | 2046 | bData[i] = 0; |
|
- | 2047 | Stream serialStream = serialPortCtrl.Port.BaseStream; |
|
- | 2048 | byte[] bytes = FlightControllerMessage.CreateMessage('w', 2, bData); //delete all WP on Copter by sending 'invalid'(==0) at index 0 |
|
- | 2049 | serialStream.Write(bytes, 0, bytes.Length); |
|
Line -... | Line 2050... | ||
- | 2050 | ||
- | 2051 | _iWPCount = -1; |
|
- | 2052 | while (_iWPCount == -1) |
|
- | 2053 | Thread.Sleep(10); |
|
- | 2054 | Dispatcher.Invoke(() => lblWPCount.Content = _iWPCount.ToString()); |
|
- | 2055 | ||
- | 2056 | int iVal; |
|
- | 2057 | double dVal; |
|
- | 2058 | NumberFormatInfo nfi = new NumberFormatInfo(); |
|
- | 2059 | nfi.NumberDecimalSeparator = ","; |
|
- | 2060 | for (int i = 0; i < dtWaypoints.Rows.Count; i++) |
|
- | 2061 | { |
|
- | 2062 | //longitude |
|
- | 2063 | dVal = Convert.ToDouble(dtWaypoints.Rows[i][4], nfi); |
|
- | 2064 | iVal = (int)(dVal * Math.Pow(10, 7)); |
|
- | 2065 | bData[0] = (byte)(iVal & 0xff); |
|
- | 2066 | bData[1] = (byte)((iVal >> 8) & 0xff); |
|
- | 2067 | bData[2] = (byte)((iVal >> 16) & 0xff); |
|
- | 2068 | bData[3] = (byte)(iVal >> 24); |
|
- | 2069 | //latitude |
|
- | 2070 | dVal = Convert.ToDouble(dtWaypoints.Rows[i][3], nfi); |
|
- | 2071 | iVal = (int)(dVal * Math.Pow(10, 7)); |
|
- | 2072 | bData[4] = (byte)(iVal & 0xff); |
|
- | 2073 | bData[5] = (byte)((iVal >> 8) & 0xff); |
|
- | 2074 | bData[6] = (byte)((iVal >> 16) & 0xff); |
|
- | 2075 | bData[7] = (byte)(iVal >> 24); |
|
- | 2076 | //altitude |
|
- | 2077 | dVal = Convert.ToDouble(dtWaypoints.Rows[i][5], nfi); |
|
- | 2078 | iVal = (int)(dVal * 10); |
|
- | 2079 | bData[8] = (byte)(iVal & 0xff); |
|
- | 2080 | bData[9] = (byte)((iVal >> 8) & 0xff); |
|
- | 2081 | bData[10] = (byte)((iVal >> 16) & 0xff); |
|
- | 2082 | bData[11] = (byte)(iVal >> 24); |
|
- | 2083 | //Status 'NEWDATA' |
|
- | 2084 | bData[12] = 1; |
|
- | 2085 | //heading |
|
- | 2086 | iVal = Convert.ToInt16(dtWaypoints.Rows[i][6]); |
|
- | 2087 | bData[13] = (byte)(iVal & 0xff); |
|
- | 2088 | bData[14] = (byte)((iVal >> 8) & 0xff); |
|
- | 2089 | //ToleranceRadius |
|
- | 2090 | bData[15] = Convert.ToByte(dtWaypoints.Rows[i][9]); |
|
- | 2091 | //HoldTime |
|
- | 2092 | bData[16] = Convert.ToByte(dtWaypoints.Rows[i][10]); |
|
- | 2093 | //Event_Flag |
|
- | 2094 | bData[17] = Convert.ToByte(dtWaypoints.Rows[i][13]); |
|
- | 2095 | //Index |
|
- | 2096 | bData[18] = Convert.ToByte((int)dtWaypoints.Rows[i][0]); |
|
- | 2097 | //Type |
|
- | 2098 | bData[19] = Convert.ToByte(dtWaypoints.Rows[i][1]); |
|
- | 2099 | //WP_EventChannelValue |
|
- | 2100 | bData[20] = Convert.ToByte(dtWaypoints.Rows[i][14]); |
|
- | 2101 | //AltitudeRate |
|
- | 2102 | bData[21] = Convert.ToByte(dtWaypoints.Rows[i][8]); |
|
- | 2103 | //Speed |
|
- | 2104 | bData[22] = Convert.ToByte(dtWaypoints.Rows[i][7]); |
|
- | 2105 | //CamAngle |
|
- | 2106 | bData[23] = (byte)Convert.ToInt16(dtWaypoints.Rows[i][12]); |
|
- | 2107 | //Name |
|
- | 2108 | byte[] name = ASCIIEncoding.ASCII.GetBytes((string)dtWaypoints.Rows[i][2]); |
|
- | 2109 | bData[24] = name.Length > 0 ? name[0] : (byte)0; |
|
- | 2110 | bData[25] = name.Length > 1 ? name[1] : (byte)0; |
|
- | 2111 | bData[26] = name.Length > 2 ? name[2] : (byte)0; |
|
- | 2112 | bData[27] = name.Length > 3 ? name[3] : (byte)0; |
|
- | 2113 | //Autotrigger |
|
- | 2114 | bData[28] = Convert.ToByte(dtWaypoints.Rows[i][11]); |
|
- | 2115 | ||
- | 2116 | bytes = FlightControllerMessage.CreateMessage('w', 2, bData); |
|
- | 2117 | serialStream.Write(bytes, 0, bytes.Length); |
|
- | 2118 | ||
- | 2119 | _iWPCount = -1; |
|
- | 2120 | while (_iWPCount == -1) |
|
- | 2121 | Thread.Sleep(10); |
|
- | 2122 | Dispatcher.Invoke(() => lblWPCount.Content = _iWPCount.ToString()); |
|
- | 2123 | } |
|
- | 2124 | } |
|
- | 2125 | else |
|
- | 2126 | Log(LogMsgType.Error, "NOT CONNECTED!"); |
|
- | 2127 | ||
Line 2064... | Line 2128... | ||
2064 | 2128 | } |
|
Line 2065... | Line 2129... | ||
2065 | 2129 | ||
2066 | #region OSD-Menue |
2130 | #region OSD-Menue |
Line 2522... | Line 2586... | ||
2522 | else |
2586 | else |
2523 | { |
2587 | { |
2524 | int wpnum = Convert.ToInt16(sVal); |
2588 | int wpnum = Convert.ToInt16(sVal); |
2525 | string wp; |
2589 | string wp; |
2526 | int i; |
2590 | int i; |
- | 2591 | NumberFormatInfo nfi = new NumberFormatInfo(); |
|
- | 2592 | nfi.NumberDecimalSeparator = "."; |
|
2527 | dtWaypoints.Rows.Clear(); |
2593 | dtWaypoints.Rows.Clear(); |
2528 | for (int k = 1; k <= wpnum; k++) |
2594 | for (int k = 1; k <= wpnum; k++) |
2529 | { |
2595 | { |
2530 | DataRow dr = dtWaypoints.NewRow(); |
2596 | DataRow dr = dtWaypoints.NewRow(); |
2531 | dr.ItemArray = new object[16]; |
2597 | dr.ItemArray = new object[16]; |
Line 2534... | Line 2600... | ||
2534 | wp = "Point" + k.ToString(); |
2600 | wp = "Point" + k.ToString(); |
2535 | o[i] = k; |
2601 | o[i] = k; |
2536 | i++; |
2602 | i++; |
2537 | sVal = ini.IniReadValue(wp, "Type"); |
2603 | sVal = ini.IniReadValue(wp, "Type"); |
2538 | if (sVal != "") |
2604 | if (sVal != "") |
2539 | o[i] = ((Waypoints.pointType)(Convert.ToInt16(sVal) - 1)).ToString(); |
2605 | o[i] = Convert.ToInt16(sVal) -1; |
2540 | i++; |
2606 | i++; |
2541 | sVal = ini.IniReadValue(wp, "Prefix"); |
2607 | sVal = ini.IniReadValue(wp, "Prefix"); |
2542 | if (sVal != "") |
2608 | if (sVal != "") |
2543 | o[i] = sVal == "0" ? "P" + k.ToString() : sVal + k.ToString(); |
2609 | o[i] = sVal == "0" ? "P" + k.ToString() : sVal + k.ToString(); |
2544 | i++; |
2610 | i++; |
2545 | sVal = ini.IniReadValue(wp, "Longitude"); |
2611 | sVal = ini.IniReadValue(wp, "Latitude"); |
2546 | if (sVal != "") |
2612 | if (sVal != "") |
2547 | o[i] = Convert.ToDouble(sVal); |
2613 | o[i] = Convert.ToDouble(sVal, nfi); |
2548 | i++; |
2614 | i++; |
2549 | sVal = ini.IniReadValue(wp, "Latitude"); |
2615 | sVal = ini.IniReadValue(wp, "Longitude"); |
2550 | if (sVal != "") |
2616 | if (sVal != "") |
2551 | o[i] = Convert.ToDouble(sVal); |
2617 | o[i] = Convert.ToDouble(sVal, nfi); |
2552 | i++; |
2618 | i++; |
2553 | sVal = ini.IniReadValue(wp, "Altitude"); |
2619 | sVal = ini.IniReadValue(wp, "Altitude"); |
2554 | if (sVal != "") |
2620 | if (sVal != "") |
2555 | o[i] = Convert.ToInt16(sVal); |
2621 | o[i] = Convert.ToDouble(sVal, nfi); |
2556 | i++; |
2622 | i++; |
2557 | sVal = ini.IniReadValue(wp, "Heading"); |
2623 | sVal = ini.IniReadValue(wp, "Heading"); |
2558 | if (sVal != "") |
2624 | if (sVal != "") |
2559 | o[i] = Convert.ToInt16(sVal); |
2625 | o[i] = Convert.ToInt16(sVal); |
2560 | i++; |
2626 | i++; |
2561 | sVal = ini.IniReadValue(wp, "Speed"); |
2627 | sVal = ini.IniReadValue(wp, "Speed"); |
2562 | if (sVal != "") |
2628 | if (sVal != "") |
2563 | o[i] = Waypoints.WPSpeed(Convert.ToInt16(sVal)); |
2629 | o[i] =Convert.ToInt16(sVal); |
2564 | i++; |
2630 | i++; |
2565 | sVal = ini.IniReadValue(wp, "ClimbRate"); |
2631 | sVal = ini.IniReadValue(wp, "ClimbRate"); |
2566 | if (sVal != "") |
2632 | if (sVal != "") |
2567 | o[i] = Convert.ToInt16(sVal); |
2633 | o[i] = Convert.ToInt16(sVal); |
2568 | i++; |
2634 | i++; |
Line 2578... | Line 2644... | ||
2578 | if (sVal != "") |
2644 | if (sVal != "") |
2579 | o[i] = Convert.ToInt16(sVal); ; |
2645 | o[i] = Convert.ToInt16(sVal); ; |
2580 | i++; |
2646 | i++; |
2581 | sVal = ini.IniReadValue(wp, "CAM-Nick"); |
2647 | sVal = ini.IniReadValue(wp, "CAM-Nick"); |
2582 | if (sVal != "") |
2648 | if (sVal != "") |
2583 | o[i] = Waypoints.CAMAngle(Convert.ToInt16(sVal)); |
2649 | o[i] = Convert.ToInt16(sVal); |
2584 | i++; |
2650 | i++; |
2585 | o[i] = 0; |
2651 | o[i] = 0; |
2586 | i++; |
2652 | i++; |
2587 | sVal = ini.IniReadValue(wp, "WP_Event_Channel_Value"); |
2653 | sVal = ini.IniReadValue(wp, "WP_Event_Channel_Value"); |
2588 | if (sVal != "") |
2654 | if (sVal != "") |
2589 | o[i] = Convert.ToInt16(sVal); |
2655 | o[i] = Convert.ToInt16(sVal); |
2590 | i++; |
2656 | i++; |
2591 | o[i] = "New"; |
2657 | o[i] = "New"; |
Line 2592... | Line 2658... | ||
2592 | 2658 | ||
- | 2659 | dr.ItemArray = o; |
|
2593 | dr.ItemArray = o; |
2660 | // dtWaypoints.Rows.Add(dr); |
2594 | dtWaypoints.Rows.Add(dr); |
2661 | dtWaypoints.Rows.Add(dr); |
2595 | Dispatcher.Invoke(() => lblWPIndex.Content = k.ToString()); |
2662 | Dispatcher.Invoke(() => lblWPIndex.Content = k.ToString()); |
2596 | Dispatcher.Invoke(() => lblWPCount.Content = k.ToString()); |
2663 | Dispatcher.Invoke(() => lblWPCount.Content = k.ToString()); |
2597 | Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
2664 | Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
Line 2629... | Line 2696... | ||
2629 | { |
2696 | { |
2630 | throw new NotImplementedException(); |
2697 | throw new NotImplementedException(); |
2631 | } |
2698 | } |
2632 | } |
2699 | } |
Line -... | Line 2700... | ||
- | 2700 | ||
- | 2701 | public class waypointsConverter : IValueConverter |
|
- | 2702 | { |
|
- | 2703 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |
|
- | 2704 | { |
|
- | 2705 | if (value != null) |
|
- | 2706 | { |
|
- | 2707 | switch ((string)parameter) |
|
- | 2708 | { |
|
- | 2709 | case "Latitude": |
|
- | 2710 | return value.ToString() + " °"; |
|
- | 2711 | case "Longitude": |
|
- | 2712 | return value.ToString() + " °"; |
|
- | 2713 | case "Radius": |
|
- | 2714 | return value.ToString() + " m"; |
|
- | 2715 | case "Altitude": |
|
- | 2716 | return value.ToString() + " m"; |
|
- | 2717 | case "ClimbRate": |
|
- | 2718 | return value.ToString() == "255" ? "Auto" : (System.Convert.ToDouble(value) / 10).ToString("0.0 m/s"); |
|
- | 2719 | case "DelayTime": |
|
- | 2720 | return value.ToString() + " s"; |
|
- | 2721 | case "Heading": |
|
- | 2722 | return Waypoints.Heading(System.Convert.ToInt32(value)); |
|
- | 2723 | case "Speed": |
|
- | 2724 | return Waypoints.WPSpeed(System.Convert.ToInt16(value)); |
|
- | 2725 | case "CamAngle": |
|
- | 2726 | return Waypoints.CAMAngle(System.Convert.ToInt16(value)); |
|
- | 2727 | case "Type": |
|
- | 2728 | return ((Waypoints.pointType)(System.Convert.ToInt16(value))).ToString(); |
|
- | 2729 | case "AutoTrigger": |
|
- | 2730 | return value.ToString() == "0" ? "- - -" : value.ToString() + " m"; |
|
- | 2731 | case "Status": |
|
- | 2732 | return Waypoints.WPSpeed(System.Convert.ToInt16(value)); |
|
- | 2733 | } |
|
- | 2734 | ||
- | 2735 | return value.ToString(); |
|
- | 2736 | } |
|
- | 2737 | else return value; |
|
- | 2738 | } |
|
- | 2739 | ||
- | 2740 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) |
|
- | 2741 | { |
|
- | 2742 | throw new NotImplementedException(); |
|
- | 2743 | } |
|
- | 2744 | } |
|
2633 | 2745 | ||
2634 | public class IniFile |
2746 | public class IniFile |
2635 | { |
2747 | { |
Line 2636... | Line 2748... | ||
2636 | public string path; |
2748 | public string path; |