rfid::rfid(QObject *parent, QString port, int baudrate) : QObject(parent) { serial = new QAsyncSerial(port, baudrate); connect(serial, SIGNAL(lineReceived(QString)), this, SLOT(receiveID(QString))); sendReset(); }
/** * @brief CommWithClient::readMessage * 发送数据的格式:数据的长度 + 命令 + 数据(数据长度包括数据本身的长度和命令的长度) * 数据的长度:sizeof(quint64) * 命令的长度:sizeof(quint16) * 命令类型: * 发送图片:DATA_IMAGE * 发送坐标:DATA_POINT */ void CommWithClient::readMessage(){ qDebug()<<"readMessage"; QDataStream stream(tcpClient); stream.setVersion(QDataStream::Qt_4_7); //qDebug()<<"bytesAvailable= "<<tcpClient->bytesAvailable(); //如果totalMessageSize的长度为0,表明这是一段新的数据 if(0 == totalMessageSize){ if(tcpClient->bytesAvailable()<(int)(sizeof(quint64)+sizeof(quint16))) return; //总长度 stream >> totalMessageSize; quint16 cmdType; //命令 stream>>cmdType; qDebug()<<"cmdTyed= "<<cmdType; //数据部分的长度要减去 sizeof(quint16)和sizeof(quint64) totalMessageSize -= sizeof(quint16); totalMessageSize -= sizeof(quint64); switch(cmdType){ /* case DATA_POINTS: status = DATA_POINTS; // break; */ case DATA_HEAD_PICTURE: status = DATA_HEAD_PICTURE; receivePixmap(); break; case DATA_RESULT: status = DATA_RESULT; receivePixmap(); break; case DATA_STU_ID: status = DATA_STU_ID; receiveID(); break; case DATA_STU_NAME: status = DATA_STU_NAME; receiveName(); break; default: qDebug()<<"Error cmdType: "<<cmdType; } }else{ //否则表示这不是一段新的数据 switch(status){