Beispiel #1
0
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;
}
Beispiel #3
0
/*定时器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();
			}
        }
    }