Rev 158 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 158 | Rev 159 | ||
---|---|---|---|
Line 27... | Line 27... | ||
27 | #include <QSpinBox> |
27 | #include <QSpinBox> |
Line 28... | Line 28... | ||
28 | 28 | ||
29 | #include "mktool.h" |
29 | #include "mktool.h" |
30 | #include "dlg_Config.h" |
30 | #include "dlg_Config.h" |
- | 31 | #include "dlg_Motortest.h" |
|
31 | #include "dlg_Motortest.h" |
32 | #include "dlg_Preferences.h" |
32 | #include "../global.h" |
33 | #include "../global.h" |
Line 33... | Line 34... | ||
33 | #include "../ToolBox.h" |
34 | #include "../ToolBox.h" |
Line 49... | Line 50... | ||
49 | init_Objects(); |
50 | init_Objects(); |
50 | init_Connections(); |
51 | init_Connections(); |
Line 51... | Line 52... | ||
51 | 52 | ||
Line 52... | Line 53... | ||
52 | init_Plot(); |
53 | init_Plot(); |
53 | 54 | ||
Line 54... | Line 55... | ||
54 | Ticker->start(500); |
55 | Ticker->start(2000); |
55 | } |
56 | } |
56 | 57 | ||
Line 114... | Line 115... | ||
114 | // Seriell-Port |
115 | // Seriell-Port |
115 | serialPort = new ManageSerialPort; |
116 | serialPort = new ManageSerialPort; |
Line 116... | Line 117... | ||
116 | 117 | ||
117 | // QFile-Instanz (Log-Datei) |
118 | // QFile-Instanz (Log-Datei) |
- | 119 | CSVFile = new QFile(""); |
|
- | 120 | ||
118 | CSVFile = new QFile(""); |
121 | AllowSend = true; |
Line 119... | Line 122... | ||
119 | } |
122 | } |
120 | 123 | ||
121 | void MKTool::init_Connections() |
124 | void MKTool::init_Connections() |
Line 127... | Line 130... | ||
127 | connect(pb_Load, SIGNAL(clicked()), this, SLOT(slot_LoadParameter())); |
130 | connect(pb_Load, SIGNAL(clicked()), this, SLOT(slot_LoadParameter())); |
128 | connect(pb_Save, SIGNAL(clicked()), this, SLOT(slot_SaveParameter())); |
131 | connect(pb_Save, SIGNAL(clicked()), this, SLOT(slot_SaveParameter())); |
129 | connect(pb_Read, SIGNAL(clicked()), this, SLOT(slot_GetParameter())); |
132 | connect(pb_Read, SIGNAL(clicked()), this, SLOT(slot_GetParameter())); |
130 | connect(pb_Write, SIGNAL(clicked()), this, SLOT(slot_SetParameter())); |
133 | connect(pb_Write, SIGNAL(clicked()), this, SLOT(slot_SetParameter())); |
Line -... | Line 134... | ||
- | 134 | ||
- | 135 | connect(pb_LCDup, SIGNAL(clicked()), this, SLOT(slot_LCD_UP())); |
|
- | 136 | connect(pb_LCDdown, SIGNAL(clicked()), this, SLOT(slot_LCD_DOWN())); |
|
131 | 137 | ||
132 | // Actions |
138 | // Actions |
- | 139 | connect(ac_Config, SIGNAL(triggered()), this, SLOT(slot_ac_Config())); |
|
- | 140 | connect(ac_Preferences, SIGNAL(triggered()), this, SLOT(slot_ac_Preferences())); |
|
133 | connect(ac_Config, SIGNAL(triggered()), this, SLOT(slot_ac_Config())); |
141 | |
134 | connect(ac_Motortest, SIGNAL(triggered()), this, SLOT(slot_ac_Motortest())); |
142 | connect(ac_Motortest, SIGNAL(triggered()), this, SLOT(slot_ac_Motortest())); |
135 | connect(ac_StartPlotter, SIGNAL(triggered()), this, SLOT(slot_ac_StartPlotter())); |
143 | connect(ac_StartPlotter, SIGNAL(triggered()), this, SLOT(slot_ac_StartPlotter())); |
136 | connect(ac_MehrDaten, SIGNAL(triggered()), this, SLOT(slot_ac_MehrDaten())); |
144 | connect(ac_MehrDaten, SIGNAL(triggered()), this, SLOT(slot_ac_MehrDaten())); |
137 | connect(ac_About, SIGNAL(triggered()), this, SLOT(slot_ac_About())); |
145 | connect(ac_About, SIGNAL(triggered()), this, SLOT(slot_ac_About())); |
Line 293... | Line 301... | ||
293 | if (TickerDiv) |
301 | if (TickerDiv) |
294 | TickerDiv = false; |
302 | TickerDiv = false; |
295 | else |
303 | else |
296 | TickerDiv = true; |
304 | TickerDiv = true; |
Line 297... | Line -... | ||
297 | - | ||
298 | if (ac_MehrDaten->isChecked()) |
- | |
299 | { |
- | |
300 | send_Data('f', TX_Data, 0); |
- | |
301 | } |
- | |
302 | 305 | ||
303 | for (int a = 0; a < MaxTickerEvents; a++) |
306 | for (int a = 0; a < MaxTickerEvents; a++) |
304 | { |
307 | { |
305 | if (TickerEvent[a] == true) |
308 | if (TickerEvent[a] == true) |
306 | { |
309 | { |
Line 311... | Line 314... | ||
311 | { |
314 | { |
312 | QByteArray Temp(LastSend.toUtf8()); |
315 | QByteArray Temp(LastSend.toUtf8()); |
313 | serialPort->sendData(Temp); |
316 | serialPort->sendData(Temp); |
314 | } |
317 | } |
315 | break; |
318 | break; |
316 | - | ||
317 | case 1 : |
319 | case 1 : |
318 | TX_Data[0] = 255; |
320 | TX_Data[0] = 0; |
- | 321 | send_Data('p', ADDRESS_FC, TX_Data, 0, false); |
|
- | 322 | break; |
|
- | 323 | case 2 : |
|
- | 324 | TX_Data[0] = LCD_Page; |
|
319 | TX_Data[1] = 255; |
325 | TX_Data[1] = 0; |
320 | send_Data('h', TX_Data, 2, false); |
326 | send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
321 | break; |
327 | break; |
322 | } |
328 | } |
323 | } |
329 | } |
324 | } |
330 | } |
325 | } |
331 | } |
Line 345... | Line 351... | ||
345 | { |
351 | { |
346 | TX_Data[0] = Motor1; |
352 | TX_Data[0] = Motor1; |
347 | TX_Data[1] = Motor2; |
353 | TX_Data[1] = Motor2; |
348 | TX_Data[2] = Motor3; |
354 | TX_Data[2] = Motor3; |
349 | TX_Data[3] = Motor4; |
355 | TX_Data[3] = Motor4; |
350 | send_Data('t', TX_Data, 4, false); |
356 | send_Data('t', ADDRESS_FC, TX_Data, 4, false); |
351 | } |
357 | } |
Line 352... | Line 358... | ||
352 | 358 | ||
353 | void MKTool::slot_ac_Config() |
359 | void MKTool::slot_ac_Config() |
354 | { |
360 | { |
Line 390... | Line 396... | ||
390 | } |
396 | } |
Line 391... | Line 397... | ||
391 | 397 | ||
392 | } |
398 | } |
Line -... | Line 399... | ||
- | 399 | } |
|
- | 400 | ||
- | 401 | void MKTool::slot_ac_Preferences() |
|
- | 402 | { |
|
- | 403 | dlg_Preferences *f_Preferences = new dlg_Preferences(this); |
|
- | 404 | ||
- | 405 | if (f_Preferences->exec()==QDialog::Accepted) |
|
- | 406 | { |
|
- | 407 | ||
- | 408 | } |
|
393 | } |
409 | } |
394 | 410 | ||
395 | void MKTool::slot_ac_StartPlotter() |
411 | void MKTool::slot_ac_StartPlotter() |
396 | { |
412 | { |
397 | if (ac_StartPlotter->isChecked()) |
413 | if (ac_StartPlotter->isChecked()) |
Line 444... | Line 460... | ||
444 | // Action->setChecked(true); |
460 | // Action->setChecked(true); |
445 | tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->text()); |
461 | tab_Main->insertTab(Aktive, TabWidgets[Aktive], Action->text()); |
446 | } |
462 | } |
447 | } |
463 | } |
Line 448... | Line 464... | ||
448 | 464 | ||
449 | void MKTool::slot_ac_MehrDaten() |
465 | void MKTool::slot_ac_MehrDaten() // DONE 0.71g |
450 | { |
466 | { |
451 | if (ac_MehrDaten->isChecked()) |
467 | if (ac_MehrDaten->isChecked()) |
452 | { |
468 | { |
453 | Ticker->setInterval(100); |
469 | TX_Data[0] = 10; |
454 | } |
470 | send_Data('d', ADDRESS_ALL, TX_Data, 1, false); } |
455 | else |
471 | else |
456 | { |
472 | { |
457 | Ticker->setInterval(500); |
473 | TX_Data[0] = 50; |
458 | } |
474 | send_Data('d', ADDRESS_ALL, TX_Data, 1, false); } |
Line 459... | Line 475... | ||
459 | } |
475 | } |
460 | 476 | ||
461 | void MKTool::slot_ac_About() |
477 | void MKTool::slot_ac_About() |
462 | { |
478 | { |
Line 463... | Line 479... | ||
463 | QMessageBox::about(this, trUtf8(("Ãœber ")) + QA_NAME, QA_ABOUT); |
479 | QMessageBox::about(this, trUtf8(("Ãœber ")) + QA_NAME, QA_ABOUT); |
464 | } |
480 | } |
465 | 481 | ||
466 | void MKTool::slot_ac_GetLabels() |
482 | void MKTool::slot_ac_GetLabels() // DONE 0.71g |
467 | { |
483 | { |
Line -... | Line 484... | ||
- | 484 | TX_Data[0] = 0; |
|
468 | TX_Data[0] = 0; |
485 | send_Data('a', ADDRESS_ALL, TX_Data, 1, false); |
469 | send_Data('a', TX_Data, 1, false); |
486 | } |
470 | } |
487 | |
471 | 488 | ||
472 | // Daten-Plotter |
489 | // Daten-Plotter |
Line 820... | Line 837... | ||
820 | if (Combo->currentText() == QString("Poti 4")) |
837 | if (Combo->currentText() == QString("Poti 4")) |
821 | return 254; |
838 | return 254; |
822 | return Combo->currentText().toInt(); |
839 | return Combo->currentText().toInt(); |
823 | } |
840 | } |
Line 824... | Line 841... | ||
824 | 841 | ||
825 | void MKTool::store_ParameterSet(int Set) |
842 | void MKTool::store_ParameterSet(int Set) // DONE 0.71g |
826 | { |
843 | { |
Line 827... | Line 844... | ||
827 | char *Name = le_SetName->text().toLatin1().data(); |
844 | char *Name = le_SetName->text().toLatin1().data(); |
Line 961... | Line 978... | ||
961 | ParameterSet[Set][P_NAV_WIND_CORR] = get_Value(cb_13_1); |
978 | ParameterSet[Set][P_NAV_WIND_CORR] = get_Value(cb_13_1); |
962 | ParameterSet[Set][P_NAV_SPEED_COMP] = get_Value(cb_13_2); |
979 | ParameterSet[Set][P_NAV_SPEED_COMP] = get_Value(cb_13_2); |
963 | ParameterSet[Set][P_NAV_RADIUS] = get_Value(cb_13_3); |
980 | ParameterSet[Set][P_NAV_RADIUS] = get_Value(cb_13_3); |
964 | } |
981 | } |
Line 965... | Line 982... | ||
965 | 982 | ||
966 | void MKTool::slot_SaveParameter() |
983 | void MKTool::slot_SaveParameter() // DONE 0.71g |
967 | { |
984 | { |
Line 968... | Line 985... | ||
968 | int Set = sb_Set->value() + 5; |
985 | int Set = sb_Set->value() + 5; |
Line 1084... | Line 1101... | ||
1084 | Setting.setValue("GPS_MaxRadius", ParameterSet[Set][P_NAV_RADIUS]); |
1101 | Setting.setValue("GPS_MaxRadius", ParameterSet[Set][P_NAV_RADIUS]); |
1085 | Setting.endGroup(); |
1102 | Setting.endGroup(); |
1086 | } |
1103 | } |
1087 | } |
1104 | } |
Line 1088... | Line 1105... | ||
1088 | 1105 | ||
1089 | void MKTool::slot_LoadParameter() |
1106 | void MKTool::slot_LoadParameter() // DONE 0.71g |
1090 | { |
1107 | { |
Line 1091... | Line 1108... | ||
1091 | QString Filename = QFileDialog::getOpenFileName(this, "Mikrokopter Parameter laden", Settings->DIR.Parameter, "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)"); |
1108 | QString Filename = QFileDialog::getOpenFileName(this, "Mikrokopter Parameter laden", Settings->DIR.Parameter, "Mikrokopter Parameter(*.mkp);;Alle Dateien (*)"); |
1092 | 1109 | ||
Line 1216... | Line 1233... | ||
1216 | 1233 | ||
1217 | show_ParameterSet(Set); |
1234 | show_ParameterSet(Set); |
1218 | } |
1235 | } |
Line 1219... | Line 1236... | ||
1219 | } |
1236 | } |
1220 | 1237 | ||
1221 | void MKTool::show_ParameterSet(int Set) |
1238 | void MKTool::show_ParameterSet(int Set) // DONE 0.71g |
1222 | { |
1239 | { |
1223 | char Name[12]; |
1240 | char Name[12]; |
1224 | for (int a = 0; a < 12; a++) |
1241 | for (int a = 0; a < 12; a++) |
Line 1389... | Line 1406... | ||
1389 | } |
1406 | } |
Line 1390... | Line 1407... | ||
1390 | 1407 | ||
Line 1391... | Line 1408... | ||
1391 | 1408 | ||
1392 | } |
1409 | } |
1393 | 1410 | ||
Line 1394... | Line 1411... | ||
1394 | void MKTool::slot_TabChanged(int Tab) |
1411 | void MKTool::slot_TabChanged(int Tab) // DONE 0.71g |
1395 | { |
1412 | { |
- | 1413 | Tab = Tab; |
|
- | 1414 | ||
- | 1415 | if ((tab_Main->currentWidget()->objectName() == QString("Tab_2")) && (tab_Par->currentIndex() == 1)) |
|
- | 1416 | { |
|
1396 | Tab = Tab; |
1417 | TX_Data[0] = 0; |
1397 | - | ||
1398 | if ((tab_Main->currentWidget()->objectName() == QString("Tab_2")) && (tab_Par->currentIndex() == 1)) |
1418 | send_Data('p', ADDRESS_FC, TX_Data, 0, true); |
1399 | { |
1419 | |
1400 | TickerEvent[1] = true; |
1420 | Ticker->setInterval(500); |
- | 1421 | TickerEvent[1] = true; |
|
1401 | // Poll->start(500); |
1422 | } |
1402 | } |
- | |
1403 | else |
1423 | else |
- | 1424 | { |
|
- | 1425 | Ticker->setInterval(2000); |
|
- | 1426 | TickerEvent[1] = false; |
|
- | 1427 | } |
|
- | 1428 | ||
- | 1429 | if ((tab_Main->currentWidget()->objectName() == QString("Tab_4"))) |
|
- | 1430 | { |
|
- | 1431 | TX_Data[0] = 0; |
|
- | 1432 | TX_Data[1] = 0; |
|
- | 1433 | send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
|
- | 1434 | ||
- | 1435 | Ticker->setInterval(500); |
|
- | 1436 | TickerEvent[2] = true; |
|
- | 1437 | } |
|
- | 1438 | else |
|
- | 1439 | { |
|
- | 1440 | Ticker->setInterval(2000); |
|
- | 1441 | TickerEvent[2] = false; |
|
- | 1442 | } |
|
- | 1443 | ||
- | 1444 | } |
|
- | 1445 | ||
- | 1446 | void MKTool::slot_LCD_UP() // DONE 0.71g |
|
- | 1447 | { |
|
- | 1448 | if (LCD_Page == LCD_MAX_Page) |
|
- | 1449 | TX_Data[0] = 0; |
|
- | 1450 | else |
|
- | 1451 | TX_Data[0] = LCD_Page + 1; |
|
- | 1452 | ||
- | 1453 | TX_Data[1] = 0; |
|
- | 1454 | send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
|
- | 1455 | } |
|
- | 1456 | ||
- | 1457 | void MKTool::slot_LCD_DOWN() // DONE 0.71g |
|
- | 1458 | { |
|
- | 1459 | if (LCD_Page == 0) |
|
- | 1460 | TX_Data[0] = LCD_MAX_Page; |
|
- | 1461 | else |
|
1404 | { |
1462 | TX_Data[0] = LCD_Page - 1; |
Line 1405... | Line 1463... | ||
1405 | TickerEvent[1] = false; |
1463 | |
1406 | // Poll->stop(); |
1464 | TX_Data[1] = 0; |
1407 | } |
1465 | send_Data('l', ADDRESS_ALL, TX_Data, 1, true); |
1408 | } |
1466 | } |
1409 | 1467 | ||
1410 | void MKTool::slot_GetParameter() |
1468 | void MKTool::slot_GetParameter() // DONE 0.71g |
Line 1411... | Line 1469... | ||
1411 | { |
1469 | { |
1412 | TX_Data[0] = sb_Set->value(); |
1470 | TX_Data[0] = sb_Set->value(); |
1413 | TX_Data[1] = 0; |
1471 | TX_Data[1] = 0; |
Line -... | Line 1472... | ||
- | 1472 | send_Data('q', ADDRESS_FC, TX_Data, 1); |
|
- | 1473 | } |
|
- | 1474 | ||
1414 | send_Data('q', TX_Data, 1); |
1475 | void MKTool::slot_SetParameter() // DONE 0.71g |
1415 | } |
1476 | { |
1416 | 1477 | store_ParameterSet(sb_Set->value()); |
|
1417 | void MKTool::slot_SetParameter() |
1478 | |
Line 1418... | Line 1479... | ||
1418 | { |
1479 | TX_Data[0] = sb_Set->value(); |
Line 1419... | Line -... | ||
1419 | store_ParameterSet(sb_Set->value()); |
- | |
1420 | 1480 | TX_Data[1] = VERSION_SETTINGS; |
|
1421 | for (int a = 0; a < 150; a++) |
1481 | |
Line -... | Line 1482... | ||
- | 1482 | for (int a = 0; a < MaxParameter; a++) |
|
- | 1483 | { |
|
- | 1484 | TX_Data[a + 2] = ParameterSet[sb_Set->value()][a]; |
|
1422 | { |
1485 | } |
1423 | TX_Data[a] = ParameterSet[sb_Set->value()][a]; |
1486 | |
1424 | } |
1487 | store_ParameterSet(sb_Set->value()); |
1425 | 1488 | ||
1426 | store_ParameterSet(sb_Set->value()); |
1489 | send_Data('s', ADDRESS_FC, TX_Data, MaxParameter + 2, false); |
Line 1451... | Line 1514... | ||
1451 | Setting.setValue("Point", pos()); |
1514 | Setting.setValue("Point", pos()); |
1452 | Setting.setValue("TabViews", QBitArray(TabViews)); |
1515 | Setting.setValue("TabViews", QBitArray(TabViews)); |
1453 | Setting.endGroup(); |
1516 | Setting.endGroup(); |
1454 | } |
1517 | } |
Line -... | Line 1518... | ||
- | 1518 | ||
1455 | 1519 | ||
1456 | // Debug-Daten anzeigen und Aufzeichnen |
1520 | // Debug-Daten anzeigen und Aufzeichnen |
1457 | /////////////////////////////////////// |
1521 | /////////////////////////////////////// |
1458 | void MKTool::write_CSV() |
1522 | void MKTool::write_CSV() |
1459 | { |
1523 | { |
Line 1468... | Line 1532... | ||
1468 | } |
1532 | } |
1469 | } |
1533 | } |
1470 | Out << "\n"; |
1534 | Out << "\n"; |
1471 | } |
1535 | } |
Line 1472... | Line 1536... | ||
1472 | 1536 | ||
1473 | void MKTool::slot_RecordCSV() |
1537 | void MKTool::slot_RecordCSV() // DONE 0.71g |
1474 | { |
1538 | { |
1475 | if (!CSVFile->isOpen()) |
1539 | if (!CSVFile->isOpen()) |
1476 | { |
1540 | { |
Line 1477... | Line 1541... | ||
1477 | QString Filename = Settings->DIR.Logging + QDate::currentDate().toString(("yyyy-MM-dd")) + " -- " + QTime::currentTime().toString("hh-mm") + ".csv"; |
1541 | QString Filename = Settings->DIR.Logging + Mode.Hardware + " - " + QDate::currentDate().toString(("yyyy-MM-dd")) + " -- " + QTime::currentTime().toString("hh-mm") + ".csv"; |
1478 | 1542 | ||
1479 | CSVFile = new QFile(Filename); |
1543 | CSVFile = new QFile(Filename); |
1480 | if (!CSVFile->exists()) |
1544 | if (!CSVFile->exists()) |
Line 1572... | Line 1636... | ||
1572 | le_A_29->setText(QString("%1").arg(AnalogData[29])); |
1636 | le_A_29->setText(QString("%1").arg(AnalogData[29])); |
1573 | le_A_30->setText(QString("%1").arg(AnalogData[30])); |
1637 | le_A_30->setText(QString("%1").arg(AnalogData[30])); |
1574 | le_A_31->setText(QString("%1").arg(AnalogData[31])); |
1638 | le_A_31->setText(QString("%1").arg(AnalogData[31])); |
1575 | } |
1639 | } |
Line -... | Line 1640... | ||
- | 1640 | ||
1576 | 1641 | ||
1577 | // Seriel-Port Bereich, Befehle senden und Daten empfangen |
1642 | // Seriel-Port Bereich, Befehle senden und Daten empfangen |
Line 1578... | Line 1643... | ||
1578 | ////////////////////////////////////////////////////////// |
1643 | ////////////////////////////////////////////////////////// |
1579 | 1644 | ||
1580 | // Neues Datenpacket empfangen -> Verarbeiten |
1645 | // Neues Datenpacket empfangen -> Verarbeiten |
Line 1581... | Line 1646... | ||
1581 | void MKTool::new_RXData(sRxData RX) |
1646 | void MKTool::new_RXData(sRxData RX) // DONE 0.71g |
1582 | { |
1647 | { |
1583 | 1648 | ||
Line 1584... | Line 1649... | ||
1584 | if (LastSend.length() > 2) |
1649 | if (LastSend.length() > 2) |
1585 | { |
1650 | { |
1586 | } |
- | |
1587 | - | ||
1588 | switch(RX.Input[2]) |
- | |
1589 | { |
- | |
1590 | case '0' : |
- | |
1591 | if (ToolBox::Decode64(RX, true)) |
- | |
1592 | { |
1651 | } |
1593 | le_LCD0->setText(ToolBox::DataToString(RX.Decode)); |
- | |
1594 | } |
- | |
1595 | break; |
- | |
1596 | case '1' : |
- | |
1597 | if (ToolBox::Decode64(RX, true)) |
- | |
1598 | { |
- | |
1599 | le_LCD1->setText(ToolBox::DataToString(RX.Decode)); |
1652 | |
1600 | } |
1653 | switch(RX.Input[2]) |
- | 1654 | { |
|
- | 1655 | case 'L' : // DONE 0.71g |
|
- | 1656 | if (ToolBox::Decode64(RX, true)) |
|
- | 1657 | { |
|
- | 1658 | int LCD[150]; |
|
- | 1659 | memcpy(LCD,RX.Decode, sizeof(RX.Decode)); |
|
- | 1660 | ||
- | 1661 | LCD_Page = RX.Decode[0]; |
|
1601 | break; |
1662 | LCD_MAX_Page = RX.Decode[1]; |
- | 1663 | ||
- | 1664 | le_LCD0->setText(ToolBox::Data2QString(LCD,2,22)); |
|
- | 1665 | le_LCD1->setText(ToolBox::Data2QString(LCD,22,42)); |
|
1602 | case '2' : |
1666 | le_LCD2->setText(ToolBox::Data2QString(LCD,42,62)); |
1603 | if (ToolBox::Decode64(RX, true)) |
1667 | le_LCD3->setText(ToolBox::Data2QString(LCD,62,82)); |
1604 | { |
1668 | |
1605 | le_LCD2->setText(ToolBox::DataToString(RX.Decode)); |
1669 | TickerEvent[0] = false; |
1606 | } |
1670 | } |
1607 | break; |
1671 | break; |
1608 | case '3' : |
- | |
1609 | if (ToolBox::Decode64(RX, true)) |
- | |
1610 | { |
- | |
1611 | le_LCD3->setText(ToolBox::DataToString(RX.Decode)); |
- | |
1612 | } |
- | |
1613 | break; |
- | |
1614 | case '4' : |
1672 | case 'P' : // DONE 0.71g |
1615 | if (ToolBox::Decode64(RX, false)) |
1673 | if (ToolBox::Decode64(RX, true)) |
1616 | { |
1674 | { |
1617 | pb_K1->setValue(RX.Decode[1]); |
1675 | pb_K1->setValue(ToolBox::Data2Int(RX.Decode, 0,true)); |
1618 | pb_K2->setValue(RX.Decode[2]); |
1676 | pb_K2->setValue(ToolBox::Data2Int(RX.Decode, 2,true)); |
1619 | pb_K3->setValue(RX.Decode[3]); |
1677 | pb_K3->setValue(ToolBox::Data2Int(RX.Decode, 4,true)); |
1620 | pb_K4->setValue(RX.Decode[4]); |
1678 | pb_K4->setValue(ToolBox::Data2Int(RX.Decode, 6,true)); |
1621 | pb_K5->setValue(RX.Decode[5]); |
1679 | pb_K5->setValue(ToolBox::Data2Int(RX.Decode, 8,true)); |
1622 | pb_K6->setValue(RX.Decode[6]); |
1680 | pb_K6->setValue(ToolBox::Data2Int(RX.Decode, 10,true)); |
1623 | pb_K7->setValue(RX.Decode[7]); |
1681 | pb_K7->setValue(ToolBox::Data2Int(RX.Decode, 12,true)); |
1624 | pb_K8->setValue(RX.Decode[8]); |
1682 | pb_K8->setValue(ToolBox::Data2Int(RX.Decode, 14,true)); |
1625 | } |
1683 | } |
1626 | break; |
1684 | break; |
1627 | case 'A' : |
1685 | case 'A' : // DONE 0.71g |
1628 | if (ToolBox::Decode64(RX, true)) |
1686 | if (ToolBox::Decode64(RX, true)) |
1629 | { |
1687 | { |
1630 | int Position = RX.Input[1] - 48; |
1688 | int Position = RX.Decode[0]; |
1631 | if (Position < 32) |
1689 | if (Position < 32) |
1632 | { |
1690 | { |
1633 | Settings->Analog[Position].Name = ToolBox::DataToString(RX.Decode); |
1691 | Settings->Analog[Position].Name = ToolBox::Data2QString(RX.Decode,1,17).trimmed(); |
1634 | Position ++; |
1692 | Position ++; |
1635 | TX_Data[0] = Position; |
1693 | TX_Data[0] = Position; |
1636 | send_Data('a', TX_Data, 1, false); |
1694 | send_Data('a', ADDRESS_ALL, TX_Data, 1, false); |
1637 | } |
1695 | } |
Line 1644... | Line 1702... | ||
1644 | Settings->write_Settings_FC(); |
1702 | Settings->write_Settings_FC(); |
1645 | config_Plot(); |
1703 | config_Plot(); |
1646 | } |
1704 | } |
1647 | } |
1705 | } |
1648 | break; |
1706 | break; |
1649 | case 'D' : |
1707 | case 'D' : // DONE 0.71g |
1650 | if (ToolBox::Decode64(RX, true)) |
1708 | if (ToolBox::Decode64(RX, true)) |
1651 | { |
1709 | { |
1652 | for (int i = 0; i < MaxAnalog; i++) |
1710 | for (int i = 0; i < MaxAnalog; i++) |
1653 | { |
1711 | { |
1654 | AnalogData[i] = ToolBox::Data2Int(RX.Decode, (i * 2) + 2); |
1712 | AnalogData[i] = ToolBox::Data2Int(RX.Decode, (i * 2) + 2); |
1655 | } |
1713 | } |
1656 | show_DebugData(); |
1714 | show_DebugData(); |
1657 | } |
1715 | } |
1658 | break; |
1716 | break; |
1659 | case 'L' : |
- | |
1660 | case 'M' : |
- | |
1661 | case 'N' : |
1717 | case 'Q' : // DONE 0.71g |
1662 | case 'O' : |
- | |
1663 | case 'P' : |
- | |
1664 | TickerEvent[0] = false; |
1718 | TickerEvent[0] = false; |
Line 1665... | Line 1719... | ||
1665 | 1719 | ||
- | 1720 | ToolBox::Decode64(RX, true); |
|
- | 1721 | ||
- | 1722 | if (RX.Decode[1] == VERSION_SETTINGS) |
|
- | 1723 | { |
|
- | 1724 | int Settings_ID = RX.Decode[0]; |
|
- | 1725 | for (int a = 0; a < MaxParameter; a++) |
|
- | 1726 | { |
|
- | 1727 | ParameterSet[Settings_ID][a] = RX.Decode[a + 2]; |
|
1666 | ToolBox::Decode64(RX, true); |
1728 | } |
1667 | memcpy(ParameterSet[sb_Set->value()],RX.Decode, sizeof(RX.Decode)); |
1729 | // memcpy(ParameterSet[Settings_ID],RX.Decode, sizeof(RX.Decode)); |
- | 1730 | show_ParameterSet(Settings_ID); |
|
- | 1731 | } |
|
- | 1732 | else |
|
- | 1733 | { |
|
- | 1734 | pb_Read->setDisabled(true); |
|
- | 1735 | pb_Write->setDisabled(true); |
|
- | 1736 | ||
- | 1737 | QMessageBox::warning(this, QA_NAME, |
|
- | 1738 | "Versionen inkompatibel. \nParameterbearbeitung nicht moeglich.", QMessageBox::Ok); |
|
- | 1739 | } |
|
1668 | show_ParameterSet(sb_Set->value()); |
1740 | |
- | 1741 | break; |
|
- | 1742 | case 'S' : // DONE 0.71g |
|
- | 1743 | TickerEvent[0] = false; |
|
- | 1744 | qDebug("Settings set...!!!"); |
|
1669 | break; |
1745 | break; |
1670 | case 'V' : |
1746 | case 'V' : // DONE 0.71g |
Line 1671... | Line 1747... | ||
1671 | TickerEvent[0] = false; |
1747 | TickerEvent[0] = false; |
Line 1672... | Line 1748... | ||
1672 | 1748 | ||
- | 1749 | ToolBox::Decode64(RX, true); |
|
- | 1750 | ||
- | 1751 | Mode.ID = RX.Input[1] - 'a'; |
|
- | 1752 | Mode.VERSION_MAJOR = RX.Decode[0]; |
|
- | 1753 | Mode.VERSION_MINOR = RX.Decode[1]; |
|
- | 1754 | Mode.VERSION_PATCH = RX.Decode[4]; |
|
1673 | ToolBox::Decode64(RX, true); |
1755 | Mode.VERSION_SERIAL_MAJOR = RX.Decode[2]; |
1674 | 1756 | Mode.VERSION_SERIAL_MINOR = RX.Decode[3]; |
|
1675 | Mode.ID = RX.Input[1]; |
- | |
Line 1676... | Line 1757... | ||
1676 | Mode.Hardware = HardwareType[Mode.ID]; |
1757 | |
Line 1677... | Line 1758... | ||
1677 | Mode.Version = QString("%1").arg(RX.Decode[0]) + "." + QString("%1").arg(RX.Decode[1]) + QString(RX.Decode[4] + 'a'); |
1758 | Mode.Hardware = HardwareType[Mode.ID]; |
1678 | Mode.Compatible = RX.Decode[2]; |
1759 | Mode.Version = QString("%1").arg(RX.Decode[0]) + "." + QString("%1").arg(RX.Decode[1]) + QString(RX.Decode[4] + 'a'); |
1679 | - | ||
1680 | setWindowTitle(QA_NAME + " v" + QA_VERSION + " - " + Mode.Hardware + " " + Mode.Version); |
- | |
1681 | - | ||
1682 | if (Mode.ID == 1) |
1760 | |
1683 | { |
- | |
1684 | if (RX.Decode[2] != FC_VERSION) |
1761 | setWindowTitle(QA_NAME + " v" + QA_VERSION + " - " + Mode.Hardware + " " + Mode.Version); |
1685 | { |
1762 | |
1686 | pb_Read->setDisabled(true); |
1763 | if (Mode.VERSION_SERIAL_MAJOR != VERSION_SERIAL_MAJOR) |
- | 1764 | { |
|
- | 1765 | AllowSend = false; |
|
- | 1766 | QMessageBox::warning(this, QA_NAME, |
|
- | 1767 | "Serielles Protokoll Inkompatibel. \nBitte neue Programmversion installieren,", QMessageBox::Ok); |
|
- | 1768 | } |
|
1687 | pb_Write->setDisabled(true); |
1769 | |
1688 | 1770 | TX_Data[0] = 50; |
|
1689 | QMessageBox::warning(this, QA_NAME, |
1771 | send_Data('d', ADDRESS_ALL, TX_Data, 1, false); |
1690 | QA_NAME + " und Flight-Control inkompatibel.\nParameterbearbeitung nicht moeglich.", QMessageBox::Ok); |
1772 | |
1691 | } |
1773 | if (Mode.ID == ADDRESS_FC) |
1692 | else |
1774 | { |
1693 | { |
1775 | { |
1694 | TX_Data[0] = 1; |
1776 | TX_Data[0] = 0xff; |
1695 | TX_Data[1] = 0; |
1777 | TX_Data[1] = 0; |
1696 | send_Data('q', TX_Data, 1); |
1778 | send_Data('q', ADDRESS_FC, TX_Data, 1); |
1697 | } |
1779 | } |
Line 1698... | Line 1780... | ||
1698 | } |
1780 | } |
1699 | else |
1781 | else |
1700 | { |
1782 | { |
1701 | pb_Read->setDisabled(true); |
1783 | pb_Read->setDisabled(true); |
1702 | pb_Write->setDisabled(true); |
1784 | pb_Write->setDisabled(true); |
1703 | 1785 | ||
Line 1704... | Line 1786... | ||
1704 | QMessageBox::warning(this, QA_NAME, |
1786 | // QMessageBox::warning(this, QA_NAME, |
1705 | "Keine Verbindung zur FlightCtrl. \nParameterbearbeitung nicht moeglich.", QMessageBox::Ok); |
1787 | // "Keine Verbindung zur FlightCtrl. \nParameterbearbeitung nicht moeglich.", QMessageBox::Ok); |
1706 | } |
1788 | } |
1707 | break; |
1789 | break; |
1708 | } |
1790 | } |
1709 | } |
1791 | } |
Line 1762... | Line 1844... | ||
1762 | { |
1844 | { |
1763 | TX_Data[0] = 0; |
1845 | TX_Data[0] = 0; |
1764 | TX_Data[1] = 0; |
1846 | TX_Data[1] = 0; |
1765 | TX_Data[2] = 0; |
1847 | TX_Data[2] = 0; |
1766 | TX_Data[3] = 0; |
1848 | TX_Data[3] = 0; |
1767 | send_Data('t', TX_Data, 4, false); |
1849 | send_Data('t', ADDRESS_FC, TX_Data, 4, false); |
Line 1768... | Line -... | ||
1768 | - | ||
1769 | // timer->stop(); |
1850 | |
1770 | serialPort->close(); |
1851 | serialPort->close(); |
1771 | pb_Open->setText("Verbinden"); |
1852 | pb_Open->setText("Verbinden"); |
1772 | ac_ConnectTTY->setText("Verbinden"); |
1853 | ac_ConnectTTY->setText("Verbinden"); |
1773 | pb_Open->setIcon(Icons[9]); |
1854 | pb_Open->setIcon(Icons[9]); |
Line 1790... | Line 1871... | ||
1790 | serialPort->open(); |
1871 | serialPort->open(); |
1791 | if (serialPort->isOpen()) |
1872 | if (serialPort->isOpen()) |
1792 | { |
1873 | { |
1793 | serialPort->receiveData(); |
1874 | serialPort->receiveData(); |
Line 1794... | Line 1875... | ||
1794 | 1875 | ||
- | 1876 | send_Data('v', ADDRESS_ALL, TX_Data, 0, true); |
|
1795 | send_Data('v', TX_Data, 0, true); |
1877 | |
1796 | pb_Open->setText("Trennen"); |
1878 | pb_Open->setText("Trennen"); |
1797 | ac_ConnectTTY->setText("Trennen"); |
1879 | ac_ConnectTTY->setText("Trennen"); |
1798 | pb_Open->setIcon(Icons[8]); |
1880 | pb_Open->setIcon(Icons[8]); |
1799 | ac_ConnectTTY->setIcon(Icons[8]); |
1881 | ac_ConnectTTY->setIcon(Icons[8]); |
1800 | } |
1882 | } |
1801 | } |
1883 | } |
Line 1802... | Line 1884... | ||
1802 | } |
1884 | } |
1803 | 1885 | ||
1804 | // Daten senden |
1886 | // Daten senden |
1805 | void MKTool::send_Data(char CMD, char Data[150],unsigned int Length, bool Resend) |
1887 | void MKTool::send_Data(char CMD, int Address, char Data[150],unsigned int Length, bool Resend) // DONE 0.71g |
1806 | { |
1888 | { |
1807 | if (serialPort->isOpen()) |
1889 | if (serialPort->isOpen() && AllowSend) |
Line 1808... | Line 1890... | ||
1808 | { |
1890 | { |
Line 1809... | Line 1891... | ||
1809 | QString TX_Data = ToolBox::Encode64(Data, Length); |
1891 | QString TX_Data = ToolBox::Encode64(Data, Length); |
Line 1810... | Line 1892... | ||
1810 | 1892 | ||
Line 1811... | Line 1893... | ||
1811 | TX_Data = QString("#0") + QString(CMD) + TX_Data; |
1893 | TX_Data = QString("#") + (QString('a' + Address)) + QString(CMD) + TX_Data; |
Line 1812... | Line -... | ||
1812 | - | ||
1813 | // qDebug(TX_Data.toLatin1().data()); |
1894 | |
1814 | 1895 | // qDebug(TX_Data.toLatin1().data()); |
|
1815 | TX_Data = ToolBox::add_CRC(TX_Data) + '\r'; |
1896 | |
1816 | 1897 | TX_Data = ToolBox::add_CRC(TX_Data) + '\r'; |
|
1817 | // qDebug(TX_Data.toLatin1().data()); |
1898 |