4

Ubuntu 10.10 を使用しています。

QTを介してシリアルを使用してマイクロコントローラー(ATmega328p)と通信したいので、テストのために、UARTから文字を読み取り、シリアルポートで同じ文字で応答(応答)するダミーアプリケーションをマイクロコントローラーで作成しましたが、ブラケットの間にあります.

PC が a を送信した場合、PC は応答 [a] を受信します。

ハイパー ターミナル (GtkTerm) を使用して PC から文字を送信すると、アプリケーションはうまく機能しますが、QT を使用すると機能しません。QT からシリアル ポートで文字を送信し、ハイパー ターミナルで応答を待っていますが、応答がありません。

シリアル通信プロパティ: Baud9600、Parity_none、Stop_bits_1、Data_8bits、Flow_control_Off

#include <QtCore/QCoreApplication>
#include <qextserialport.h>

int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);

   const char data[]= "e";
   QextSerialPort * port = new QextSerialPort("/dev/ttyUSB0");

   port->setBaudRate(BAUD9600);
   port->setFlowControl(FLOW_OFF);
   port->setParity(PAR_NONE);
   port->setDataBits(DATA_8);
   port->setStopBits(STOP_1);
   port->setTimeout(0);
   bool res = false;
   res = port->open(QIODevice::ReadWrite | QIODevice::Unbuffered);

   if(res)
   {
       qDebug("Opened");
       qDebug(data);
       int i = port->write(data, sizeof(data));
   }
   else
   {
       qDebug("Failed to connect");
   }

   return a.exec();
}

何が間違っているのですか?

4

1 に答える 1

1

シリアル ポートを 2 回 (Qt で 1 回、もう 1 回は HyperTerminal で) 開いているため、機能していません。

コマンドの応答を取得したい場合は、Qt プログラムで応答する必要があります。

于 2012-06-14T11:14:25.300 に答える