xref: /OK3568_Linux_fs/app/forlinx/flapp/src/libs/core/serialport.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "serialport.h"
2 #include <QVariant>
3 #include <QDebug>
4 
SerialPort(QObject * parent)5 SerialPort::SerialPort(QObject *parent) : QSerialPort(parent)
6 {
7 }
8 
config(const QString & name,QSerialPort::BaudRate baudrate,QSerialPort::DataBits databits,QSerialPort::StopBits stopbit,QSerialPort::Parity parity,FlowControl control)9 bool SerialPort::config(const QString &name,
10                         QSerialPort::BaudRate baudrate,
11                         QSerialPort::DataBits databits,
12                         QSerialPort::StopBits stopbit,
13                         QSerialPort::Parity parity, FlowControl control)
14 {
15     this->setPortName(name.trimmed());
16     this->setBaudRate(baudrate);
17     this->setDataBits(databits);
18     this->setStopBits(stopbit);
19     this->setParity(parity);
20     this->setFlowControl(control);
21 
22     bool bOpen = this->open(QIODevice::ReadWrite);
23 
24     if(!bOpen){
25         qDebug() << QString("open serial %1 falire: %2 ").arg(name).arg(this->errorString());
26     }
27 
28     return bOpen;
29 }
30 
config(const QString & name,int baudrate,int databits,int stopbit,int parity,int control)31 bool SerialPort::config(const QString &name, int baudrate, int databits, int stopbit, int parity, int control)
32 {
33     QSerialPort::BaudRate b = (QSerialPort::BaudRate)baudrate;
34 
35     QSerialPort::DataBits d = (QSerialPort::DataBits)databits;
36 
37     QSerialPort::StopBits  s = (QSerialPort::StopBits)stopbit;
38 
39     QSerialPort::Parity p = (QSerialPort::Parity)parity;
40     QSerialPort::FlowControl c;
41     if(control == -1)
42     {
43         c = QSerialPort::NoFlowControl;
44     }else{
45         c = (QSerialPort::FlowControl)control;
46     }
47 
48     return this->config(name, b,d, s, p, c);
49 }
50 
config(const QVariant & settingValue)51 bool SerialPort::config(const QVariant &settingValue)
52 {
53     QVariantList list =  settingValue.toList();
54     if(list.size() == 5)
55     {
56         return config(list[0].toString(),
57                 list[1].toInt(),
58                 list[2].toInt(),
59                 list[3].toInt(),
60                 list[4].toInt()
61                 ) ;
62     }else if(list.size() == 6)
63     {
64         return config(list[0].toString(),
65                 list[1].toInt(),
66                 list[2].toInt(),
67                 list[3].toInt(),
68                 list[4].toInt(),
69                 list[5].toInt()
70                 ) ;
71     }
72 
73     return false;
74 }
75 
execCMD(const QByteArray & arry)76 QByteArray SerialPort::execCMD(const QByteArray &arry)
77 {
78     this->write(arry);
79     this->waitForBytesWritten(200);
80 
81     QByteArray receive;
82     if(waitForReadyRead(200))
83     {
84         receive = readAll();
85         while (waitForReadyRead(10)) {
86             receive += readAll();
87         }
88     }
89 
90     return receive;
91 }
92 
writeData(const QByteArray & arry)93 void SerialPort::writeData(const QByteArray &arry)
94 {
95     this->write(arry);
96     this->waitForBytesWritten(200);
97 }
98 
readData()99 QByteArray SerialPort::readData()
100 {
101     QByteArray receive;
102     if(waitForReadyRead(200))
103     {
104         receive = readAll();
105         while (waitForReadyRead(10)) {
106             receive += readAll();
107         }
108     }
109 
110     return receive;
111 }
112