#include "scancodecontrol.h"
#include "myhelper.h"
#include <QRegExp>
ScanCodeControl::ScanCodeControl(QObject *parent) : QObject(parent)
{

}

void ScanCodeControl::setComm(QString ComName, long baudRate)
{
    // 设置串口号
    SerialPort.setPortName(ComName);
    // 打开串口
    if(SerialPort.open(QIODevice::ReadOnly))
    {
        // 设置波特率
        SerialPort.setBaudRate(baudRate);
        SerialPort.setDataBits(QSerialPort::Data8);
        SerialPort.setParity(QSerialPort::NoParity);
        // 设置流控制
        SerialPort.setFlowControl(QSerialPort::NoFlowControl);
        SerialPort.setStopBits(QSerialPort::OneStop);
        emit SendToBridge_ScanCodeDataisOk();
        //设置数据位数
//        switch(8)
//        {
//        case 5: SerialPort.setDataBits(QSerialPort::Data5); break;
//        case 6: SerialPort.setDataBits(QSerialPort::Data6); break;
//        case 7: SerialPort.setDataBits(QSerialPort::Data7); break;
//        case 8: SerialPort.setDataBits(QSerialPort::Data8); break;
//        default: break;
//        }
        // 设置校验位
        //SerialPort->setParity(QSerialPort::NoParity);
        //设置奇偶校验
//        switch(parity)
//        {
//        case 0: SerialPort.setParity(QSerialPort::NoParity); break;
//        case 1: SerialPort.setParity(QSerialPort::OddParity); break;
//        case 2: SerialPort.setParity(QSerialPort::EvenParity); break;
//        default: break;
//        }

        //设置停止位
//        switch(stopBits)
//        {
//        case 1: SerialPort.setStopBits(QSerialPort::OneStop); break;
//        case 2: SerialPort.setStopBits(QSerialPort::TwoStop); break;
//        default: break;
//        }
    }else {
        //myHelper::ShowMessageBoxError("扫码模块故障");
        return;
    }
    connect(&SerialPort,&QSerialPort::readyRead,this,[=](){
        QString str(SerialPort.readAll());
        QStringList  list = str.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);      //去掉\r\n
        foreach (QString line, list) {
            if(m_RepeatScan == line){
                return;
            }
            m_RepeatScan =line;
            m_timer->start(100);
        }
    });
    m_timer = new QTimer(this);
    connect(m_timer,&QTimer::timeout,this,[=](){
        m_timer->stop();
        emit SendToBridge_ScanCodeData(m_RepeatScan);
        m_RepeatScan = nullptr;
    });
}
