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