Browse Source

Terminal Console: Added APM mode to send reset and send the break to enable the CLI on connect

QGC4.4
Bill Bonney 12 years ago
parent
commit
d8229281bd
  1. 40
      src/ui/configuration/terminalconsole.cpp
  2. 5
      src/ui/configuration/terminalconsole.h
  3. 12
      src/ui/configuration/terminalconsole.ui

40
src/ui/configuration/terminalconsole.cpp

@ -50,7 +50,8 @@ This file is part of the APM_PLANNER project @@ -50,7 +50,8 @@ This file is part of the APM_PLANNER project
TerminalConsole::TerminalConsole(QWidget *parent) :
QWidget(parent),
ui(new Ui::TerminalConsole)
ui(new Ui::TerminalConsole),
m_consoleMode(APM)
{
ui->setupUi(this);
@ -71,6 +72,7 @@ TerminalConsole::TerminalConsole(QWidget *parent) : @@ -71,6 +72,7 @@ TerminalConsole::TerminalConsole(QWidget *parent) :
ui->disconnectButton->setEnabled(false);
ui->settingsButton->setEnabled(true);
addBaudComboBoxConfig();
fillPortsInfo(*ui->linkComboBox);
@ -82,13 +84,19 @@ TerminalConsole::TerminalConsole(QWidget *parent) : @@ -82,13 +84,19 @@ TerminalConsole::TerminalConsole(QWidget *parent) :
ui->linkComboBox->setCurrentIndex(0);
}
//setUiControls(m_settingsDialog);
addConsoleModesComboBoxConfig();
initConnections();
}
void TerminalConsole::addBaudComboBoxConfig()
{
ui->consoleModeBox->addItem(QLatin1String("APM"), APM);
ui->consoleModeBox->addItem(QLatin1String("PX4"), PX4);
}
void TerminalConsole::addConsoleModesComboBoxConfig()
{
ui->baudComboBox->addItem(QLatin1String("115200"), QSerialPort::Baud115200);
ui->baudComboBox->addItem(QLatin1String("57600"), QSerialPort::Baud57600);
ui->baudComboBox->addItem(QLatin1String("38400"), QSerialPort::Baud38400);
@ -147,6 +155,8 @@ void TerminalConsole::openSerialPort(const SerialSettings &settings) @@ -147,6 +155,8 @@ void TerminalConsole::openSerialPort(const SerialSettings &settings)
qDebug() << "Open Terminal Console Serial Port";
writeSettings(); // Save last successful connection
sendResetCommand();
} else {
m_serial->close();
QMessageBox::critical(this, tr("Error"), m_serial->errorString());
@ -170,6 +180,15 @@ void TerminalConsole::closeSerialPort() @@ -170,6 +180,15 @@ void TerminalConsole::closeSerialPort()
m_statusBar->showMessage(tr("Disconnected"));
}
void TerminalConsole::sendResetCommand()
{
if (m_serial->isOpen()) {
m_serial->setDataTerminalReady(true);
m_serial->waitForBytesWritten(250);
m_serial->setDataTerminalReady(false);
}
}
void TerminalConsole::writeData(const QByteArray &data)
{
// qDebug() << "writeData:" << data;
@ -181,6 +200,23 @@ void TerminalConsole::readData() @@ -181,6 +200,23 @@ void TerminalConsole::readData()
QByteArray data = m_serial->readAll();
// qDebug() << "readData:" << data;
m_console->putData(data);
switch(m_consoleMode)
{
case APM: // APM
// On reset, send the break sequence and display help
if (data.contains("ENTER 3")) {
m_serial->write("\r\r\r");
m_serial->waitForBytesWritten(10);
m_serial->write("HELP\r");
}
break;
case PX4:
// Do nothing
default:
qDebug() << "Mode not yet implemented";
}
}
void TerminalConsole::handleError(QSerialPort::SerialPortError error)

5
src/ui/configuration/terminalconsole.h

@ -55,6 +55,8 @@ class TerminalConsole : public QWidget @@ -55,6 +55,8 @@ class TerminalConsole : public QWidget
Q_OBJECT
public:
enum ConsoleMode { APM, PX4 };
public:
explicit TerminalConsole(QWidget *parent = 0);
~TerminalConsole();
@ -64,6 +66,7 @@ private slots: @@ -64,6 +66,7 @@ private slots:
void closeSerialPort();
void writeData(const QByteArray &data);
void readData();
void sendResetCommand();
void handleError(QSerialPort::SerialPortError error);
@ -75,6 +78,7 @@ private: @@ -75,6 +78,7 @@ private:
void initConnections();
void addBaudComboBoxConfig();
void fillPortsInfo(QComboBox &comboxBox);
void addConsoleModesComboBoxConfig();
void writeSettings();
void loadSettings();
@ -87,6 +91,7 @@ private: @@ -87,6 +91,7 @@ private:
SettingsDialog *m_settingsDialog;
QSerialPort *m_serial;
SerialSettings m_settings;
ConsoleMode m_consoleMode;
};
#endif // TERMINALCONSOLE_H

12
src/ui/configuration/terminalconsole.ui

@ -126,7 +126,7 @@ @@ -126,7 +126,7 @@
</widget>
</item>
<item alignment="Qt::AlignRight">
<widget class="QComboBox" name="fmuComboBox">
<widget class="QComboBox" name="consoleModeBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
@ -139,16 +139,6 @@ @@ -139,16 +139,6 @@
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string>APM</string>
</property>
</item>
<item>
<property name="text">
<string>PX4</string>
</property>
</item>
</widget>
</item>
<item>

Loading…
Cancel
Save