时间过得快
2018-07-06 03:52
采纳率: 50%
浏览 5.1k
已采纳

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条回答 默认 最新

相关推荐 更多相似问题