#include "scope.h"#include <QPainter>#include <QString>#include <iostream>#include <stdio.h>using namespace std;Scope::Scope(QWidget *parent) { // CONSTRUCTOR, graphic stuffdataAquired=0;// data=new int[LEN*sizeof(int)]; ;int i;for(i=0;i<LEN;i++) // buffer initdata[i]=0;scale=DEF_SCALE; // default coords: data[i] = (data[i] + shift)/scale;shift=DEF_SHIFT;scaleSlider = new QSlider(Qt::Horizontal,this);scaleSlider->setRange(1, 256);scaleSlider->setValue(DEF_SCALE);connect(scaleSlider, SIGNAL(valueChanged(int)), this, SLOT(setScale(int)));shiftSlider = new QSlider(Qt::Horizontal,this);shiftSlider->setRange(-60000, +60000);shiftSlider->setValue(DEF_SHIFT);connect(shiftSlider, SIGNAL(valueChanged(int)), this, SLOT(setShift(int)));updateTimer = new QTimer(this);updateTimer->start(TICK);connect(updateTimer, SIGNAL(timeout()), this, SLOT(getData()));QLabel ( const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0 )scaleSlider->setGeometry(QRect(20,600,400,60));scaleSlider->show();shiftSlider->setGeometry(QRect(20,680,400,60));shiftSlider->show();// getData();}Scope::~Scope() {delete [] data;}void Scope::paintEvent(QPaintEvent* event) {QPainter painter(this);if (dataAquired) {painter.drawLine(LEFT-1,TOP,LEFT-1,TOP+HEIGHT); //vertical bound box linespainter.drawLine(LEFT+WIDTH+1,TOP,LEFT+WIDTH+1,TOP+HEIGHT);painter.drawLine(LEFT-1,TOP,LEFT+WIDTH+1,TOP); //horizontals bound box linespainter.drawLine(LEFT-1,TOP+HEIGHT,LEFT+WIDTH+1,TOP+HEIGHT);painter.drawLine(LEFT-1,TOP+HEIGHT/2,LEFT+WIDTH+1,TOP+HEIGHT/2);int i;for(i=0;i<LEN;i++) {data[i] = (data[i] + shift)/scale;}for(i=0;i<LEN-1;i++) {painter.drawLine(PIXPT_X*i+LEFT,TOP+HEIGHT/2-PIXPT_Y*data[i],PIXPT_X*(i+1)+LEFT,TOP+HEIGHT/2-data[i+1]*PIXPT_Y);}cout << "Screen updated"<<endl;}}void Scope::getData() {char c='m';cout << "Serial transfer start."<<endl;FILE *serial=fopen("/dev/ttyUSB0","r+");if (serial==NULL) {cout << "Serial port error."<<endl;} else {cout << "Serial port open."<<endl;fwrite(&c,sizeof(char),1,serial); // poprosime o datafread(buffer,sizeof(uint8_t),2*LEN,serial); // a berem jecout << "Serial transfer completed."<<endl;fclose(serial);int i;for(i=0;i<LEN;i++) {data[i]=buffer[2*i]*256+buffer[2*i+1];// cout << 1*data[i] <<endl;}cout << "Screen updating...."<<endl;dataAquired=1;update();}}void Scope::setScale(int val) {scale=val;}void Scope::setShift(int val) {shift=val;}