#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()); }

 

posted on 2019-02-20 18:02  ~纸鸢~  阅读(119)  评论(0)    收藏  举报