83 lines
1.8 KiB
C++
83 lines
1.8 KiB
C++
#include "serialcontroller.h"
|
|
|
|
SerialController::SerialController(QObject *parent) : QObject(parent)
|
|
{
|
|
serial = new QSerialPort(this);
|
|
connect(serial, QSerialPort::readyRead, this, handleRecv);
|
|
}
|
|
|
|
void SerialController::openSerial(QString name)
|
|
{
|
|
serial->setPortName(name);
|
|
if (serial->open(QIODevice::ReadWrite))
|
|
{
|
|
//串口打开成功
|
|
serial->setDataTerminalReady(false);
|
|
emit openSuccess();
|
|
}
|
|
else
|
|
{
|
|
//串口打开失败
|
|
emit openFailed();
|
|
}
|
|
}
|
|
|
|
void SerialController::closeSerial()
|
|
{
|
|
if (serial->isOpen())
|
|
{
|
|
serial->close();
|
|
emit closeSuccess();
|
|
}
|
|
}
|
|
|
|
void SerialController::getBaudrate(QString baudrate)
|
|
{
|
|
serial->setBaudRate(baudrate.toInt());
|
|
}
|
|
|
|
void SerialController::getStopbits(QString stopbits)
|
|
{
|
|
if (stopbits == "1")
|
|
serial->setStopBits(QSerialPort::OneStop);
|
|
else if (stopbits == "1.5")
|
|
serial->setStopBits(QSerialPort::OneAndHalfStop);
|
|
else if (stopbits == "2")
|
|
serial->setStopBits(QSerialPort::TwoStop);
|
|
}
|
|
|
|
void SerialController::getDatabits(QString databits)
|
|
{
|
|
serial->setDataBits(QSerialPort::DataBits(databits.toInt()));
|
|
}
|
|
|
|
void SerialController::getParity(QString parity)
|
|
{
|
|
if (parity == tr("无"))
|
|
serial->setParity(QSerialPort::NoParity);
|
|
|
|
else if (parity == tr("奇校验"))
|
|
serial->setParity(QSerialPort::OddParity);
|
|
|
|
else if (parity == tr("偶校验"))
|
|
serial->setParity(QSerialPort::EvenParity);
|
|
}
|
|
|
|
void SerialController::writeData(QString content)
|
|
{
|
|
if (serial->isWritable())
|
|
{
|
|
qint64 result = serial->write(content.toLocal8Bit().data());
|
|
if (result == -1)
|
|
emit writeFailed();
|
|
else
|
|
emit writeSuccess(result);
|
|
}
|
|
}
|
|
|
|
void SerialController::handleRecv()
|
|
{
|
|
QByteArray data = serial->readAll();
|
|
emit recvData(data);
|
|
}
|