2022-01-04 18:11:48 +08:00
|
|
|
#include "taserialthread.h"
|
|
|
|
#include <QDebug>
|
|
|
|
TA_SerialThread::TA_SerialThread()
|
|
|
|
{
|
|
|
|
portCnt = 0;
|
|
|
|
portNewCnt=0;
|
|
|
|
m_arrSerial = new QSerialPort[10];
|
|
|
|
m_arrNewSerial=new QSerialPortInfo[10];
|
|
|
|
}
|
|
|
|
|
|
|
|
TA_SerialThread::~TA_SerialThread()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::run()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2022-08-25 18:37:24 +08:00
|
|
|
void TA_SerialThread::SearchPort(void) {
|
2022-01-04 18:11:48 +08:00
|
|
|
portNewCnt=0;
|
|
|
|
//查找可用的串口
|
2022-08-25 18:37:24 +08:00
|
|
|
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
|
|
|
|
if(portNewCnt > 9) break;
|
2022-01-04 18:11:48 +08:00
|
|
|
m_arrNewSerial[portNewCnt]=info;
|
|
|
|
portNewCnt++;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (int i=0;i<portNewCnt;i++) {
|
|
|
|
bool iHaveFlag=false;
|
|
|
|
for(int j=0;j<portCnt;j++)
|
|
|
|
{
|
|
|
|
if(m_arrSerial[j].portName()==m_arrNewSerial[i].portName())
|
|
|
|
{
|
|
|
|
iHaveFlag=true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2022-08-25 18:37:24 +08:00
|
|
|
if(!iHaveFlag) {
|
2022-01-04 18:11:48 +08:00
|
|
|
m_arrSerial[portCnt].setPort(m_arrNewSerial[i]);
|
|
|
|
portCnt++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::InitPortName(uint8_t portIndex,const QString &portName)
|
|
|
|
{
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
m_arrSerial[portIndex].setPortName(portName);//const QString &name
|
|
|
|
else
|
|
|
|
qDebug()<<"OpenPort port index is out of range!";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::InitPortBaudRate(uint8_t portIndex,qint32 baudRate)
|
|
|
|
{
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
m_arrSerial[portIndex].setBaudRate(baudRate);//BaudRate baudRate
|
|
|
|
else
|
|
|
|
qDebug()<<"OpenPort port index is out of range!";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::InitPortDataBits(uint8_t portIndex,QSerialPort::DataBits dataBits)
|
|
|
|
{
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
m_arrSerial[portIndex].setDataBits(dataBits);//DataBits dataBits
|
|
|
|
else
|
|
|
|
qDebug()<<"OpenPort port index is out of range!";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::InitPortParity(uint8_t portIndex,QSerialPort::Parity parity)
|
|
|
|
{
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
m_arrSerial[portIndex].setParity(parity);//Parity parity
|
|
|
|
else
|
|
|
|
qDebug()<<"OpenPort port index is out of range!";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::InitPortStopBits(uint8_t portIndex,QSerialPort::StopBits stopBits)
|
|
|
|
{
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
{
|
|
|
|
m_arrSerial[portIndex].setStopBits(stopBits);//StopBits stopBits
|
|
|
|
m_arrSerial[portIndex].setFlowControl(QSerialPort::NoFlowControl);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
qDebug()<<"OpenPort port index is out of range!";
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TA_SerialThread::OpenPort(uint8_t portIndex)
|
|
|
|
{
|
|
|
|
bool result=false;
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
result=m_arrSerial[portIndex].open(QIODevice::ReadWrite);
|
|
|
|
else
|
|
|
|
qDebug()<<"OpenPort port index is out of range!";
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::ClosePort(uint8_t portIndex)
|
|
|
|
{
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
{
|
|
|
|
//关闭串口
|
|
|
|
m_arrSerial[portIndex].clear();
|
|
|
|
m_arrSerial[portIndex].close();
|
|
|
|
//m_arrSerial[portIndex].deleteLater();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
qDebug()<<"OpenPort port index is out of range!";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TA_SerialThread::SendDataBuf(uint8_t portIndex,const QByteArray &str)
|
|
|
|
{
|
|
|
|
if(portIndex < portCnt)
|
|
|
|
{
|
|
|
|
m_arrSerial[portIndex].write(str);
|
|
|
|
qDebug()<<str;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
qDebug()<<"SendDataBuf port index is out of range!";
|
|
|
|
}
|
|
|
|
|
2022-01-20 10:08:17 +08:00
|
|
|
QByteArray TA_SerialThread::GetDataBuf(uint8_t portIndex) {
|
|
|
|
if(portIndex < portCnt) return m_arrSerial[portIndex].readAll();
|
|
|
|
else {
|
2022-01-04 18:11:48 +08:00
|
|
|
qDebug()<<"GetDataBuf port index is out of range!";
|
2022-01-20 10:08:17 +08:00
|
|
|
return nullptr;
|
|
|
|
}
|
2022-01-04 18:11:48 +08:00
|
|
|
}
|