2017-10-03 15 views
1

シリアルポートの受信データをテキストファイル(.txt)に書き込むにはどうすればいいですか?データ書き込みには1時間の時間が必要です。私はこの方法を試してみましたが、私はあなたが受け取るためのQByteArrayを使用してデータを受信したときに受信機能を呼び出すために信号にreadyRead()を使用することをお勧めシリアルポートの受信データをテキストファイル(.txt)に書き込む方法

void Write(QString Filename) 
{ 
    QFile mFile(Filename); 

    if(!mFile.open(QFile::WriteOnly | QFile::Text)) 
    { 
     qDebug() << "Could not open file for writing"; 
     return; 
    } 


    QTextStream out(&mFile); 
    out << data; 
    mFile.flush(); 
    mFile.close(); 
} 

答えて

0

失敗した

void MainWindow::readData() 
{ 
    QByteArray data = serial->readAll(); 
    QDataStream stream(data); 

    double value; 
    stream>>value; 
    console->putData(data); 
    qDebug()<<value; 
} 

:このシリアル読み出しデータコードに続いて 。

この関数はデータを読み込んでファイルに書き込みます。

void MainWindow::receiveData_WriteToFile() 
{ 
    if (serialPort->isOpen()) 
    { 
     QByteArray DataReceived; 
     QFile LogFile("D:/data.txt"); 
     if(!LogFile.open(QFile::Append | QFile::Text)) 
     { 
      //Can't Open Log File. 
     } 
     if(serialPort->bytesAvailable()) 
     { 
      DataReceived = serialPort->readAll();//All Data Received Successfully. 
      if(DataReceived.size() > 0) 
      { 
       if(LogFile.isOpen()) 
       { 
        QTextStream in(&LogFile); 
        in << DataReceived; 
       } 

       LogFile.close(); 
      } 
      else 
      { 
       //Fail To Receive Data. 
      } 
     } 
     LogFile.close(); 
    } 
} 

readyRead():この信号は、一度、新しいデータは、デバイスの現在のリードチャネルからの読み取りのために利用可能であるたびに放出されます。ネットワークデータの新しいペイロードがネットワークソケットに到着した場合や、新しいデータブロックがデバイスに追加された場合など、新しいデータが利用可能になった場合にのみ再度送信されます。

出力ファイル:

Screenshot

これは助けをgithub download here.

+0

感謝のあなたの質問のためのサンプルプロジェクトです。あなたはブラウズオプションを追加しました、それは何ですか?そして、シリアル受信データがデータと時間を使ってテキストファイルに書き込む必要がある時間間隔を1時間与えなければなりませんか? – explorer104

+0

@ explorer104ブラウズボタンを使ってファイルの場所ディレクトリを取得しました。 'getExistingDirectory'、QTimerを使ってそのようなデータを受け取ります。 http://doc.qt.io/qt-5/qtimer.html – aghilpro

関連する問題