/*---------------------------------------------------------------------- | ShowResponse +---------------------------------------------------------------------*/ static void ShowResponse(NPT_HttpResponse* response, ShowMode mode) { // show response info NPT_Debug("RESPONSE: protocol=%s, code=%d, reason=%s\n", response->GetProtocol().GetChars(), response->GetStatusCode(), response->GetReasonPhrase().GetChars()); // show headers NPT_HttpHeaders& headers = response->GetHeaders(); NPT_List<NPT_HttpHeader*>::Iterator header = headers.GetHeaders().GetFirstItem(); while (header) { NPT_Debug("%s: %s\n", (const char*)(*header)->GetName(), (const char*)(*header)->GetValue()); ++header; } // show entity NPT_HttpEntity* entity = response->GetEntity(); if (entity != NULL) { NPT_Debug("ENTITY: length=%lld, type=%s, encoding=%s\n", entity->GetContentLength(), entity->GetContentType().GetChars(), entity->GetContentEncoding().GetChars()); switch (mode) { case SHOW_MODE_LOAD: { NPT_DataBuffer body; NPT_Result result =entity->Load(body); if (NPT_FAILED(result)) { NPT_Debug("ERROR: failed to load entity (%d)\n", result); } else { NPT_Debug("BODY: loaded %d bytes\n", (int)body.GetDataSize()); // dump the body NPT_OutputStreamReference output; NPT_File standard_out(NPT_FILE_STANDARD_OUTPUT); standard_out.Open(NPT_FILE_OPEN_MODE_WRITE); standard_out.GetOutputStream(output); NPT_Debug("%s", (char *)body.GetData()); // ÔÝʱ²»Ö§³Ö // output->Write(body.GetData(), body.GetDataSize()); } break; } case SHOW_MODE_STREAM_BLOCKING: { NPT_DataBuffer buffer(4096); NPT_Result result; NPT_InputStreamReference input; entity->GetInputStream(input); do { NPT_Size bytes_read = 0; result = input->Read(buffer.UseData(), 4096, &bytes_read); NPT_Debug("read %d bytes\n", bytes_read); } while (NPT_SUCCEEDED(result)); break; } } } }
int main(int argc, char** argv){ QCoreApplication app(argc, argv); QDateTime logTime=QDateTime::currentDateTime(); QTextStream standard_out(stdout); QTextStream standard_in(stdin); QTextStream file_out(stdout); QFile logFile(".spiedo.log"); logFile.open(QIODevice::WriteOnly|QIODevice::Append); QTextStream log_out(&logFile); log_out << QObject::tr("####### - %1 - #######").arg( logTime.toString() )<< endl; QSerialPort * SerialSelected=Connection(); if( SerialSelected == 0 ) return 1; ConfigurePort(SerialSelected); standard_out << QObject::tr("Serial is Configured") << endl; if( !SerialSelected->open(QIODevice::ReadWrite) ) { standard_out << QObject::tr(" Failed to open port %1, error: %2").arg(SerialSelected->portName()).arg(SerialSelected->errorString()) << endl; return 1; }else{ standard_out << QObject::tr("Serial is open.") << endl; } SerialSelected->setRequestToSend(true); SerialSelected->setRequestToSend(false); standard_out << QObject::tr("Serial is Configuration:") << endl << QObject::tr("Baud rate: ") << SerialSelected->baudRate() << endl << QObject::tr("DataBit: ") << SerialSelected->dataBits() << endl << QObject::tr("Parity: ") << ( SerialSelected->parity() )<< endl << QObject::tr("Stop Bits: ") << ( SerialSelected->stopBits() )<< endl << QObject::tr("FlowControl: ") << ( SerialSelected->flowControl() )<< endl ; SerialSelected->setRequestToSend(true); SerialSelected->setRequestToSend(false); QThread::sleep(2); char buf[64]; qint64 leghtbuf=0; while( ( SerialSelected->waitForReadyRead(10000) ) ){ if( SerialSelected->canReadLine() ){ leghtbuf=SerialSelected->readLine(buf,sizeof(buf)); standard_out << buf << endl; if( leghtbuf >= 8 ) break; } standard_out << QObject::tr("Waiting for sketchCode") << endl; } if( leghtbuf == 0 ){ standard_out << QObject::tr("Error: %1").arg(SerialSelected->errorString() ) << endl << QObject::tr(" No sketchCode :(") << endl; return 1; }else{ standard_out << QObject::tr("SketchCode recived!") << endl << QObject::tr(" Code: %1 ").arg(buf) << endl << QObject::tr("Is it correct[Y/n]?\n>>") << flush ; } QString tmp; tmp=standard_in.readLine(); if( tmp[0] == 'n' ) return 0; SerialSelected->write("~"); SerialSelected->flush(); SerialSelected->waitForReadyRead(1000); SerialSelected->readAll(); standard_out << QObject::tr("HandShake Terminate.") << endl; QByteArray Data; QByteArray dataBuffer; QString nameFile; QFile LogMisure; char command=' '; bool exit=false; standard_out << QObject::tr("Controllo della Seriale:") << endl << QObject::tr("\t[r] Campiona per 1000 volte e restiusce la seguente stringa:") << endl << QObject::tr("\t\t dutyCicle:Mean:Sigma") << endl << QObject::tr("\t[w] Modifica il duty Cicle") << endl << QObject::tr("\t[a] Fa una scansione completa sul duty Cicle da 0 a 255\n") << QObject::tr("\t\t eseguendo ogni volta la lettura( vedi [r] )")<< endl << QObject::tr("\t[t] Acquisisce misure raw dal fotodiodo ad intervalli regolari\n" "\t\trestituendo ad ogni misura la stringa:\n\t\t\tclock:rawMeasure#\n" "\t\tdove il clock è il tempo trascorso tra l'ultimo reset e la \n" "\t\tmisura rawMeasure, espresso in microsecondi\n" ) << flush << QObject::tr("\t[h] restituisce questo OutPut") << endl << QObject::tr("\t[s] Salva su File") << endl << QObject::tr("\t[q] Salva Esce") << endl ; SerialSelected->write("w"); SerialSelected->flush(); SerialSelected->write("0"); SerialSelected->flush(); while(true){ standard_out << ">>" << flush; standard_in >> command; switch(command){ case 'r': SerialSelected->write("r"); SerialSelected->flush(); SerialSelected->clear(); while( ( SerialSelected->waitForReadyRead(10000) ) ){ if( SerialSelected->canReadLine() ){ dataBuffer = SerialSelected->readAll(); standard_out << dataBuffer << flush; log_out << QObject::tr("[r]:\n") << dataBuffer << flush; dataBuffer.clear(); break; } } SerialSelected->clear(); SerialSelected->readAll(); break; case 'w': SerialSelected->write("w"); SerialSelected->flush(); standard_out << QObject::tr("Inserire il valore della duty Cicle\n>>") << flush; standard_in >> tmp; SerialSelected->write(tmp.toStdString().c_str()); SerialSelected->flush(); SerialSelected->readAll(); break; case 'a': SerialSelected->write("a"); SerialSelected->flush(); SerialSelected->clear(); Data.append("#").append(logTime.toString("ddMMyyyy hhmmss") ).append("\n"); Data.append("#Scanning on dutyCicle\n#duty\tmean\tsigma\n"); { QByteArray tmp_data; bool breakWhile=false; while( ( SerialSelected->waitForReadyRead(-1) ) ){ tmp_data.clear(); tmp_data.append( SerialSelected->readAll() ); if( tmp_data.contains('$') ){ tmp_data.remove( tmp_data.indexOf('$'),1 ); standard_out << "ora esco" << endl; breakWhile=true; } tmp_data.replace(':','\t'); tmp_data.replace('%','\n'); standard_out << tmp_data << flush; Data.append(tmp_data); if( breakWhile ) break; } } SerialSelected->readAll(); break; case 't': SerialSelected->write("t"); SerialSelected->flush(); SerialSelected->clear(); Data.append("#").append(logTime.toString("ddMMyyyy hhmmss") ).append("\n"); Data.append("#Acquire "); standard_out << QObject::tr("Inserire il numero di misure che si vuole fare\n>>") << flush; standard_in >> tmp; SerialSelected->write(tmp.toStdString().c_str()); SerialSelected->flush(); Data.append(" measure\n#time\tMeasure\n"); { QByteArray tmp_data; bool breakWhile=false; while( ( SerialSelected->waitForReadyRead(10000) ) ){ standard_out << "dentro la lettura" << endl; tmp_data.clear(); tmp_data.append( SerialSelected->readAll() ); if( tmp_data.contains('$') ){ standard_out << "ora esco" << endl; breakWhile=true; } tmp_data.replace(':','\t'); tmp_data.replace('%','\n'); tmp_data.replace('$','\n'); Data.append(tmp_data); if( breakWhile ) break; } } SerialSelected->readAll(); break; case 's': save: if ( Data.isEmpty() ){ standard_out << QObject::tr("Nothing to save") << endl; break; } standard_out << QObject::tr("Nome del file: ") << flush; standard_in >> nameFile; LogMisure.setFileName(nameFile); LogMisure.open(QIODevice::WriteOnly|QIODevice::Append); log_out << QObject::tr("Saving data in %1/ \b%2").arg( QDir::currentPath() ).arg( LogMisure.fileName() ) << endl; file_out.setDevice(&LogMisure); file_out << Data << flush; file_out.device()->close(); Data.clear(); break; case 'q': SerialSelected->write("q"); SerialSelected->flush(); SerialSelected->clear(); exit=true; goto save; break; case 'h': standard_out << QObject::tr("Controllo della Seriale:") << endl << QObject::tr("\t[r] Campiona per 1000 volte e restiusce la seguente stringa:") << endl << QObject::tr("\t\t dutyCicle:Mean:Sigma") << endl << QObject::tr("\t[w] Modifica il duty Cicle") << endl << QObject::tr("\t[a] Fa una scansione completa sul duty Cicle da 0 a 255\n") << QObject::tr("\t\teseguendo ogni volta la lettura( vedi [r] )")<< endl << QObject::tr("\t[h] restituisce questo OutPut") << endl << QObject::tr("\t[t] Acquisisce misure raw dal fotodiodo ad intervalli regolari\n" "\t\trestituendo ad ogni misura la stringa:\n\t\t\tclock:rawMeasure#\n" "\t\tdove il clock è il tempo trascorso tra l'ultimo reset e la \n" "\t\tmisura raw Measure, espresso in microsecondi\n" ) << flush << QObject::tr("\t[s] Salva su File") << endl << QObject::tr("\t[q] Salva Esce") << endl ; break; default: if(exit) break; } if(exit) break; } return 0; }