本文來源電子發燒友社區,作者:岳洋, 帖子地址:https://bbs.elecfans.com/jishu_2297439_1_1.html
上次我們測試完QT之后,我們還能創建一個串口終端,因為這些都是QT自己本身就帶的功能,如果有3D應該還可以跑下QT 3D效果,本開發板的全志芯片也是帶了GPU的,顯示3D難度應該會好很多。本次的話我們還是先體驗下QT開發串口調試助手,這樣我們能用串口接一些傳感器了。
首先使用QT5的串口,只需要在頭文件中添加上QT += serialport。這樣就能使用串口庫了。
然后我們還是在之前的基礎上完善內容,首先是就是端口要聲明使用QSerialPort 新建一個。然后我們再添加一個定時器,定時去讀取獲得的數據。
之后就是主函數中直接添加,我們這里使用的串口就是米爾在設備里提供的,印象中有四個有ttyS0,ttyS2,ttyS3,ttyS5。他這個都是對應的,對應了板子原理圖中的串口0,2,3,5。
my_serialport = new QSerialPort(this);
my_serialport->setPortName("/dev/ttyS2");
//以讀寫方式打開串口
if(my_serialport->open(QIODevice::ReadWrite))
{
//設置波特率
my_serialport->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);
//設置數據位
my_serialport->setDataBits(QSerialPort::Data8);
//設置校驗位
my_serialport->setParity(QSerialPort::NoParity);
//設置流控制
my_serialport->setFlowControl(QSerialPort::NoFlowControl);
//設置停止位
my_serialport->setStopBits(QSerialPort::OneStop);
//每秒讀一次
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(readComDataSlot()));
timer->start(1000);
}
else
{
QMessageBox::about(NULL, "提示", "串口沒有打開!");
return;
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::readComDataSlot()
{
QByteArray info = my_serialport->readAll();
qDebug() << info;
}
上面是具體代碼,這里面也使用了信號槽的概念,暫時我們沒有在ui中體現接收到的數據。所以我們使用qDebug()直接打印出來,在我們QT creator中底部有終端直接顯示的。
然后我們外接USB轉TTL的,這里沒用串口終端ttyS0因為我發現好像打不開,沒反應,所以我換了。
我們找原理圖,發現一個端子上就有我們TTL的所以直接接串口2即可。
如上圖。
然后win終端打開串口助手,發送。QT這邊能接收到。
這個換一個字符測試。都是可以的。雖然這個都顯示在一起,但是實際是板子的終端界面在win上,win上實際就是一個串口助手發送。至此QT串口助手測試完成了。
-
米爾科技
+關注
關注
5文章
227瀏覽量
20957
發布評論請先 登錄
相關推薦
評論