#include "mainwindow.h" #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setupUi(); enumerateDevices(); } MainWindow::~MainWindow() { // Clean up all channel widgets for (auto widget : channelWidgets) { delete widget; } } void MainWindow::setupUi() { // Create central widget and main layout centralWidget = new QWidget(this); mainLayout = new QVBoxLayout(centralWidget); // Create scroll area scrollArea = new QScrollArea(this); scrollContent = new QWidget(); scrollLayout = new QVBoxLayout(scrollContent); // Set up scroll area properties scrollArea->setWidget(scrollContent); scrollArea->setWidgetResizable(true); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // Add scroll area to main layout mainLayout->addWidget(scrollArea); // Set central widget setCentralWidget(centralWidget); setWindowTitle("EIS Multiplexer Controller"); } void MainWindow::enumerateDevices() { size_t count = 0; uint16_t* serials = eismultiplexer_list_available_devices(&count); if (!serials) { qWarning() << "No EIS multiplexer devices found"; return; } for (size_t i = 0; i < count; i++) { uint16_t serial = serials[i]; struct eismultiplexer multiplexer; if (eismultiplexer_connect(&multiplexer, serial) == 0) { uint16_t channelCount = 0; if (eismultiplexer_get_channel_count(&multiplexer, &channelCount) == 0) { for (uint16_t channel = 0; channel < channelCount; channel++) { ChannelWidget* widget = new ChannelWidget(serial, channel, &multiplexer); channelWidgets.push_back(widget); scrollLayout->addWidget(widget); } } eismultiplexer_disconnect(&multiplexer); } else { qWarning() << "Failed to connect to device with serial" << serial; } } free(serials); }