//
// Created by Mr.V on 2024/2/19.
//

#include <iostream>
#include "ComDetect.h"
ComDetect::ComDetect()
{

}

ComDetect::~ComDetect()
{

}

bool ComDetect::openCom(QSerialPort *serial, const QString &com, int baud)
{
    try
    {
        serial->setPortName(com);

        if (baud == 9600)
        {
            serial->setBaudRate(QSerialPort::Baud9600);
        }
        else if (baud == 19200)
        {
            serial->setBaudRate(QSerialPort::Baud19200);
        }
        else if (baud == 115200)
        {
            serial->setBaudRate(QSerialPort::Baud115200);
        }
        else
        {
            serial->setBaudRate(QSerialPort::Baud19200);
        }

        serial->setParity(QSerialPort::NoParity);// 校验
        serial->setDataBits(QSerialPort::Data8); //数据位
        serial->setStopBits(QSerialPort::OneStop);//停止位，停止位默认选择1位
        serial->setFlowControl(QSerialPort::NoFlowControl);// 控制流，默认选择无
        serial->setReadBufferSize(1024); // 设置读取的缓冲区1024字节

        if (serial->open(QSerialPort::ReadWrite))
        {
            serial->clear(QSerialPort::AllDirections);
            serial->setDataTerminalReady(true);
            return true;
        }
    }
    catch (const std::exception &e)
    {
        std::cout << e.what() << std::endl;
        return false;
    }

    return false;
}

bool ComDetect::closeCom(QSerialPort *serial)
{
    serial->clear();
    serial->close();

    return true;
}