Advertisement
Guest User

portreader.cpp

a guest
Jul 11th, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. #include "portreader.h"
  2.  
  3. PortReader::PortReader(QObject *parent) : QObject(parent)
  4. {
  5.     port = new QSerialPort(this);
  6.     status = false;
  7.     connect(port,&QSerialPort::readyRead,this,&PortReader::readData);
  8.     qDebug() << "Wątek wystartował";
  9. }
  10.  
  11. void PortReader::connectPort(int index_dostepnePorty)
  12. {
  13.     qDebug() << "index_dostepnePorty: " << index_dostepnePorty;
  14.     dostepnePorty = QSerialPortInfo::availablePorts();
  15.     if(port->isOpen()) port->close(); //Zamknij port jeśli nie zamknięty
  16.     port->setPort(dostepnePorty.at(index_dostepnePorty));
  17.     port->setBaudRate(QSerialPort::Baud57600);
  18.     port->setDataBits(QSerialPort::Data8);
  19.     port->setParity(QSerialPort::NoParity);
  20.     port->setStopBits(QSerialPort::OneStop);
  21.     port->setFlowControl(QSerialPort::NoFlowControl);
  22.     if(!port->open(QIODevice::ReadWrite)){ // Jeśli się nie powiedzie
  23.         emit connectPortError();
  24.     }
  25.     else{ //Jeśli się powiedzie
  26.         port->write("ok");
  27.         emit connectPortOk();
  28.     }
  29. }
  30.  
  31. void PortReader::setPortArray(QVector<unsigned char> &we)
  32. {
  33.     odebraneDane = &we;
  34.     status = true;
  35. }
  36.  
  37. void PortReader::setPortArrayWsk(int &wsk)
  38. {
  39.     odebraneDaneWsk = &wsk;
  40. }
  41.  
  42. void PortReader::start()
  43. {
  44.     status = true;
  45.     port->open(QIODevice::ReadWrite);
  46. }
  47.  
  48. void PortReader::stop()
  49. {
  50.     status = false;
  51.     port->close();
  52. }
  53.  
  54. void PortReader::readData()
  55. {
  56.     if(status==true){
  57.         r_data = port->readAll();
  58.         port_buffor_size = r_data.size();
  59.         qDebug() << "port_buffor_size: " << port_buffor_size;
  60.         for(int j=0;port_buffor_size > j;j++){
  61.             odebraneDane->push_back(r_data.data()[j]);
  62.             qDebug() << "r_data.data()[j]" << r_data.data()[j];
  63.             }
  64.         }
  65.         //Jeśli wielkość wektora przekroczy maksimum setSizeArry
  66.         if(odebraneDane->size() > portArrySize){
  67.             while(odebraneDane->size() > portArrySize){
  68.                 odebraneDane->removeFirst(); //usuń pierwszy element wektora
  69.             }
  70.  
  71.         emit odebranoDane();
  72.     }
  73.     else{
  74.         qDebug() << "Przychodzą dane, ale czekam.";
  75.     }
  76. }
  77.  
  78. void PortReader::setSizeArry(long long size){
  79.     portArrySize = size;
  80.     odebraneDane->resize(portArrySize);
  81.     emit settingSizeArry(size);
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement