#include<QtSerialPort>
QSerialPort *m_Serial;
/////////////////////////设置串口信息///////////////////////////////
void SetSerialPortInfo(QString serialport,QString m_Baud,QString m_DataNum,QString m_parity,QString m_StopNum,QString m_FControl)
{
m_Serial->clear();
if(m_Serial->isOpen() == true){
emit SendSerialStatu(false);
m_Serial->close();
}
m_Serial->setPortName(serialport);
if( m_Serial->open(QIODevice::ReadWrite))//以读写方式打开串口
{
m_Serial->setBaudRate(QSerialPort::Baud9600);//设置波特率
m_Serial->setDataBits(QSerialPort::Data8);//设置数据位
m_Serial->setParity(QSerialPort::NoParity);//设置校验位
m_Serial->setStopBits(QSerialPort::OneStop);//设置停止位
m_Serial->setFlowControl(QSerialPort::NOFlowControl);//控制流设置
}
}
public slots:
void ProcessSerialPort();
connect(m_Serial, SIGNAL(readyRead()), this, SLOT(ProcessSerialPort()));
//////有新的数据来,ReadyRead()信号就会触发一次,其实,这里说新的数据来,不是说从发送端有新的数据来到你的机子,而是数据从你的Tcp/ip协议栈到达你的Qt应用程序,也就是系统io缓冲区到达Qt应用程序,数据从系统到达你的Qt应用程序一次,readyread信号就会触发一次//////
QString m_RecvData;
void ProcessSerialPort()
{
QByteArray buf;
buf = m_Serial->readAll();///读取串口数据
if (!buf.isEmpty())
{
m_RecvData.append(buf);
}
}
/////////////写数据(需要测试使用)///////////////
qint64 write(const char *data, qint64 len);
qint64 write(const char *data);
inline qint64 write(const QByteArray &data)
{ return write(data.constData(), data.size()); }
浙公网安备 33010602011771号