Exercise+9

=QT - multimeter / funktionsgenerator.=

GUI’et skal have følgende interfaces: · Visning af målte (ADC) og emittede (DAC) spændinger (digital, analog viser instrument eller graf) [0-2.048V] · Valg af generator waveform (trekant, firkant) · Valg af frekvens [0-10 KHz] · Valg af udgangsspænding [0-2.048 V] Det nederste tal er vores frekvens.

=Hovedtråden= skal opretter to tråde: HandleDAC og HandleADC. Når man skal oprette tråde i QT, gøres det ved at arve fra QThread (husk: #include 
 * 2) include 

using namespace std;

class DAChandler : public QThread {   Q_OBJECT

public: DAChandler; code Herunder ses hvordan de to tråde startes. code format="cpp" // oprettelse af objekter ADChandler adcObj; DAChandler dacObj; // Trådende startes adcObj.start; dacObj.start; code

=HandleADC= Skal emitte data med et interval på 5Hz. Usleep benyttes som timer. Vi har lavet en funktion i klassen "HandleADC", som laver vores udregning og til sidst emitter resultatet med adcHandlerLCD (signal) Dette resultat modtager vores gui, og det vises på et LCD-display code format="cpp" // connect ADC connect (&adcObj, SIGNAL(adcHandlerLCD(double)), ui.lcdNumber, SLOT(display(double))); code

=HandleDAC= Skal modtage information om hvad vores frekvens og udgangsspænding er, disse modtages via et slot. De bruges af en funktion i klassen HandleDAC til at udregne det korrekt output. code format="cpp" // Modtage data fra scrollbar connect (ui.udgangsspaendingScrollBar, SIGNAL(valueChanged(int)), &dacObj, SLOT(recvSatspaending(int))); connect (ui.frekvensScrollBar, SIGNAL(valueChanged(int)), &dacObj, SLOT(recvSatfrekvens(int))); // udregning sendes til GUI connect (&dacObj, SIGNAL(dacHandlerLCD(int)), ui.lcdNumber_2, SLOT(display(int))); // connect waveform connect (ui.trekant_signal_radioButton, SIGNAL(clicked), &dacObj, SLOT(setWaveFormTre)); connect (ui.firekant_signal_radioButton, SIGNAL(clicked), &dacObj, SLOT(setWaveFormFire)); code

=QT timer= Der oprettes et slot code format="cpp" private slots: void setTimer(int f) {timer.setInterval(f); } code dette bruges på følgende måde code format="cpp" // oprettelse af timerobjekt  QTimer timer;

// timerobjekt startes  timer.start(1);

// forbindelse til timer slot connect(&dacObj, SIGNAL(frekvensValue(int)),this, SLOT(setTimer(int)));

// connection mellem timer og dac, som er et slot, med udregningerne ligesom HandleDAC  connect(&timer, SIGNAL(timeout), &dacObj, SLOT(dac)); code

emit, signal, slots bruges når man connecter noget sammen: Dette består af 4 dele f. eks.: code format="cpp" connect(&timer, SIGNAL(timeout), &dacObj, SLOT(dac)); code
 * &timer (første): er sender objekt
 * SIGNAL (anden): er et signal som indeholder den information som skal sendes videre, gøres ved at emitte "emit "
 * &dacObj (tredje): Modtager objekt.
 * SLOT (fjerde): hvilket slot/funktion der skal køre