diff --git a/dsremote.pro b/dsremote.pro index 43fae89..76a5582 100644 --- a/dsremote.pro +++ b/dsremote.pro @@ -53,6 +53,8 @@ HEADERS += edflib.h HEADERS += signalcurve.h HEADERS += settings_dialog.h HEADERS += screen_thread.h +HEADERS += lan_connect_thread.h +HEADERS += read_settings_thread.h HEADERS += third_party/kiss_fft/kiss_fft.h HEADERS += third_party/kiss_fft/_kiss_fft_guts.h @@ -74,6 +76,8 @@ SOURCES += edflib.c SOURCES += signalcurve.cpp SOURCES += settings_dialog.cpp SOURCES += screen_thread.cpp +SOURCES += lan_connect_thread.cpp +SOURCES += read_settings_thread.cpp SOURCES += third_party/kiss_fft/kiss_fft.c SOURCES += third_party/kiss_fft/kiss_fftr.c diff --git a/global.h b/global.h index 75c8b70..e0a92d4 100644 --- a/global.h +++ b/global.h @@ -35,7 +35,7 @@ #define PROGRAM_NAME "DSRemote" -#define PROGRAM_VERSION "0.32_1609200823" +#define PROGRAM_VERSION "0.32_1610022021" #define MAX_PATHLEN 4096 diff --git a/lan_connect_thread.cpp b/lan_connect_thread.cpp new file mode 100644 index 0000000..3592609 --- /dev/null +++ b/lan_connect_thread.cpp @@ -0,0 +1,72 @@ +/* +*************************************************************************** +* +* Author: Teunis van Beelen +* +* Copyright (C) 2016 Teunis van Beelen +* +* Email: teuniz@gmail.com +* +*************************************************************************** +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +*************************************************************************** +*/ + + +#include "lan_connect_thread.h" + + +lan_connect_thread::lan_connect_thread() +{ + device = NULL; + + dev_str[0] = 0; +} + + +void lan_connect_thread::run() +{ + if(dev_str[0] == 0) return; + + device = tmc_open_lan(dev_str); +} + + +struct tmcdev * lan_connect_thread::get_device(void) +{ + return device; +} + + +void lan_connect_thread::set_device_address(const char *addr) +{ + strncpy(dev_str, addr, 16); + + dev_str[15] = 0; +} + + + + + + + + + + + + + diff --git a/lan_connect_thread.h b/lan_connect_thread.h new file mode 100644 index 0000000..52922c9 --- /dev/null +++ b/lan_connect_thread.h @@ -0,0 +1,92 @@ +/* +*************************************************************************** +* +* Author: Teunis van Beelen +* +* Copyright (C) 2016 Teunis van Beelen +* +* Email: teuniz@gmail.com +* +*************************************************************************** +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +*************************************************************************** +*/ + + +#ifndef DEF_LAN_CONNECT_THREAD_H +#define DEF_LAN_CONNECT_THREAD_H + + +#include +#include +#include +#include + +#include +#include + +#include "global.h" +#include "utils.h" +#include "connection.h" +#include "tmc_dev.h" + + + +class lan_connect_thread : public QThread +{ + Q_OBJECT + +public: + + lan_connect_thread(); + + void set_device_address(const char *); + struct tmcdev * get_device(void); + +private: + + char dev_str[256]; + + struct tmcdev *device; + + void run(); +}; + + + +#endif + + + + + + + + + + + + + + + + + + + + + + diff --git a/mainwindow.cpp b/mainwindow.cpp index bef873f..9696999 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -44,13 +44,17 @@ void UI_Mainwindow::open_connection() { int i, j, n, len; - char str[1024] = {""}, + char str[4096] = {""}, dev_str[256] = {""}, resp_str[1024] = {""}, *ptr; QSettings settings; + QMessageBox msgBox; + + lan_connect_thread lan_cn_thrd; + if(device != NULL) { return; @@ -87,7 +91,7 @@ void UI_Mainwindow::open_connection() if(device == NULL) { sprintf(str, "Can not open device %s", dev_str); - goto OUT_ERROR; + goto OC_OUT_ERROR; } } @@ -98,7 +102,7 @@ void UI_Mainwindow::open_connection() if(!strcmp(dev_str, "")) { sprintf(str, "No IP address set"); - goto OUT_ERROR; + goto OC_OUT_ERROR; } len = strlen(dev_str); @@ -106,7 +110,7 @@ void UI_Mainwindow::open_connection() if(len < 7) { sprintf(str, "No IP address set"); - goto OUT_ERROR; + goto OC_OUT_ERROR; } int cf = 0; @@ -144,11 +148,37 @@ void UI_Mainwindow::open_connection() } } - device = tmc_open_lan(dev_str); + statusLabel->setText("Trying to connect..."); + + lan_cn_thrd.set_device_address(dev_str); + lan_cn_thrd.start(); + + sprintf(str, "Trying to connect to %s", dev_str); + + msgBox.setIcon(QMessageBox::NoIcon); + msgBox.setText(str); + msgBox.addButton("Abort", QMessageBox::RejectRole); + + connect(&lan_cn_thrd, SIGNAL(finished()), &msgBox, SLOT(accept())); + + if(msgBox.exec() != QDialog::Accepted) + { + statusLabel->setText("Connection aborted"); + lan_cn_thrd.terminate(); + lan_cn_thrd.wait(20000); + sprintf(str, "Connection aborted"); + disconnect(&lan_cn_thrd, 0, 0, 0); + goto OC_OUT_ERROR; + } + + disconnect(&lan_cn_thrd, 0, 0, 0); + + device = lan_cn_thrd.get_device(); if(device == NULL) { + statusLabel->setText("Connection failed"); sprintf(str, "Can not open connection to %s", dev_str); - goto OUT_ERROR; + goto OC_OUT_ERROR; } } @@ -156,7 +186,7 @@ void UI_Mainwindow::open_connection() // if(tmc_write("*IDN?;:SYST:ERR?") != 16) // This is a fix for the broken *IDN? command in older fw version { sprintf(str, "Can not write to device %s", dev_str); - goto OUT_ERROR; + goto OC_OUT_ERROR; } n = tmc_read(); @@ -164,7 +194,7 @@ void UI_Mainwindow::open_connection() if(n < 0) { sprintf(str, "Can not read from device %s", dev_str); - goto OUT_ERROR; + goto OC_OUT_ERROR; } devparms.channel_cnt = 0; @@ -182,14 +212,14 @@ void UI_Mainwindow::open_connection() { snprintf(str, 1024, "Received an unknown identification string from device:\n\n%s\n ", device->buf); str[1023] = 0; - goto OUT_ERROR; + goto OC_OUT_ERROR; } if(strcmp(ptr, "RIGOL TECHNOLOGIES")) { snprintf(str, 1024, "Received an unknown identification string from device:\n\n%s\n ", device->buf); str[1023] = 0; - goto OUT_ERROR; + goto OC_OUT_ERROR; } ptr = strtok(NULL, ","); @@ -197,7 +227,7 @@ void UI_Mainwindow::open_connection() { snprintf(str, 1024, "Received an unknown identification string from device:\n\n%s\n ", device->buf); str[1023] = 0; - goto OUT_ERROR; + goto OC_OUT_ERROR; } get_device_model(ptr); @@ -206,7 +236,7 @@ void UI_Mainwindow::open_connection() { snprintf(str, 1024, "Received an unknown identification string from device:\n\n%s\n ", device->buf); str[1023] = 0; - goto OUT_ERROR; + goto OC_OUT_ERROR; } ptr = strtok(NULL, ","); @@ -214,7 +244,7 @@ void UI_Mainwindow::open_connection() { snprintf(str, 1024, "Received an unknown identification string from device:\n\n%s\n ", device->buf); str[1023] = 0; - goto OUT_ERROR; + goto OC_OUT_ERROR; } strcpy(devparms.serialnr, ptr); @@ -224,7 +254,7 @@ void UI_Mainwindow::open_connection() { snprintf(str, 1024, "Received an unknown identification string from device:\n\n%s\n ", device->buf); str[1023] = 0; - goto OUT_ERROR; + goto OC_OUT_ERROR; } strcpy(devparms.softwvers, ptr); @@ -244,7 +274,6 @@ void UI_Mainwindow::open_connection() if((devparms.modelserie != 6) && (devparms.modelserie != 1)) { - QMessageBox msgBox; msgBox.setIcon(QMessageBox::Warning); msgBox.setText("Unsupported device detected."); msgBox.setInformativeText("This software has not been tested with your device.\n" @@ -267,12 +296,11 @@ void UI_Mainwindow::open_connection() } } - statusLabel->setText("Reading settings from device..."); - if(get_device_settings()) { - strcpy(str, "Can not read settings from device"); - goto OUT_ERROR; + strcpy(str, "Can not read device settings"); + + goto OC_OUT_ERROR; } if(devparms.timebasedelayenable) @@ -394,7 +422,7 @@ void UI_Mainwindow::open_connection() return; -OUT_ERROR: +OC_OUT_ERROR: statusLabel->setText("Disconnected"); @@ -542,103 +570,64 @@ void UI_Mainwindow::closeEvent(QCloseEvent *cl_event) int UI_Mainwindow::get_device_settings() { - int chn, line; + int chn; - char str[512]; + char str[4096] = {""}; - devparms.activechannel = -1; + statusLabel->setText("Reading settings from device..."); - QApplication::setOverrideCursor(Qt::WaitCursor); + read_settings_thread rd_set_thrd; + rd_set_thrd.set_device(device); + rd_set_thrd.set_devparm_ptr(&devparms); + rd_set_thrd.start(); - qApp->processEvents(); + QMessageBox msgBox; + msgBox.setIcon(QMessageBox::NoIcon); + msgBox.setText("Reading settings from device..."); + msgBox.addButton("Abort", QMessageBox::RejectRole); + + connect(&rd_set_thrd, SIGNAL(finished()), &msgBox, SLOT(accept())); + + if(msgBox.exec() != QDialog::Accepted) + { + statusLabel->setText("Reading settings aborted"); + rd_set_thrd.terminate(); + rd_set_thrd.wait(20000); + sprintf(str, "Reading settings aborted"); + disconnect(&rd_set_thrd, 0, 0, 0); + return -1; + } + + disconnect(&rd_set_thrd, 0, 0, 0); + + if(rd_set_thrd.get_error_num() != 0) + { + statusLabel->setText("Error while reading settings"); + rd_set_thrd.get_error_str(str); + msgBox.setIcon(QMessageBox::Critical); + msgBox.setText(str); + msgBox.exec(); + strcpy(str, "Can not read settings from device"); + return -1; + } for(chn=0; chnbuf, "20M")) - { - devparms.chanbwlimit[chn] = 20; - } - else if(!strcmp(device->buf, "250M")) + switch(chn) { - devparms.chanbwlimit[chn] = 250; + case 0: ch1Button->setStyleSheet("background: #FFFF33;"); + break; + case 1: ch2Button->setStyleSheet("background: #33FFFF;"); + break; + case 2: ch3Button->setStyleSheet("background: #FF33FF;"); + break; + case 3: ch4Button->setStyleSheet("background: #0080FF;"); + break; } - else if(!strcmp(device->buf, "OFF")) - { - devparms.chanbwlimit[chn] = 0; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - sprintf(str, ":CHAN%i:COUP?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 12) - { - line = __LINE__; - goto OUT_ERROR; } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "AC")) - { - devparms.chancoupling[chn] = 2; - } - else if(!strcmp(device->buf, "DC")) - { - devparms.chancoupling[chn] = 1; - } - else if(!strcmp(device->buf, "GND")) - { - devparms.chancoupling[chn] = 0; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - sprintf(str, ":CHAN%i:DISP?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 12) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "0")) + else { switch(chn) { @@ -651,1393 +640,31 @@ int UI_Mainwindow::get_device_settings() case 3: ch4Button->setStyleSheet(def_stylesh); break; } - - devparms.chandisplay[chn] = 0; } - else if(!strcmp(device->buf, "1")) - { - switch(chn) - { - case 0: ch1Button->setStyleSheet("background: #FFFF33;"); - break; - case 1: ch2Button->setStyleSheet("background: #33FFFF;"); - break; - case 2: ch3Button->setStyleSheet("background: #FF33FF;"); - break; - case 3: ch4Button->setStyleSheet("background: #0080FF;"); - break; - } - - devparms.chandisplay[chn] = 1; - - if(devparms.activechannel == -1) - { - devparms.activechannel = chn; - } - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - if(devparms.modelserie != 1) - { - sprintf(str, ":CHAN%i:IMP?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "OMEG")) - { - devparms.chanimpedance[chn] = 0; - } - else if(!strcmp(device->buf, "FIFT")) - { - devparms.chanimpedance[chn] = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - } - - sprintf(str, ":CHAN%i:INV?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "0")) - { - devparms.chaninvert[chn] = 0; - } - else if(!strcmp(device->buf, "1")) - { - devparms.chaninvert[chn] = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - sprintf(str, ":CHAN%i:OFFS?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 12) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.chanoffset[chn] = atof(device->buf); - - sprintf(str, ":CHAN%i:PROB?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 12) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.chanprobe[chn] = atof(device->buf); - - sprintf(str, ":CHAN%i:SCAL?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 12) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.chanscale[chn] = atof(device->buf); - - sprintf(str, ":CHAN%i:VERN?", chn + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 12) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "0")) - { - devparms.chanvernier[chn] = 0; - } - else if(!strcmp(device->buf, "1")) - { - devparms.chanvernier[chn] = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } } - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:OFFS?") != 10) + if(devparms.triggersweep == 0) { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.timebaseoffset = atof(device->buf); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:SCAL?") != 10) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.timebasescale = atof(device->buf); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:DEL:ENAB?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "0")) - { - devparms.timebasedelayenable = 0; - } - else if(!strcmp(device->buf, "1")) - { - devparms.timebasedelayenable = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:DEL:OFFS?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.timebasedelayoffset = atof(device->buf); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:DEL:SCAL?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.timebasedelayscale = atof(device->buf); - - if(devparms.modelserie != 1) - { - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:HREF:MODE?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "CENT")) - { - devparms.timebasehrefmode = 0; - } - else if(!strcmp(device->buf, "TPOS")) - { - devparms.timebasehrefmode = 1; - } - else if(!strcmp(device->buf, "USER")) - { - devparms.timebasehrefmode = 2; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:HREF:POS?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.timebasehrefpos = atoi(device->buf); - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:MODE?") != 10) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "MAIN")) - { - devparms.timebasemode = 0; - } - else if(!strcmp(device->buf, "XY")) - { - devparms.timebasemode = 1; - } - else if(!strcmp(device->buf, "ROLL")) - { - devparms.timebasemode = 2; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - if(devparms.modelserie != 1) - { - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:VERN?") != 10) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "0")) - { - devparms.timebasevernier = 0; - } - else if(!strcmp(device->buf, "1")) - { - devparms.timebasevernier = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if((devparms.modelserie != 1) && (devparms.modelserie != 2)) - { - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:XY1:DISP?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "0")) - { - devparms.timebasexy1display = 0; - } - else if(!strcmp(device->buf, "1")) - { - devparms.timebasexy1display = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TIM:XY2:DISP?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "0")) - { - devparms.timebasexy2display = 0; - } - else if(!strcmp(device->buf, "1")) - { - devparms.timebasexy2display = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:COUP?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "AC")) - { - devparms.triggercoupling = 0; - } - else if(!strcmp(device->buf, "DC")) - { - devparms.triggercoupling = 1; - } - else if(!strcmp(device->buf, "LFR")) - { - devparms.triggercoupling = 2; - } - else if(!strcmp(device->buf, "HFR")) - { - devparms.triggercoupling = 3; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:SWE?") != 10) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "AUTO")) - { - devparms.triggersweep = 0; - trigModeAutoLed->setValue(true); trigModeNormLed->setValue(false); trigModeSingLed->setValue(false); } - else if(!strcmp(device->buf, "NORM")) + else if(devparms.triggersweep == 1) { - devparms.triggersweep = 1; - trigModeAutoLed->setValue(false); trigModeNormLed->setValue(true); trigModeSingLed->setValue(false); } - else if(!strcmp(device->buf, "SING")) + else if(devparms.triggersweep == 2) { - devparms.triggersweep = 2; - trigModeAutoLed->setValue(false); trigModeNormLed->setValue(false); trigModeSingLed->setValue(true); } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:MODE?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "EDGE")) - { - devparms.triggermode = 0; - } - else if(!strcmp(device->buf, "PULS")) - { - devparms.triggermode = 1; - } - else if(!strcmp(device->buf, "SLOP")) - { - devparms.triggermode = 2; - } - else if(!strcmp(device->buf, "VID")) - { - devparms.triggermode = 3; - } - else if(!strcmp(device->buf, "PATT")) - { - devparms.triggermode = 4; - } - else if(!strcmp(device->buf, "RS232")) - { - devparms.triggermode = 5; - } - else if(!strcmp(device->buf, "IIC")) - { - devparms.triggermode = 6; - } - else if(!strcmp(device->buf, "SPI")) - { - devparms.triggermode = 7; - } - else if(!strcmp(device->buf, "CAN")) - { - devparms.triggermode = 8; - } - else if(!strcmp(device->buf, "USB")) - { - devparms.triggermode = 9; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:STAT?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "TD")) - { - devparms.triggerstatus = 0; - } - else if(!strcmp(device->buf, "WAIT")) - { - devparms.triggerstatus = 1; - } - else if(!strcmp(device->buf, "RUN")) - { - devparms.triggerstatus = 2; - } - else if(!strcmp(device->buf, "AUTO")) - { - devparms.triggerstatus = 3; - } - else if(!strcmp(device->buf, "FIN")) - { - devparms.triggerstatus = 4; - } - else if(!strcmp(device->buf, "STOP")) - { - devparms.triggerstatus = 5; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:EDG:SLOP?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "POS")) - { - devparms.triggeredgeslope = 0; - } - else if(!strcmp(device->buf, "NEG")) - { - devparms.triggeredgeslope = 1; - } - else if(!strcmp(device->buf, "RFAL")) - { - devparms.triggeredgeslope = 2; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:EDG:SOUR?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "CHAN1")) - { - devparms.triggeredgesource = 0; - } - else if(!strcmp(device->buf, "CHAN2")) - { - devparms.triggeredgesource = 1; - } - else if(!strcmp(device->buf, "CHAN3")) - { - devparms.triggeredgesource = 2; - } - else if(!strcmp(device->buf, "CHAN4")) - { - devparms.triggeredgesource = 3; - } - else if(!strcmp(device->buf, "EXT")) - { - devparms.triggeredgesource = 4; - } - else if(!strcmp(device->buf, "EXT5")) - { - devparms.triggeredgesource = 5; - } // DS1000Z: "AC", DS6000: "ACL" !! - else if((!strcmp(device->buf, "AC")) || (!strcmp(device->buf, "ACL"))) - { - devparms.triggeredgesource = 6; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - for(chn=0; chnbuf); - } - - if(devparms.triggeredgesource < 4) - { - sprintf(str, ":TRIG:EDG:SOUR CHAN%i", devparms.triggeredgesource + 1); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(str) != 20) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if(devparms.triggeredgesource== 4) - { - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:EDG:SOUR EXT") != 18) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if(devparms.triggeredgesource== 5) - { - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:EDG:SOUR EXT5") != 19) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if(devparms.triggeredgesource== 6) - { - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:EDG:SOUR AC") != 17) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":TRIG:HOLD?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.triggerholdoff = atof(device->buf); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":ACQ:SRAT?") != 10) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.samplerate = atof(device->buf); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":DISP:GRID?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "NONE")) - { - devparms.displaygrid = 0; - } - else if(!strcmp(device->buf, "HALF")) - { - devparms.displaygrid = 1; - } - else if(!strcmp(device->buf, "FULL")) - { - devparms.displaygrid = 2; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":MEAS:COUN:SOUR?") != 16) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "OFF")) - { - devparms.countersrc = 0; - } - else if(!strcmp(device->buf, "CHAN1")) - { - devparms.countersrc = 1; - } - else if(!strcmp(device->buf, "CHAN2")) - { - devparms.countersrc = 2; - } - else if(!strcmp(device->buf, "CHAN3")) - { - devparms.countersrc = 3; - } - else if(!strcmp(device->buf, "CHAN4")) - { - devparms.countersrc = 4; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":DISP:TYPE?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "VECT")) - { - devparms.displaytype = 0; - } - else if(!strcmp(device->buf, "DOTS")) - { - devparms.displaytype = 1; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":ACQ:TYPE?") != 10) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "NORM")) - { - devparms.acquiretype = 0; - } - else if(!strcmp(device->buf, "AVER")) - { - devparms.acquiretype = 1; - } - else if(!strcmp(device->buf, "PEAK")) - { - devparms.acquiretype = 2; - } - else if(!strcmp(device->buf, "HRES")) - { - devparms.acquiretype = 3; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":ACQ:AVER?") != 10) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.acquireaverages = atoi(device->buf); - - usleep(TMC_GDS_DELAY); - - if(tmc_write(":DISP:GRAD:TIME?") != 16) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "MIN")) - { - devparms.displaygrading = 0; - } - else if(!strcmp(device->buf, "0.1")) - { - devparms.displaygrading = 1; - } - else if(!strcmp(device->buf, "0.2")) - { - devparms.displaygrading = 2; - } - else if(!strcmp(device->buf, "0.5")) - { - devparms.displaygrading = 5; - } - else if(!strcmp(device->buf, "1")) - { - devparms.displaygrading = 10; - } - else if(!strcmp(device->buf, "2")) - { - devparms.displaygrading = 20; - } - else if(!strcmp(device->buf, "5")) - { - devparms.displaygrading = 50; - } - else if(!strcmp(device->buf, "INF")) - { - devparms.displaygrading = 10000; - } - else - { - line = __LINE__; - goto OUT_ERROR; - } - - usleep(TMC_GDS_DELAY); - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:FFT:SPL?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - } - else - { - if(tmc_write(":MATH:FFT:SPL?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.math_fft_split = atoi(device->buf); - - usleep(TMC_GDS_DELAY); - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:MODE?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "FFT")) - { - devparms.math_fft = 1; - } - else - { - devparms.math_fft = 0; - } - } - else - { - if(tmc_write(":MATH:DISP?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.math_fft = atoi(device->buf); - - if(devparms.math_fft == 1) - { - usleep(TMC_GDS_DELAY); - - if(tmc_write(":MATH:OPER?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "FFT")) - { - devparms.math_fft = 1; - } - else - { - devparms.math_fft = 0; - } - } - } - - usleep(TMC_GDS_DELAY); - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:FFT:VSM?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - } - else - { - if(tmc_write(":MATH:FFT:UNIT?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "VRMS")) - { - devparms.fft_vscale = 0.5; - - devparms.fft_voffset = -2.0; - - devparms.math_fft_unit = 0; - } - else - { - devparms.fft_vscale = 10.0; - - devparms.fft_voffset = 20.0; - - devparms.math_fft_unit = 1; - } - - usleep(TMC_GDS_DELAY); - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:FFT:SOUR?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - } - else - { - if(tmc_write(":MATH:FFT:SOUR?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(!strcmp(device->buf, "CHAN1")) - { - devparms.math_fft_src = 0; - } - else if(!strcmp(device->buf, "CHAN2")) - { - devparms.math_fft_src = 1; - } - else if(!strcmp(device->buf, "CHAN3")) - { - devparms.math_fft_src = 2; - } - else if(!strcmp(device->buf, "CHAN4")) - { - devparms.math_fft_src = 3; - } - else - { - devparms.math_fft_src = 0; - } - - usleep(TMC_GDS_DELAY); - - devparms.current_screen_sf = 100.0 / devparms.timebasescale; - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:FFT:HSP?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.math_fft_hscale = atof(device->buf); - -// if(tmc_write(":CALC:FFT:HSC?") != 14) -// { -// line = __LINE__; -// goto OUT_ERROR; -// } -// -// if(tmc_read() < 1) -// { -// line = __LINE__; -// goto OUT_ERROR; -// } -// -// switch(atoi(device->buf)) -// { -// // case 0: devparms.math_fft_hscale = devparms.current_screen_sf / 80.0; -// // break; -// case 1: devparms.math_fft_hscale = devparms.current_screen_sf / 40.0; -// break; -// case 2: devparms.math_fft_hscale = devparms.current_screen_sf / 80.0; -// break; -// case 3: devparms.math_fft_hscale = devparms.current_screen_sf / 200.0; -// break; -// default: devparms.math_fft_hscale = devparms.current_screen_sf / 40.0; -// break; -// } - } - else - { - if(tmc_write(":MATH:FFT:HSC?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.math_fft_hscale = atof(device->buf); - } - - usleep(TMC_GDS_DELAY); - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:FFT:HCEN?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - } - else - { - if(tmc_write(":MATH:FFT:HCEN?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.math_fft_hcenter = atof(device->buf); - - usleep(TMC_GDS_DELAY); - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:FFT:VOFF?") != 15) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.fft_voffset = atof(device->buf); - } - else - { - if(tmc_write(":MATH:OFFS?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.fft_voffset = atof(device->buf); - } - - usleep(TMC_GDS_DELAY); - - if(devparms.modelserie != 1) - { - if(tmc_write(":CALC:FFT:VSC?") != 14) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(devparms.math_fft_unit == 1) - { - devparms.fft_vscale = atof(device->buf); - } - else - { - devparms.fft_vscale = atof(device->buf) * devparms.chanscale[devparms.math_fft_src]; - } - } - else - { - if(tmc_write(":MATH:SCAL?") != 11) - { - line = __LINE__; - goto OUT_ERROR; - } - - if(tmc_read() < 1) - { - line = __LINE__; - goto OUT_ERROR; - } - - devparms.fft_vscale = atof(device->buf); - } updateLabels(); - QApplication::restoreOverrideCursor(); - return 0; - -OUT_ERROR: - - QApplication::restoreOverrideCursor(); - - sprintf(str, "An error occurred while reading settings from device.\n" - "File %s line %i", __FILE__, line); - - QMessageBox msgBox; - msgBox.setIcon(QMessageBox::Critical); - msgBox.setText(str); - msgBox.exec(); - - return -1; } diff --git a/mainwindow.h b/mainwindow.h index 5d02f47..309adb3 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -84,6 +84,8 @@ #include "signalcurve.h" #include "settings_dialog.h" #include "screen_thread.h" +#include "lan_connect_thread.h" +#include "read_settings_thread.h" #include "third_party/kiss_fft/kiss_fftr.h" @@ -120,7 +122,7 @@ public: QTimer *scrn_timer, *label_timer; - screenThread *scrn_thread; + screen_thread *scrn_thread; private: diff --git a/mainwindow_constr.cpp b/mainwindow_constr.cpp index 945be2a..650ccef 100644 --- a/mainwindow_constr.cpp +++ b/mainwindow_constr.cpp @@ -136,7 +136,7 @@ UI_Mainwindow::UI_Mainwindow() devparms.mutexx = new QMutex(); - scrn_thread = new screenThread; + scrn_thread = new screen_thread; scrn_thread->set_device(NULL); menubar = menuBar(); diff --git a/read_settings_thread.cpp b/read_settings_thread.cpp new file mode 100644 index 0000000..db7bea9 --- /dev/null +++ b/read_settings_thread.cpp @@ -0,0 +1,1543 @@ +/* +*************************************************************************** +* +* Author: Teunis van Beelen +* +* Copyright (C) 2016 Teunis van Beelen +* +* Email: teuniz@gmail.com +* +*************************************************************************** +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +*************************************************************************** +*/ + + +#include "read_settings_thread.h" + + +read_settings_thread::read_settings_thread() +{ + device = NULL; + + err_str[0] = 0; + + err_num = -1; + + devparms = NULL; +} + + +int read_settings_thread::get_error_num(void) +{ + return err_num; +} + + +void read_settings_thread::get_error_str(char *dest) +{ + strcpy(dest, err_str); +} + + +void read_settings_thread::set_device(struct tmcdev *dev) +{ + device = dev; +} + + +void read_settings_thread::set_devparm_ptr(struct device_settings *devp) +{ + devparms = devp; +} + + +void read_settings_thread::run() +{ + int chn, line=0; + + char str[512]; + + err_num = -1; + + if(device == NULL) return; + + if(devparms == NULL) return; + + devparms->activechannel = -1; + + for(chn=0; chnchannel_cnt; chn++) + { + sprintf(str, ":CHAN%i:BWL?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "20M")) + { + devparms->chanbwlimit[chn] = 20; + } + else if(!strcmp(device->buf, "250M")) + { + devparms->chanbwlimit[chn] = 250; + } + else if(!strcmp(device->buf, "OFF")) + { + devparms->chanbwlimit[chn] = 0; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + sprintf(str, ":CHAN%i:COUP?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 12) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "AC")) + { + devparms->chancoupling[chn] = 2; + } + else if(!strcmp(device->buf, "DC")) + { + devparms->chancoupling[chn] = 1; + } + else if(!strcmp(device->buf, "GND")) + { + devparms->chancoupling[chn] = 0; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + sprintf(str, ":CHAN%i:DISP?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 12) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "0")) + { + devparms->chandisplay[chn] = 0; + } + else if(!strcmp(device->buf, "1")) + { + devparms->chandisplay[chn] = 1; + + if(devparms->activechannel == -1) + { + devparms->activechannel = chn; + } + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(devparms->modelserie != 1) + { + sprintf(str, ":CHAN%i:IMP?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "OMEG")) + { + devparms->chanimpedance[chn] = 0; + } + else if(!strcmp(device->buf, "FIFT")) + { + devparms->chanimpedance[chn] = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + sprintf(str, ":CHAN%i:INV?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "0")) + { + devparms->chaninvert[chn] = 0; + } + else if(!strcmp(device->buf, "1")) + { + devparms->chaninvert[chn] = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + sprintf(str, ":CHAN%i:OFFS?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 12) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->chanoffset[chn] = atof(device->buf); + + sprintf(str, ":CHAN%i:PROB?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 12) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->chanprobe[chn] = atof(device->buf); + + sprintf(str, ":CHAN%i:SCAL?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 12) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->chanscale[chn] = atof(device->buf); + + sprintf(str, ":CHAN%i:VERN?", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 12) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "0")) + { + devparms->chanvernier[chn] = 0; + } + else if(!strcmp(device->buf, "1")) + { + devparms->chanvernier[chn] = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:OFFS?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->timebaseoffset = atof(device->buf); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:SCAL?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->timebasescale = atof(device->buf); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:DEL:ENAB?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "0")) + { + devparms->timebasedelayenable = 0; + } + else if(!strcmp(device->buf, "1")) + { + devparms->timebasedelayenable = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:DEL:OFFS?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->timebasedelayoffset = atof(device->buf); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:DEL:SCAL?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->timebasedelayscale = atof(device->buf); + + if(devparms->modelserie != 1) + { + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:HREF:MODE?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "CENT")) + { + devparms->timebasehrefmode = 0; + } + else if(!strcmp(device->buf, "TPOS")) + { + devparms->timebasehrefmode = 1; + } + else if(!strcmp(device->buf, "USER")) + { + devparms->timebasehrefmode = 2; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:HREF:POS?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->timebasehrefpos = atoi(device->buf); + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:MODE?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "MAIN")) + { + devparms->timebasemode = 0; + } + else if(!strcmp(device->buf, "XY")) + { + devparms->timebasemode = 1; + } + else if(!strcmp(device->buf, "ROLL")) + { + devparms->timebasemode = 2; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(devparms->modelserie != 1) + { + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:VERN?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "0")) + { + devparms->timebasevernier = 0; + } + else if(!strcmp(device->buf, "1")) + { + devparms->timebasevernier = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if((devparms->modelserie != 1) && (devparms->modelserie != 2)) + { + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:XY1:DISP?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "0")) + { + devparms->timebasexy1display = 0; + } + else if(!strcmp(device->buf, "1")) + { + devparms->timebasexy1display = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TIM:XY2:DISP?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "0")) + { + devparms->timebasexy2display = 0; + } + else if(!strcmp(device->buf, "1")) + { + devparms->timebasexy2display = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:COUP?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "AC")) + { + devparms->triggercoupling = 0; + } + else if(!strcmp(device->buf, "DC")) + { + devparms->triggercoupling = 1; + } + else if(!strcmp(device->buf, "LFR")) + { + devparms->triggercoupling = 2; + } + else if(!strcmp(device->buf, "HFR")) + { + devparms->triggercoupling = 3; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:SWE?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "AUTO")) + { + devparms->triggersweep = 0; + } + else if(!strcmp(device->buf, "NORM")) + { + devparms->triggersweep = 1; + } + else if(!strcmp(device->buf, "SING")) + { + devparms->triggersweep = 2; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:MODE?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "EDGE")) + { + devparms->triggermode = 0; + } + else if(!strcmp(device->buf, "PULS")) + { + devparms->triggermode = 1; + } + else if(!strcmp(device->buf, "SLOP")) + { + devparms->triggermode = 2; + } + else if(!strcmp(device->buf, "VID")) + { + devparms->triggermode = 3; + } + else if(!strcmp(device->buf, "PATT")) + { + devparms->triggermode = 4; + } + else if(!strcmp(device->buf, "RS232")) + { + devparms->triggermode = 5; + } + else if(!strcmp(device->buf, "IIC")) + { + devparms->triggermode = 6; + } + else if(!strcmp(device->buf, "SPI")) + { + devparms->triggermode = 7; + } + else if(!strcmp(device->buf, "CAN")) + { + devparms->triggermode = 8; + } + else if(!strcmp(device->buf, "USB")) + { + devparms->triggermode = 9; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:STAT?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "TD")) + { + devparms->triggerstatus = 0; + } + else if(!strcmp(device->buf, "WAIT")) + { + devparms->triggerstatus = 1; + } + else if(!strcmp(device->buf, "RUN")) + { + devparms->triggerstatus = 2; + } + else if(!strcmp(device->buf, "AUTO")) + { + devparms->triggerstatus = 3; + } + else if(!strcmp(device->buf, "FIN")) + { + devparms->triggerstatus = 4; + } + else if(!strcmp(device->buf, "STOP")) + { + devparms->triggerstatus = 5; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:EDG:SLOP?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "POS")) + { + devparms->triggeredgeslope = 0; + } + else if(!strcmp(device->buf, "NEG")) + { + devparms->triggeredgeslope = 1; + } + else if(!strcmp(device->buf, "RFAL")) + { + devparms->triggeredgeslope = 2; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:EDG:SOUR?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "CHAN1")) + { + devparms->triggeredgesource = 0; + } + else if(!strcmp(device->buf, "CHAN2")) + { + devparms->triggeredgesource = 1; + } + else if(!strcmp(device->buf, "CHAN3")) + { + devparms->triggeredgesource = 2; + } + else if(!strcmp(device->buf, "CHAN4")) + { + devparms->triggeredgesource = 3; + } + else if(!strcmp(device->buf, "EXT")) + { + devparms->triggeredgesource = 4; + } + else if(!strcmp(device->buf, "EXT5")) + { + devparms->triggeredgesource = 5; + } // DS1000Z: "AC", DS6000: "ACL" !! + else if((!strcmp(device->buf, "AC")) || (!strcmp(device->buf, "ACL"))) + { + devparms->triggeredgesource = 6; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + for(chn=0; chnchannel_cnt; chn++) + { + sprintf(str, ":TRIG:EDG:SOUR CHAN%i", chn + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 20) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:EDG:LEV?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->triggeredgelevel[chn] = atof(device->buf); + } + + if(devparms->triggeredgesource < 4) + { + sprintf(str, ":TRIG:EDG:SOUR CHAN%i", devparms->triggeredgesource + 1); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(str) != 20) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if(devparms->triggeredgesource== 4) + { + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:EDG:SOUR EXT") != 18) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if(devparms->triggeredgesource== 5) + { + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:EDG:SOUR EXT5") != 19) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if(devparms->triggeredgesource== 6) + { + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:EDG:SOUR AC") != 17) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":TRIG:HOLD?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->triggerholdoff = atof(device->buf); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":ACQ:SRAT?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->samplerate = atof(device->buf); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":DISP:GRID?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "NONE")) + { + devparms->displaygrid = 0; + } + else if(!strcmp(device->buf, "HALF")) + { + devparms->displaygrid = 1; + } + else if(!strcmp(device->buf, "FULL")) + { + devparms->displaygrid = 2; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":MEAS:COUN:SOUR?") != 16) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "OFF")) + { + devparms->countersrc = 0; + } + else if(!strcmp(device->buf, "CHAN1")) + { + devparms->countersrc = 1; + } + else if(!strcmp(device->buf, "CHAN2")) + { + devparms->countersrc = 2; + } + else if(!strcmp(device->buf, "CHAN3")) + { + devparms->countersrc = 3; + } + else if(!strcmp(device->buf, "CHAN4")) + { + devparms->countersrc = 4; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":DISP:TYPE?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "VECT")) + { + devparms->displaytype = 0; + } + else if(!strcmp(device->buf, "DOTS")) + { + devparms->displaytype = 1; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":ACQ:TYPE?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "NORM")) + { + devparms->acquiretype = 0; + } + else if(!strcmp(device->buf, "AVER")) + { + devparms->acquiretype = 1; + } + else if(!strcmp(device->buf, "PEAK")) + { + devparms->acquiretype = 2; + } + else if(!strcmp(device->buf, "HRES")) + { + devparms->acquiretype = 3; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":ACQ:AVER?") != 10) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->acquireaverages = atoi(device->buf); + + usleep(TMC_GDS_DELAY); + + if(tmc_write(":DISP:GRAD:TIME?") != 16) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "MIN")) + { + devparms->displaygrading = 0; + } + else if(!strcmp(device->buf, "0.1")) + { + devparms->displaygrading = 1; + } + else if(!strcmp(device->buf, "0.2")) + { + devparms->displaygrading = 2; + } + else if(!strcmp(device->buf, "0.5")) + { + devparms->displaygrading = 5; + } + else if(!strcmp(device->buf, "1")) + { + devparms->displaygrading = 10; + } + else if(!strcmp(device->buf, "2")) + { + devparms->displaygrading = 20; + } + else if(!strcmp(device->buf, "5")) + { + devparms->displaygrading = 50; + } + else if(!strcmp(device->buf, "INF")) + { + devparms->displaygrading = 10000; + } + else + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + usleep(TMC_GDS_DELAY); + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:FFT:SPL?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + else + { + if(tmc_write(":MATH:FFT:SPL?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->math_fft_split = atoi(device->buf); + + usleep(TMC_GDS_DELAY); + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:MODE?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "FFT")) + { + devparms->math_fft = 1; + } + else + { + devparms->math_fft = 0; + } + } + else + { + if(tmc_write(":MATH:DISP?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->math_fft = atoi(device->buf); + + if(devparms->math_fft == 1) + { + usleep(TMC_GDS_DELAY); + + if(tmc_write(":MATH:OPER?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "FFT")) + { + devparms->math_fft = 1; + } + else + { + devparms->math_fft = 0; + } + } + } + + usleep(TMC_GDS_DELAY); + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:FFT:VSM?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + else + { + if(tmc_write(":MATH:FFT:UNIT?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "VRMS")) + { + devparms->fft_vscale = 0.5; + + devparms->fft_voffset = -2.0; + + devparms->math_fft_unit = 0; + } + else + { + devparms->fft_vscale = 10.0; + + devparms->fft_voffset = 20.0; + + devparms->math_fft_unit = 1; + } + + usleep(TMC_GDS_DELAY); + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:FFT:SOUR?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + else + { + if(tmc_write(":MATH:FFT:SOUR?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(!strcmp(device->buf, "CHAN1")) + { + devparms->math_fft_src = 0; + } + else if(!strcmp(device->buf, "CHAN2")) + { + devparms->math_fft_src = 1; + } + else if(!strcmp(device->buf, "CHAN3")) + { + devparms->math_fft_src = 2; + } + else if(!strcmp(device->buf, "CHAN4")) + { + devparms->math_fft_src = 3; + } + else + { + devparms->math_fft_src = 0; + } + + usleep(TMC_GDS_DELAY); + + devparms->current_screen_sf = 100.0 / devparms->timebasescale; + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:FFT:HSP?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->math_fft_hscale = atof(device->buf); + +// if(tmc_write(":CALC:FFT:HSC?") != 14) +// { +// line = __LINE__; +// goto GDS_OUT_ERROR; +// } +// +// if(tmc_read() < 1) +// { +// line = __LINE__; +// goto GDS_OUT_ERROR; +// } +// +// switch(atoi(device->buf)) +// { +// // case 0: devparms->math_fft_hscale = devparms->current_screen_sf / 80.0; +// // break; +// case 1: devparms->math_fft_hscale = devparms->current_screen_sf / 40.0; +// break; +// case 2: devparms->math_fft_hscale = devparms->current_screen_sf / 80.0; +// break; +// case 3: devparms->math_fft_hscale = devparms->current_screen_sf / 200.0; +// break; +// default: devparms->math_fft_hscale = devparms->current_screen_sf / 40.0; +// break; +// } + } + else + { + if(tmc_write(":MATH:FFT:HSC?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->math_fft_hscale = atof(device->buf); + } + + usleep(TMC_GDS_DELAY); + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:FFT:HCEN?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + else + { + if(tmc_write(":MATH:FFT:HCEN?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->math_fft_hcenter = atof(device->buf); + + usleep(TMC_GDS_DELAY); + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:FFT:VOFF?") != 15) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->fft_voffset = atof(device->buf); + } + else + { + if(tmc_write(":MATH:OFFS?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->fft_voffset = atof(device->buf); + } + + usleep(TMC_GDS_DELAY); + + if(devparms->modelserie != 1) + { + if(tmc_write(":CALC:FFT:VSC?") != 14) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(devparms->math_fft_unit == 1) + { + devparms->fft_vscale = atof(device->buf); + } + else + { + devparms->fft_vscale = atof(device->buf) * devparms->chanscale[devparms->math_fft_src]; + } + } + else + { + if(tmc_write(":MATH:SCAL?") != 11) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + if(tmc_read() < 1) + { + line = __LINE__; + goto GDS_OUT_ERROR; + } + + devparms->fft_vscale = atof(device->buf); + } + + err_num = 0; + + return; + +GDS_OUT_ERROR: + + snprintf(err_str, 4095, + "An error occurred while reading settings from device.\n" + "File %s line %i", __FILE__, line); + + err_num = -1; + + return; +} + + + + + + + + + + + + + + + + + diff --git a/read_settings_thread.h b/read_settings_thread.h new file mode 100644 index 0000000..d8cb066 --- /dev/null +++ b/read_settings_thread.h @@ -0,0 +1,97 @@ +/* +*************************************************************************** +* +* Author: Teunis van Beelen +* +* Copyright (C) 2016 Teunis van Beelen +* +* Email: teuniz@gmail.com +* +*************************************************************************** +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +*************************************************************************** +*/ + + +#ifndef DEF_READ_SETTINGS_THREAD_H +#define DEF_READ_SETTINGS_THREAD_H + + +#include +#include +#include +#include + +#include +#include + +#include "global.h" +#include "utils.h" +#include "connection.h" +#include "tmc_dev.h" + + + +class read_settings_thread : public QThread +{ + Q_OBJECT + +public: + + read_settings_thread(); + + void set_device(struct tmcdev *); + void set_devparm_ptr(struct device_settings *); + int get_error_num(void); + void get_error_str(char *); + +private: + + struct tmcdev *device; + struct device_settings *devparms; + + char err_str[4096]; + + int err_num; + + void run(); +}; + + + +#endif + + + + + + + + + + + + + + + + + + + + + + diff --git a/screen_thread.cpp b/screen_thread.cpp index 8da6242..e142770 100644 --- a/screen_thread.cpp +++ b/screen_thread.cpp @@ -33,7 +33,7 @@ #define SPECT_LOG_MINIMUM_LOG (-80) -void screenThread::set_device(struct tmcdev *tmdev) +void screen_thread::set_device(struct tmcdev *tmdev) { params.cmd_cue_idx_in = 0; params.cmd_cue_idx_out = 0; @@ -43,7 +43,7 @@ void screenThread::set_device(struct tmcdev *tmdev) } -screenThread::screenThread() +screen_thread::screen_thread() { int i; @@ -62,7 +62,7 @@ screenThread::screenThread() } -screenThread::~screenThread() +screen_thread::~screen_thread() { int i; @@ -73,7 +73,7 @@ screenThread::~screenThread() } -void screenThread::set_params(struct device_settings *dev_parms) +void screen_thread::set_params(struct device_settings *dev_parms) { deviceparms = dev_parms; params.connected = deviceparms->connected; @@ -101,7 +101,7 @@ void screenThread::set_params(struct device_settings *dev_parms) } -void screenThread::get_params(struct device_settings *dev_parms) +void screen_thread::get_params(struct device_settings *dev_parms) { int i; @@ -147,7 +147,7 @@ void screenThread::get_params(struct device_settings *dev_parms) } -int screenThread::get_devicestatus() +int screen_thread::get_devicestatus() { int line; @@ -293,7 +293,7 @@ OUT_ERROR: } -void screenThread::run() +void screen_thread::run() { int i, j, k, n=0, chns=0, line, cmd_sent=0; diff --git a/screen_thread.h b/screen_thread.h index 76a499d..df97f46 100644 --- a/screen_thread.h +++ b/screen_thread.h @@ -48,14 +48,14 @@ -class screenThread : public QThread +class screen_thread : public QThread { Q_OBJECT public: - screenThread(); - ~screenThread(); + screen_thread(); + ~screen_thread(); int h_busy;