Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Code as text



  • main.cpp

    #include "form.h"
    #include <QApplication>
    #include "ui_menuwindow.h"

    int main(int argc, char*argv[] ) {
    QApplication app(argc, argv);
    MWindow window;
    window.show();
    return app.exec();
    }

    form.h

    /media/ubuntu/rootfs/home/debian/jauk/Signalgenerator/CW/CW
    #ifndef FORM_H
    #define FORM_H
    #include <QMainWindow>
    #include <QMessageBox>
    #include "ui_cwwindow.h"
    #include "ui_menuwindow.h"

    const long fosc = 171798692 ; //Quartzoscillator frequency

    class MWindow : public QMainWindow, private Ui::CwWindow {

    Q_OBJECT

    public:
    MWindow(); // constructor
    ~MWindow() {} // destructor

    double get_FR();
    unsigned char get_Fb();
    long long get_YIGFr();
    unsigned int get_YIGDA();
    unsigned int get_YIGFilter();
    unsigned char get_Ndiv();
    //double get_FrDDS();
    long get_Phase();
    unsigned char get_Koswitch();
    unsigned char get_Att();
    unsigned int get_Pow();

    private slots:
    void analyseDialog();
    void updatef();
    void updatep();

    private:
    double FR ; // input frequency [Hz]
    double P; // output power [dBm] or [mW]
    unsigned char Fb ; // frequency range
    long long YIGFr ; //requiered YIG frequency
    unsigned int YIGDA ; //requiered YIG D/A
    unsigned int YIGFilter ; //requiered YIG Filter
    unsigned char Ndiv ; //divider factor for PLL SDI
    //double FrDDS ; //requiered DDS frequency = YIGFR/Ndiv -fosc (18667400.00Hz <= FrDDS <= 28201308.00Hz)
    long Phase ; //decimal value of 32-bit frequency tuning word for DDS AD9851 = 25*FrDDS
    unsigned char Koswitch ; //koaxswitch 3 to 8 decoder HCT 238
    unsigned char Att ; //60dB attenuator step 10dB
    unsigned int Pow; // input power range fine (0 - 10dB) SDI

    int decimals ;
    double minimum;
    double maximum;

    };

    #endif

    form.cpp

    #include "form.h"
    #include "i2ccwn.h"
    #include <math.h>

    //Constructor

    MWindow::MWindow() {

    setupUi(this);

          //Signal-Slot connection
    

    connect( pushButton_2, SIGNAL( clicked() ),
    this, SLOT(analyseDialog() ) );

    connect( pushButton, SIGNAL( clicked() ),
    qApp, SLOT(quit() ) );

    connect( pushButton_2, SIGNAL( clicked() ),
    this, SLOT(updatef() ) );

    connect( pushButton_2, SIGNAL( clicked() ),
    this, SLOT(updatep() ) );
    }

    void MWindow::analyseDialog() {
    if(comboBox->currentText() == "GHz" ) {
    doubleSpinBox->setMaximum ( 31.999999999 );
    doubleSpinBox->setDecimals( 9 );
    }

    else if(comboBox->currentText() == "MHz" ) {
    doubleSpinBox->setMaximum ( 31999.999999 );
    doubleSpinBox->setDecimals( 6 );
    }

    else if(comboBox->currentText() == "KHz" ) {
    doubleSpinBox->setMaximum ( 31999999.999 );
    doubleSpinBox->setDecimals( 3 );

    }

    else if(comboBox->currentText() == "Hz" ) {
    doubleSpinBox->setMaximum ( 31999999999 );
    doubleSpinBox->setDecimals( 0 );
    }

    if( comboBox_2->currentText() == "dBm" ) {
    doubleSpinBox_2-> setDecimals( 2 ) ;
    doubleSpinBox_2-> setMinimum( -50.00 ) ;
    doubleSpinBox_2-> setMaximum( 20.00 ) ;
    }

    else if( comboBox_2->currentText() == "mW" ) {
      doubleSpinBox_2-> setDecimals( 5 ) ; 
      doubleSpinBox_2-> setMinimum( 0.00001 ) ;
      doubleSpinBox_2-> setMaximum( 100.00000 ) ;
    

    }

    } // End of "analyseDialog()"

    double MWindow::get_FR() {
    if(comboBox->currentText() == "GHz" ) {
    FR = doubleSpinBox->value() * 1000000000;
    return FR;
    }

    else if(comboBox->currentText() == "MHz" ) {
    FR = doubleSpinBox->value() * 1000000;
    return FR;
    }

    else if(comboBox->currentText() == "KHz" ) {
    FR = doubleSpinBox->value() * 1000;
    return FR;
    }

    else if(comboBox->currentText() == "Hz" ) {
    FR = doubleSpinBox->value();
    return FR;
    }
    } // End of "get_FR"

    unsigned char MWindow::get_Fb() {

    //get_FR(); Segmentation fault
    //cw->get_FR(); -------"----------
    //this->get_FR(); -------"----------

    if( FR < 62500000 ) { "
    Fb = 0; "
    return Fb; "
    }

    else if( (FR >= 62500000E+6) && (FR < 125000000 ) ) {
    Fb = ( FR < 88000000 ) ?1 : 2;
    return Fb;
    }

    else if( (FR >= 125000000) && (FR < 250000000 ) ) {
    Fb = ( FR < 177000000 ) ?3 : 4;
    return Fb;
    }

    else if( (FR >= 250000000) && (FR < 500000000 ) ) {
    Fb = ( FR < 353000000 ) ?5 : 6;
    return Fb;
    }

    else if( (FR >= 500000000) && (FR < 1000000000 ) ) {
    Fb = ( FR < 707000000 ) ?7 : 8;
    return Fb;
    }

    else if( (FR >= 1000000000) && (FR < 2000000000 ) ) {
    Fb = ( FR < 1400000000 ) ?9 : 10;
    return Fb;
    }

    else if( (FR >= 2000000000) && (FR < 4000000000 ) ) {
    Fb = ( FR < 2800000000 ) ?11 : 12;
    return Fb;
    }

    else if( (FR >= 4000000000) && (FR < 8000000000 ) ) {
    Fb = ( FR < 5600000000 ) ?13 : 14;
    return Fb;
    }

    else if( (FR >= 8000000000) && (FR < 16000000000 ) ) {
    Fb = ( FR < 11200000000 ) ?15 : 16;
    return Fb;
    }

    else if( (FR >= 16000000000) && (FR < 32000000000 ) ) {
    Fb = ( FR < 22400000000 ) ?17 : 18;
    return Fb;
    }

    // Fb = 12;
    // returnFb; Segmentation fault

    return 12;  // OK without 'Segmentation fault' ...gibt '12' über I2C-Bus aus
    

    } //End of "get_Fb"

    unsigned char MWindow::get_Att() {
    if( (comboBox_2->currentText() == "dBm" ) ) {
    if( (doubleSpinBox_2-> value() > 10.0 ) && (doubleSpinBox_2-> value() <= 20.0 ) ) {
    Att = 0 ;
    return Att;
    }
    else if( (doubleSpinBox_2-> value() > 0.0 ) && (doubleSpinBox_2-> value() <= 10.0 ) ) {
    Att = 10 ;
    return Att;
    }

     else if( (doubleSpinBox_2-> value() > -10.0 ) && (doubleSpinBox_2-> value() <= 0.0 ) ) {
       Att = 20 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > -20.0 ) && (doubleSpinBox_2-> value() <= -10.0 ) ) {
       Att = 30 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > -30.0 ) && (doubleSpinBox_2-> value() <= -20.0 ) ) {
       Att = 40 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > -40.0 ) && (doubleSpinBox_2-> value() <= -30.0 ) ) {
       Att = 50 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > -50.0 ) && (doubleSpinBox_2-> value() <= -40.0 ) ) {
       Att = 60 ;
       return Att;
     }
    

    }

    else if( (comboBox_2->currentText() == "mW" ) ) {
    if( (doubleSpinBox_2-> value() > 10.0 ) && (doubleSpinBox_2-> value() <= 100.0 ) ) {
    Att = 0 ;
    return Att;
    }

     else if( (doubleSpinBox_2-> value() > 1.0 ) && (doubleSpinBox_2-> value() <= 10.0 ) ) {
       Att = 10 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > 0.1 ) && (doubleSpinBox_2-> value() <= 1.0 ) ) {
       Att = 20 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > 0.01 ) && (doubleSpinBox_2-> value() <= 0.1 ) ) {
       Att = 30 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > 0.001 ) && (doubleSpinBox_2-> value() <= 0.01 ) ) {
       Att = 40 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > 0.0001 ) && (doubleSpinBox_2-> value() <= 0.001 ) ) {
       Att = 50 ;
       return Att;
     }
    
     else if( (doubleSpinBox_2-> value() > 0.00001 ) && (doubleSpinBox_2-> value() <= 0.0001 ) ) {
       Att = 60 ;
       return Att;
     }
    

    }

    } //End of "get_Att()"

    unsigned int MWindow::get_Pow() {
    if( (comboBox_2->currentText() == "dBm" ) ) {
    if( (doubleSpinBox_2-> value() > 10.0 ) && (doubleSpinBox_2-> value() <= 20.0 ) ) {
    Pow = ( (doubleSpinBox_2-> value()-10.0) / 10) * 65536 ;
    return Pow;
    }

     else if( (doubleSpinBox_2-> value() > 0.0 ) && (doubleSpinBox_2-> value() <= 10.0 ) ) {
       Pow = ( (doubleSpinBox_2-> value()-0.0 ) / 10) * 6/7 * 65536 ;
       return Pow;
     }
    
     else if( (doubleSpinBox_2-> value() > -10.0 ) && (doubleSpinBox_2-> value() <= 0.0 ) ) {
       Pow = ( (doubleSpinBox_2-> value()+10.0 ) / 10) * 5/7 * 65536 ;
       return Pow;
      }
    
     else if( (doubleSpinBox_2-> value() > -20.0 ) && (doubleSpinBox_2-> value() <= -10.0 ) ) {
       Pow = ( (doubleSpinBox_2-> value()+20.0 ) / 10) * 4/7 * 65536 ;
       return Pow;
      }
    
     else if( (doubleSpinBox_2-> value() > -30.0 ) && (doubleSpinBox_2-> value() <= -20.0 ) ) {
       Pow = ( (doubleSpinBox_2-> value()+30.0 ) / 10) * 3/7 * 65536 ;
       return Pow;
      }
    
     else if( (doubleSpinBox_2-> value() > -40.0 ) && (doubleSpinBox_2-> value() <= -30.0 ) ) {
       Pow = ( (doubleSpinBox_2-> value()+40.0 ) / 10) * 2/7 * 65536 ;
       return Pow;
      }
    
     else if( (doubleSpinBox_2-> value() > -50.0 ) && (doubleSpinBox_2-> value() <= -40.0 ) ) {
       Pow = ( (doubleSpinBox_2-> value()+50.0 ) / 10) * 1/7 * 65536 ;
       return Pow;
      }
    

    }

    else if( (comboBox_2->currentText() == "mW" ) ) {
    if( (doubleSpinBox_2-> value() > 10.0 ) && (doubleSpinBox_2-> value() <= 100.0 ) ) {
    // Pow = (log10(doubleSpinBox_2-> value() ) -log10(10.0) ) * 65536.0 ;
    Pow = log10(doubleSpinBox_2-> value() / 10.0 ) * 65536.0 ;
    return Pow;
    }

     else if( (doubleSpinBox_2-> value() > 1.0 ) && (doubleSpinBox_2-> value() <= 10.0 ) ) {
    

    // Pow = (log10(doubleSpinBox_2-> value() ) -log10(1.0) ) * 65536.0 ;
    Pow = log10(doubleSpinBox_2-> value() / 1.0 ) * 6/7 * 65536.0 ;
    return Pow;
    }

     else if( (doubleSpinBox_2-> value() > 0.1 ) && (doubleSpinBox_2-> value() <= 1.0 ) ) {
    

    // Pow = (log10(doubleSpinBox_2-> value() ) -log10(0.1) ) * 5/7 * 65536.0 ;
    Pow = log10(doubleSpinBox_2-> value() / 0.1 ) * 5/7 * 65536.0 ;
    return Pow;
    }

     else if( (doubleSpinBox_2-> value() > 0.01 ) && (doubleSpinBox_2-> value() <= 0.1 ) ) {
    

    // Pow = (log10(doubleSpinBox_2-> value() ) -log10(0.01) ) * 4/7 * 65536.0 ;
    Pow = log10(doubleSpinBox_2-> value() / 0.01 ) * 4/7 * 65536.0 ;
    return Pow;
    }

     else if( (doubleSpinBox_2-> value() > 0.001 ) && (doubleSpinBox_2-> value() <= 0.01 ) ) {
    

    // Pow = (log10(doubleSpinBox_2-> value() ) -log10(0.001) ) * 3/7 * 65536.0 ;
    Pow = log10(doubleSpinBox_2-> value() / 0.001 ) * 3/7 * 65536.0
    Pow = log10(doubleSpinBox_2-> value() / 0.0001 ) * 2/7 * 65536.0 ;
    return Pow;
    }

     else if( (doubleSpinBox_2-> value() > 0.00001 ) && (doubleSpinBox_2-> value() <= 0.0001 ) ) {
    

    // Pow = (log10(doubleSpinBox_2-> value() ) -log10(0.00001) ) * 1/7 * 65536.0 ;
    Pow = log10(doubleSpinBox_2-> value() / 0.00001 ) * 1/7 * 65536.0 ;
    return Pow;
    }

    }

    } // End of "get Pow"

    long long MWindow::get_YIGFr() {
    if( (FR >= 62500000) && (FR < 125000000 ) ) {
    YIGFr = FR * 64;
    return YIGFr ;
    }

    else if( (FR >= 125000000) && (FR < 250000000 ) ) {
    YIGFr = FR * 32;
    return YIGFr ;
    }

    else if( (FR >= 250000000) && (FR < 500000000 ) ) {
    YIGFr = FR * 16;
    return YIGFr ;
    }

    else if( (FR >= 500000000) && (FR < 1000000000 ) ) {
    YIGFr = FR * 8;
    return YIGFr ;
    }

    else if( (FR >= 1000000000) && (FR < 2000000000 ) ) {
    YIGFr = FR * 4;
    return YIGFr ;
    }

    else if( (FR >= 2000000000) && (FR < 4000000000 ) ) {
    YIGFr = FR * 2;
    return YIGFr ;
    }

    else if( (FR >= 4000000000) && (FR < 8000000000 ) ) {
    YIGFr = FR ;
    return YIGFr ;
    }

    else if( (FR >= 8000000000) && (FR < 16000000000 ) ) {
    YIGFr = FR / 2;
    return YIGFr ;
    }

    else if( (FR >= 16000000000) && (FR < 32000000000 ) ) {
    YIGFr = FR / 4;
    return YIGFr ;
    }

    } // End of "get_YIGFr()

    unsigned int MWindow::get_YIGDA() {
    YIGDA = (YIGFr/4000000000 -1) * 65536 ;
    return YIGDA ;
    } // End of "get_YIGDA()"

    unsigned int MWindow::get_YIGFilter() {
    YIGFilter = (YIGFr/4000000000 -1) * 65536 ;
    return YIGFilter ;
    } // End of "get_YIGFilter()"

    unsigned char MWindow::get_Koswitch() {
    if ( FR < 10000000 ) {
    Koswitch = 0b00000000 ;
    return Koswitch;
    }

    else if( ( FR >= 10000000) && ( FR < 62500000) ) {
    Koswitch = 0b00100000 ;
    return Koswitch;
    }

    else if( ( FR >= 62500000) && ( FR < 4000000000) ) {
    Koswitch = 0b01000000 ;
    return Koswitch;
    }

    else if( ( FR >= 4000000000) && ( FR < 8000000000) ) {
    Koswitch = 0b01100000 ;
    return Koswitch;
    }

    else if( ( FR >= 8000000000) && ( FR < 16000000000) ) {
    Koswitch = 0b10000000 ;
    return Koswitch;
    }

    else if( ( FR >= 16000000000) && ( FR < 32000000000) ) {
    Koswitch = 0b10100000 ;
    return Koswitch;
    }

    } //End of "get_Koswitch()"

    unsigned char MWindow::get_Ndiv() {
    int n={0},FrDDS={0};
    if( YIGFr > 6000000000) {
    // (( n >= 31 ) && ( n <= 40 ) );
    n = 31;
    }

    else if( YIGFr <= 6000000000 ) {
    // (( n >= 20 ) && ( n <= 30 ) );
    n = 20;
    }
    do {
    FrDDS = YIGFr/n - fosc ;
    Ndiv = n++ ;
    }
    while (!( FrDDS >= 18677400 && FrDDS <= 28201308 ) );
    if (n > 41) {
    return 1;
    }
    return Ndiv;

    } // End of "get_Ndiv()"

    long MWindow::get_Phase() {
    Phase = 25 * (YIGFr / Ndiv - fosc) ;
    return Phase;

    } //End of "get_Phase()"

    //---------------SLOT Definition------------------

    void MWindow::updatef(double) {

    I2CCWn m_i2ccwn(2, 0x20); //object
    //I2CCWn m_i2ccwnb; //object for default constructor call

    if(get_FR() !>= doubleSpinBox->value() ) {
    FR = doubleSpinBox->value() ;
    m_i2ccwn.writeFb();
    }
    }

    void MWindow::updatep(double) {

    I2CCWn m_i2ccwn(2, 0x20); //object
    // m_i2ccwn.writeAtt(); //Segmentation fault

    // if( att != Att) {
    // Att = att;
    // m_i2ccwn.writeAtt();
    // }

    }

    i2ccwn.h

    #ifndef I2C_H_
    #define I2C_H_

    #include <QObject>
    #define BBB_I2C_1 "/dev/i2c-1"
    #define BBB_I2C_2 "/dev/i2c-2"

    class I2CCWn{
    private:
    unsigned int bus;
    unsigned int device;
    int file;

    public:
    I2CCWn(unsigned int bus, unsigned int device); //constructor declaration

        I2CCWn();                                       //default constructor declaration
    
        int open();
    

    // virtual int write(unsigned char value);
    // virtual unsigned char readRegister(unsigned int registerAddress);
    // virtual unsigned char* readRegisters(unsigned int number, unsigned int fromAddress=0);
    // virtual int writeRegister(unsigned int registerAddress, unsigned char value);
    int writeRegister(unsigned int registerAddress, unsigned char value);
    // virtual void debugDumpRegisters(unsigned int number = 0xff);
    virtual void close();
    virtual ~I2CCWn();

        void writeAtt();
        void writePow();         //SDI
        void writeFb();
        void writeYIGDA();
        void writeYIGFilter();
        void writeKoswitch();
        void writeNdiv();        //SDI
        void writePhase();
    

    // virtual ~I2CCWn();

    };

    //} /* namespace exploringBB */

    #endif /* I2C_H_ */

    i2ccwn.cpp

    #include "i2ccwn.h"
    #include "form.h"

    #include <iostream>
    #include <unistd.h>
    #include <stdio.h>
    #include <sstream>
    #include <fcntl.h>
    #include <iomanip>
    #include <sys/ioctl.h>
    #include <linux/i2c.h>
    #include <linux/i2c-dev.h>
    using namespace std;

    #define HEX(x) setw(2) << setfill('0') << hex << (int)(x)

    class MWindow;
    MWindow* cw; // Object
    //MWindow cw; // Object---Must construct a QApplication before a QPaintDevice

    #define IODIRA 0x00 // Input/Output -Direction Register A
    #define IODIRB 0x01 // Input/Output -Direction Register B
    #define OLATA 0x14 // Output Latch A
    #define OLATB 0x15 // Output Latch B

    // constructor
    //I2CCWn::I2CCWn (unsigned int bus = 2, unsigned int device = 0x20) {
    I2CCWn::I2CCWn (unsigned int bus, unsigned int device) {

    bus = bus;
    device = device;
    file = -1;
    open();
    writeRegister(IODIRA, 0x00); // 0x00 sets all 8bits of Input/Output -Direction Register A to Output
    writeRegister(IODIRB, 0x00); // 0x00 sets all 8bits of Input/Output -Direction Register B to Output
    }

    // constructor
    I2CCWn::I2CCWn() {
    // QObject (parent),
    bus= 2;
    device= 0x28; //device 0x20 or 0x28
    file= -1;
    open();
    writeRegister(IODIRA, 0x00);
    writeRegister(IODIRB, 0x00);
    }

    // Method open

    int I2CCWn::open(){
    string name = BBB_I2C_2;

    if((this->file=::open(name.c_str(), O_RDWR)) < 0){
    perror("I2C: failed to open the bus\n");
    return 1;
    }

    if(ioctl(this->file, I2C_SLAVE, this->device) < 0){
    perror("I2C: Failed to connect to the device\n");
    return 1;
    }
    return 0;
    }

    int I2CCWn::writeRegister(unsigned int registerAddress, unsigned char value) {
    unsigned char buffer[2];
    buffer[0] = registerAddress;
    buffer[1] = value;
    if(::write(this->file, buffer, 2)!=2) {
    perror("I2C: Failed write to the device\n");
    return 1;
    }
    return 0;
    }

    //Method to output Att on I2C

    void I2CCWn:: writeAtt () {
    writeRegister (OLATA,cw->get_Att());
    writeRegister (OLATB, 0x0f);
    writeRegister (OLATB, 0x10);
    }

    /*
    //Method to output Pow on I2C/SPI

    void I2CCWn:: writePow () {
    device = 0x28;
    writeRegister (0x28,0xf0,0x05); //Bridge SC18IS602B MSB_First, SPI-Clock 0 quit, Data clocked on trailing edge SPI
    device = 0x20; //SPI clock rate 461kHz
    writeRegister (OLATB, 0x15); //Synch AD5660-2 set
    device = 0x28;
    writeRegister (0x28,0x01,0x00,cw->get_Pow() ) i; //input Pow-data
    // writeRegister (0x28,0x01,0x00,cw.get_Pow() ) i; //input Pow-data
    device = 0x20;
    writeRegister (OLATB, 0x16); //Synch AD5660-2 set 1
    }
    */

    //Method to output Fb on I2C

    void I2CCWn:: writeFb () {
    writeRegister (OLATA,cw->get_Fb());
    writeRegister (OLATB, 0x0d);
    writeRegister (OLATB, 0x0e);
    }

    //Method to output YIGDA on I2C

    void I2CCWn:: writeYIGDA () {
    writeRegister (OLATA,cw->get_YIGDA()>>8 ); //Output high Byte
    writeRegister (OLATB, 0x01);
    writeRegister (OLATB, 0x02);
    writeRegister (OLATA,cw->get_YIGDA() & 0x00ff ) ; //Output low Byte
    writeRegister (OLATB, 0x01);
    writeRegister (OLATB, 0x02);
    writeRegister (OLATB, 0x03);
    writeRegister (OLATB, 0x02);
    }

    //Method to output YIGFilter on I2C

    void I2CCWn:: writeYIGFilter () {
    writeRegister (OLATA,cw->get_YIGDA()>>8 ); //Output high Byte
    writeRegister (OLATB, 0x04);
    writeRegister (OLATB, 0x05);
    writeRegister (OLATA,cw->get_YIGDA() & 0x00ff ) ; //Output low Byte
    writeRegister (OLATB, 0x04);
    writeRegister (OLATB, 0x05);
    writeRegister (OLATB, 0x06);
    writeRegister (OLATB, 0x05);

    }

    //Method to output Koswitch on I2C

    void I2CCWn:: writeKoswitch () {
    writeRegister (OLATB,cw->get_Koswitch()); //Output Koswitch
    }

    //Method to output Ndiv on I2C/SDI

    //Method to output Phase on I2C

    void I2CCWn::writePhase () {
    writeRegister (OLATA, 0x00); //W0 Output for 6x REFCLK Multiplyer disabled
    writeRegister (OLATB, 0x08);
    writeRegister (OLATB, 0x07);
    writeRegister (OLATA,cw->get_Phase()>>24 ); //W1
    writeRegister (OLATA,cw.get_Phase()>>24 ); //W1
    writeRegister (OLATB, 0x08);
    writeRegister (OLATB, 0x07);
    writeRegister (OLATA,cw->get_Phase()>>16 & 0x00ff); //W2
    writeRegister (OLATA,cw.get_Phase()>>16 & 0x00ff); //W2
    writeRegister (OLATB, 0x08);
    writeRegister (OLATB, 0x07);
    writeRegister (OLATA,cw->get_Phase()>>8 & 0x0000ff); //W3
    writeRegister (OLATA,cw.get_Phase()>>8 & 0x0000ff); //W3
    writeRegister (OLATB, 0x08);
    writeRegister (OLATB, 0x07);
    writeRegister (OLATA,cw->get_Phase() & 0x000000ff); //W4
    writeRegister (OLATA,cw.get_Phase() & 0x000000ff); //W4
    writeRegister (OLATB, 0x08);
    writeRegister (OLATB, 0x09);
    writeRegister (OLATB, 0x07);
    }

    void I2CCWn::close(){
    ::close(this->file);
    this->file = -1;
    }

    I2CCWn:: ~I2CCWn() {
    if(file!=-1) this->close();
    }


  • Lifetime Qt Champion

    Hi,

    Please use coding tags when posting code. You can use the </> button from the post editor tool for that.

    I guess you posted that in relation to your other thread. You should edit your original post there with this code and please do not forget to put it in coding tags.


Log in to reply