2017-01-02 20 views
0

私がやっていることは、ゲストのUbuntuマシンのWindows 7ホストマシンから/ dev/ttys0にシリアルポートに文字列を書き込むことです。Qt5を使って仮想ポートに書き込む

私はこれをホストマシンとゲストマシンの両方でputtyを使ってテストしました。データは\。\ pipe \ COM1から/ dev/ttys0に書き込まれます。

ここでは、この仮想シリアルポートを使用して簡単なQT5プログラムを使用してゲストパテッティに文字列を書きたいと考えています。

問題は、プログラムがこのポートを開くことができないことです。以下はQtプログラムです。

#include <QtCore/QCoreApplication> 
#include <QSerialPort> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    QSerialPort serial; 
    qDebug() << " Serial communication starts .. "; 
    serial.setPortName("\\.\pipe\COM1"); 
    if(serial.open(QIODevice::ReadWrite)) 
    { 
     serial.setBaudRate(QSerialPort::Baud9600); 
     serial.setDataBits(QSerialPort::Data8); 
     serial.setParity(QSerialPort::NoParity); 
     serial.setStopBits(QSerialPort::OneStop); 
     serial.setFlowControl(QSerialPort::NoFlowControl); 

     serial.write("blah blah"); 

     } 
    else 
     qDebug() << " Serial port isn't open : " << serial.errorString(); 
    while(serial.canReadLine()) 
    { 
     qDebug() << " serial.readLine()" ; 

    } 

    serial.close(); 
    return a.exec(); 
} 

デバッグの出力:

Serial communication starts .. 
Serial port isn't open : "No such file or directory" 
+1

は、私はあなたが、正しく他をエスケープのdidn '\\\\。\\パイプ\\ COM1'または' R "(\\。\パイプ\ COM1)" ' – Niall

+0

@Niallをしようとするより黒いスラッシュが必要だと思いますそれは私に "間違った機能"のシリアルエラーを与える –

答えて

0

あなたがUbuntuので仮想マシンを実行するために使用するソフトウェアは何ですか? VMウェアワークステーションの場合は、VMの設定を編集してシリアルポートを追加できます。

+0

それはVMのVirtualBoxです。しかし、シリアルポートを正しく開くことができないので、問題はQt側にあります。おそらく、APIが物理ポート用に作られており、Vritualポートの作業にいくつかの他のステップが必要なのかもしれません....いいえ? –

+0

VMをシャットダウンし、[仮想マシン設定の編集]をクリックします。次に、「追加」をクリックします(管理者権限が必要です)。シリアルポートを選択し、次へをクリックします。実際のCOMまたはファイルを使用するかどうかを選択できます。 – Alexandre

+0

私はそこに従うかどうかわかりません、どこにも表示されないVMバーチャルボックスの設定に行くとき "add /"管理者特権が必要 " –

関連する問題