剛剛開始玩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 沒有銀彈,沒有放之四海而皆準的真理。重構和自動化測試時緊密聯絡的,沒有自動化測試,重構會步履維艱。重構 在不蓋被 外在行為的前提下,對 做出修改,以改進程式的內部結構。也就是在 寫好之後改進它的設計...