Joker_FJL
时间过得快
2018-07-06 03:52

Qt的串口接收和发送问题

20
  • 串口通信
  • qt

发送:
我发现发送单条消息给串口助手是正常的,如果一次发好几条数据,串口助手只能接收到最后一条消息,这是什么原因?
代码

 int serialCommunication::sendSerialData(char *buffer, int length )
{
    m_SerialPort->clear(QSerialPort::Input);
    m_SerialPort->clear(QSerialPort::Output);
    return m_SerialPort->write(buffer, length);
}

接收:
假如接收14个字节的数据,每来一个字节,接收函数都处理一次,会处理14次,前13次是无用的
代码

 void serialCommunication::readSerialData()
{
    //读取串口数据
    //usleep(100000);
    QByteArray readComData = m_SerialPort->readAll();
    mData.append(readComData);
    char *buf = NULL;
    int len = mData.length();
    qDebug()<<"mData length: "<<len <<endl;

    buf = (char*)malloc(len * sizeof(char));
    memcpy(buf, mData.data(), len);

    unsigned short validDataLen = (uchar)buf[1];//len of data
    unsigned char num;
    for(int i =0; i<len; i++)
    {
        num = (unsigned char) buf[i];
        qDebug() <<"num"<< num;
    }
        ...
    free(buf);
    buf=NULL;
}

求指点

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

3条回答

为你推荐

换一换