Nanopi 2,裝機開始到第乙個實驗,串列埠通訊

2021-07-28 09:41:04 字數 3190 閱讀 8872

剛剛開始玩nanopi,乙個光禿禿的開發板,看著大牛們能玩出花來,自己對其充滿嚮往,然而到了自己手裡就不是那麼回事了,從拿到板子,到裝完debian系統,各種配置就已經讓我焦頭爛額,對於師兄們留下的文件反覆揣摩,終於最後系統配置成功。

然後就開始做的第乙個實驗,基於qt的串列埠通訊。

話說這個qt5的安裝還真是一帆風順

sudo apt-get update

sudo apt-get upgrade

sudo apt-cache search qt5

sudo apt-cache show qt5-default

sudo apt-get install qt5-default

//檢視版本

sudo apt-get install qtcreator

然後配置qtcreator,一般來說找到自己的gcc編譯器的位置,把路徑放在complier path裡面就行了,我的是/usr/lib/gcc,相信大部分人都會是這樣。

qt版本就選高的(如果裝了好幾個的話),還有可以根據自己的喜好來配置編輯的介面,(texteditor老鐵沒毛病)。

準備工作都做完了,好,開始之前再檢查一遍。

qmake -v 檢查版本最好是5以上的。

在qtcreator裡寫乙個helloworld試試。

#include

int main(int argc,char **argv)

ctrl+r編譯執行成功,美滋滋。但是當時我卻有幾個很奇怪的問題,就是居然給了我數不清的warning,說我某某某檔案在未來的多少秒被改動了,當時就給我看懵逼了。後來想明白了,自己的系統的時間比那個qt資源的使用時間還要早,搞了半天結果是我穿越了。。。解決辦法就是改變一下系統的時間,然後把qt相關檔案touch一遍。之前不明白吧能找到的命令弄了一遍,比如什麼

make clean什麼的,等以後回來再看我自己的行為吧。

#include 

#include

#include

#include

int main()

struct termios options;

tcgetattr(fd, &options);

//115200, 8n1

options.c_cflag = b115200 | cs8 | clocal | cread;

options.c_iflag = ignpar;

options.c_oflag = 0;

options.c_lflag = 0;

options.c_cc[vtime]=0;

options.c_cc[vmin]=1;

tcflush(fd, tciflush);

tcsetattr(fd, tcsanow, &options);

unsigned

char rx_buffer[256];

while(1)

}close(fd);

return

0;}

在開發板上編譯執行,就可以接受到來自win上的串列埠除錯助手發來的資訊。相當的好用,沒有寫**,但是已經幾乎把**的原理弄完了,就是檔案的讀寫,大一時的c語言的最後的fopen,fread,fwrite,fclose幾個類似函式的應用。

下面說qt的**,其實看到這裡很多人大概已經知道該怎麼做了。

#include
sudo apt-get install libqt5serialport5-dev
然後再在.pro檔案內加上qt+=serialport

緊接著就可以開始搭建自己想要的介面了,利用ui,什麼編輯框,按鈕什麼的,我的比較簡單。

然後就往裡面添**。右鍵兩個按鈕,會有乙個跳到槽,自動構建方法,往裡面添**就好了。

然後再widget.h中的類裡面新增成員變數,和乙個方法

private:

qserialport serial;

bool flag; //這個可用可不用

private slots:

void

read_com();

然後要初始化自己的串列埠資訊,以及一些變數的初始值,在建構函式裡面新增

flag=

false;

serial.setportname("/dev/ttyama2");

serial.setbaudrate(qserialport::baud115200,qserialport::alldirections);

serial.setdatebit(qserialport::data8);

serial.setflowcontrol(qserialport::noflowcontrol);

serial.setparity(qserialport::noparity);

serial.setstopbits(qserialport::onesteo);

為什麼我不加注釋呢?因為這些都是在配置埠的時候的資訊,不管是minicom,serialctr,還是除錯助手,都會看到不止一遍。

然後新增open的按鈕響應事件的**。

if(!flag)

ui->openport->settext("close");

flag=

true;

}else

這裡要對read_com()進行解釋,這個是讀取串列埠檔案內容,並顯示到resvtext的乙個函式

實驗很小,但是做的很開心,總結的也很開心,希望一直會這樣,多年以後再回來看到自己寫的東西不知會怎麼樣。

NanoPi2試用體驗 裸機第一步

前幾天看了看4418的資料手冊,現在準備開始裸機學習,友善的wiki自然是最好的選擇吧,然而我就是弄不出,找了第三方的一篇微博,然後才邁出了第一步。官方教程也非常簡單,可是是我姿勢不對,大家也可以看看 轉殖matrix配件 倉庫 編譯測試程式進入matrix 倉庫,切換到nanopi2分支 cd m...

開始第乙個Django專案

在django1.11.7安裝教程中成功安裝了django1.11.7。下面開始第乙個django專案。django 工程 project 是我們專案 的容器,例如我們部落格專案中所有的 包括 django 為我們自動生成的以及我們自己寫的 都包含在這個工程裡。目錄 建立django工程 執行dja...

重構,開始第乙個案例

你會發現所謂設計不再是一切動作的前提,而是在整個開發過程中逐漸浮現出來的。martin flower 沒有銀彈,沒有放之四海而皆準的真理。重構和自動化測試時緊密聯絡的,沒有自動化測試,重構會步履維艱。重構 在不蓋被 外在行為的前提下,對 做出修改,以改進程式的內部結構。也就是在 寫好之後改進它的設計...