4
我正在使用Ubunt 10.10。如何使用Qextserialport在串行端口上寫入
我想通過QT與串行通信(ATmega328p)進行通信,因此爲了測試,我在微控制器上創建了一個虛擬應用程序,它從UART讀取字符並在串口(回覆)上以相同字符但在括號之間。
如果PC發送:一,然後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();
}
任何想法有什麼不好?
什麼是'port-> write'返回? – Nemo 2011-06-08 06:31:22
_I正在從QT發送一個串口上的字符,並且我正等待在超級終端上收到回覆,但我沒有收到任何回覆。我不完全確定串口是如何工作的在Linux中,但它們不是一次只由一個應用程序打開嗎?你爲什麼不讀Qt程序中的迴應? – Manjabes 2011-06-08 07:49:18
兩個想法:1)將超時設置爲100; 2)在寫完後再調用flush flush – Raiv 2011-06-08 11:41:34