void TcpThread::receiveData() //接收文件 { try { QDataStream in(tcpServerConnection); in.setVersion(QDataStream::Qt_4_7); if(bytesReceived <= sizeof(qint64)*2) { if((tcpServerConnection->bytesAvailable() >= sizeof(qint64) * 2) && (fileNameSize == 0)) { in>>TotalBytes>>fileNameSize; bytesReceived += sizeof(qint64)*2; } if((tcpServerConnection->bytesAvailable() >= fileNameSize) && (fileName == 0)) { in>>fileName; dataProcess(fileName); } else { tcpServerConnection->disconnect(); tcpServerConnection->deleteLater(); emit disconnectedSignal(socketDescriptor); quit(); } }
// PRE: instr is not the halt instruction // Behaviour: Decides which of the 4 instruction types instr is and passes it to its subsequent function // i.e. branch(instr), dataTransfer(instr) etc. bool decodeAndExecute(uint32_t instr) { bool isBranch = extractBit(instr, bit27); bool isDataTransfer = extractBit(instr, bit26); bool mulCheck = extractBit(instr, bit25); uint32_t pattern = extractBits(instr, PATTERN_UPPER, PATTERN_LOWER); if (isBranch) { // puts("Executing branch instruction\n"); branch(instr); return true; } else if (isDataTransfer) { // puts("Executing data transfer instruction\n"); dataTransfer(instr); } else if (!mulCheck && pattern == MUL_PATTERN) { // puts("Executing multiplier instruction\n"); iMultiply(instr); } else { // puts("Executing data process instruction\n"); dataProcess(instr); } return false; }
/*定时器4中断处理,主要处理串口接收数据*/ void TIM4_IRQHandler(void) { if (TIM_GetITStatus(TIM4, TIM_IT_Update) == SET) { TIM_ClearITPendingBit(TIM4,TIM_FLAG_Update); dataProcess(); } }
svm_node* ImgProcessing::imgProcess(IplImage* src){ std::vector<unsigned int> hist; // Mat face = findFace(src); // If we need to find the face Mat face(src); // Otherwise let's just assign the IplImg* to a matrix /** prepare vector **/ hist.clear(); /** Divide image in areas **/ int img_w = face.cols; int img_h = face.rows; int wdh = (int) floor((double)(img_w / NB_COLS)); int hgt = (int) floor((double)(img_h / NB_ROWS)); for (int j = 0; j < NB_ROWS; j++) { for (int i = 0; i < NB_COLS; i++) { int start_w = i * wdh - 1; int end_w = (i+1) * wdh + 1; int start_h = j * hgt - 1; int end_h = (j+1) * hgt + 1; if (j == 0) start_h = 0; if (j == NB_ROWS - 1) end_h = img_h; if (i == 0) start_w = 0; if (i == NB_COLS - 1) end_w = img_w; /** Process sub-area **/ CvRect roi = cvRect(start_w, start_h, (end_w - start_w), (end_h - start_h)); Mat dst = processLbp(face(roi)); /** Compute histogram **/ std::vector<unsigned int> tmp = histogramProcess(dst); for (unsigned int k = 0; k < tmp.size(); k++) { hist.push_back(tmp[k]); } } } std::vector<double> scHist = scaleHist(hist); return dataProcess(scHist); }
/*! \brief 接收但不处理数据 当有数据到来的时候,这个函数处理数据长度与魔数。\n 但它并不处理数据的内容而是将内容交给dataProcess()处理。\n \sa MagicNumber dataProcess() */ void JConnectionBase::on_socket_readyRead() { static int size=0; while(m_socket->bytesAvailable()>0) { if(size>0) { QByteArray data=m_socket->read(size); size=0; dataProcess(data); }else if(m_socket->bytesAvailable()>=(qint64)(sizeof(int)+sizeof(MagicNumber::JMagicNumber))){ QDataStream stream(m_socket); MagicNumber::JMagicNumber mn; stream>>mn; stream>>size; if(mn != getMagicNumber()) { qDebug()<<"magic number error:"<<metaObject()->className()<<mn<<getMagicNumber(); } } }