From 8ad659de762396f2e36878763f26273bfb312c00 Mon Sep 17 00:00:00 2001 From: Carl Philipp Klemm Date: Mon, 13 Oct 2025 15:21:17 +0200 Subject: [PATCH] Add example generation --- mainwindow.cpp | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 379cd2b..81e80f8 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "mainwindow.h" #include "ui_mainwindow.h" #include "triggerwidget.h" @@ -114,17 +115,47 @@ void MainWindow::enumerateDevices() ui->statusbar->showMessage("Ready"); free(serials); + generateExample(); } void MainWindow::generateExample() { QString example = - "import eismultiplexer\n\n" - "from time import sleep"; + "# This is an example script to show you how\n# to drive eismultiplexer using the python api\n" + "import eismultiplexer as multi\n" + "from time import sleep\n\n" + "# First initalize the device(s)\n"; - for (const auto& channel : channels) + std::set serials; + for (size_t i = 0; i < channels.size(); ++i) + serials.insert(channels[i]->getDeviceSerial()); + + size_t i = 0; + for (uint16_t serial : serials) { - example.append(QString("eismultiplexer")); + example.append(QString("multiplexer_") + QString::number(i) + " multi.Multiplexer(serial=" + QString::number(serial) + ")\n"); + ++i; } + + example.append("\nprint('\\nListing the nummber of channels per unit')\n"); + for (size_t i = 0; i < serials.size(); ++i) + { + QString printLine = "print(f'Found unit with serial number {" + QString::number(channels[i]->getDeviceSerial()) + "} and {multiplexer_" + QString::number(i) + ".getChannelCount()} channels')\n"; + example.append(printLine); + } + + example.append("\nprint('Connecting the first and second channel on the first unit')\n"); + example.append("multiplexer_0.connectChannel(multi.Channel.A)\n"); + example.append("multiplexer_0.connectChannel(multi.Channel.B)\n\n"); + example.append("print('Waiting for half a second for something to happen')\n"); + example.append("sleep(0.5)\n\n"); + example.append("print('Disconnect first channel')\n"); + example.append("multiplexer_0.disconnectChannel(multi.Channel.A)\n\n"); + example.append("print('Waiting up to 5000 milliseconds for a trigger')\n"); + example.append("multiplexer_0.setTriggerState(0, multi.TriggerState.INPUT)\n"); + example.append("multiplexer_0.waitTrigger(0, multi.TriggerState.HIGHLEVEL, 5000)\n\n"); + example.append("print('Disconnecting all channels')\n"); + example.append("multiplexer_0.clear()\n"); + codeEditor.setText(example); }