48 lines
2.2 KiB
C++
48 lines
2.2 KiB
C++
// main.cpp - virtual front panel of the AdvancedController for the PC.
|
|
//
|
|
// Looks like the real device: the same buttons with the same icons, drawn as vectors.
|
|
// A click on a button sends the same "KEY" command the physical button generates; the led
|
|
// of every button mirrors the real led of the device (command LEDS, polled 5 times a second).
|
|
// Hold a button for 1.5 s to get the "long press" where the device has one (ENTER -> camera
|
|
// OSD menu, crosshair 1 / 2 -> edit mode). PC keyboard arrows / Enter = the cross pad.
|
|
//
|
|
// Up to three controllers at once: the tabs CONTROLLER 1 / 2 / 3 at the top. Everything below
|
|
// the tabs belongs to the selected controller: its serial port, OPEN / CLOSE, the panel and
|
|
// the exchange line. The dot in the tab: grey = port closed, red = port open but the
|
|
// controller does not answer, green = connected. IDENTIFY makes the gear led of that
|
|
// controller blink fast for 3 s - to see which physical device the tab is talking to.
|
|
//
|
|
// Usage: ./run.sh or ./bin/AdvancedControllerPanel [-p /dev/ttyUSB0 [-p /dev/ttyUSB1]] [-b 9600]
|
|
// Needs: firmware r7.2.6 or later.
|
|
|
|
#include "mainwindow.h"
|
|
|
|
#include <QApplication>
|
|
#include <QCommandLineParser>
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
QApplication app(argc, argv);
|
|
QApplication::setApplicationName(QStringLiteral("AdvancedControllerPanel"));
|
|
|
|
QCommandLineParser parser;
|
|
parser.setApplicationDescription(QStringLiteral("AdvancedController virtual front panel"));
|
|
parser.addHelpOption();
|
|
const QCommandLineOption portOption({QStringLiteral("p"), QStringLiteral("port")},
|
|
QStringLiteral("serial port to preselect for CONTROLLER 1 (repeat for 2 and 3), e.g. -p /dev/ttyUSB0 -p /dev/ttyUSB1"),
|
|
QStringLiteral("port"));
|
|
const QCommandLineOption baudOption({QStringLiteral("b"), QStringLiteral("baud")},
|
|
QStringLiteral("baud rate (default 9600)"), QStringLiteral("baud"), QStringLiteral("9600"));
|
|
parser.addOption(portOption);
|
|
parser.addOption(baudOption);
|
|
parser.process(app);
|
|
|
|
bool baudOk = false;
|
|
const int baud = parser.value(baudOption).toInt(&baudOk);
|
|
if (!baudOk || baud <= 0)
|
|
parser.showHelp(1);
|
|
|
|
MainWindow window(parser.values(portOption), baud);
|
|
window.show();
|
|
return app.exec();
|
|
}
|