姓名:喻晗林? ? 學(xué)號:19020100277
轉(zhuǎn)自:https://blog.csdn.net/qq_39188039/article/details/83892066
【嵌牛導(dǎo)讀】近幾年來檐什,隨著人們對生活質(zhì)量要求的提升碴卧,對智能化需求的增長,智能家居逐漸成為很多人的選擇乃正,廣闊的市場需求使得大量物聯(lián)網(wǎng)技術(shù)涌入智能家居領(lǐng)域住册。隨著嵌入式系統(tǒng)在物聯(lián)網(wǎng)中廣泛運用,智能家居控制系統(tǒng)烫葬,對住宅內(nèi)的家用電器界弧、照明燈光進行智能控制,并實現(xiàn)家庭安全防范搭综,結(jié)合其他系統(tǒng)為住戶提供一個溫馨舒適垢箕、安全節(jié)能、先進高尚的家居環(huán)境兑巾,讓住戶充分享受到現(xiàn)代科技給生活帶來的方便與精彩条获。
【嵌牛鼻子】智能家居
【嵌牛提問】如何實現(xiàn)智能家居
【嵌牛正文】
編程環(huán)境:linux
編程語言:linux接口+C語言
嵌入式開發(fā)流程:
1.編寫工程
2.編譯工程
3.移植工程
4.測試工程
============編寫工程===========
使用編程軟件: npp
? ? 安裝方式:雙擊執(zhí)行文件----》下一步----》完成
? ? 1.1 打開npp軟件----》文件-----》新建文件
? ? 1.2 右擊新建文件----》另存為---->找到共享文件夾位置
? ? ? ? 保存為.c文件
? ? 1.3 建立模型
? ? ? ? int main(int argc,const char *argv[])
? ? ? ? {
? ? ? ? ? return 0;
? ? ? ? }
? ? 1.4 輸出語句
? ? ? ? 引號的最后\n? 1.在打印的時候自動換行輸出
? ? ? ? ? ? ? ? ? ? ? 2.才能顯示在開發(fā)板的屏幕上
? ? 1.5 保存? ctrl+s
=============編譯工程==========
使用交叉工具編譯鏈:
? ? ? ? 本地編譯:gcc(C語言) g++(c++語言)
? ? ? ? 開發(fā)板編譯:arm-linux-gcc
? ? 本地編譯:
? ? ? ? 1.gcc? + 文件名.c
? ? ? ? ? ? 生成一個可執(zhí)行文件a.out
? ? ? ? ? ? 執(zhí)行:./a.out
? ? ? ? 2.gcc? 文件名.c? -o? 文件名
? ? ? ? ? ? ? ? ? ? ? ? 指定生成
練習(xí):打印一下自己的中文名字在虛擬機上
注意三點:1.編譯的時候進入共享文件夾
? ? ? ? ? 2.注意警告和錯誤
==============移植工程===============
如何移植到arm開發(fā)板上去?
? 1.正確的鏈接開發(fā)板
? ? 電源線? 串口線? USB轉(zhuǎn)串口
? 2.使用 CRT串口軟件
? ? 1.解壓軟件CRT,解壓到當(dāng)前文件
? ? 2.雙擊SecureCRT.exe
? ? 3.配置協(xié)議
? 3.查看USB轉(zhuǎn)串口的com口是多少蒋歌?
? ? 使用驅(qū)動文件:
? ? ? ? 1.下載PL2303驅(qū)動
? ? ? ? 2.雙擊安裝
? ? ? ? 3.計算機----》管理----》設(shè)備管理器----》端口
? 4.打開CRT軟件配置協(xié)議
? ? 協(xié)議:serial
? ? 端口:根據(jù)第三步去看
? ? 波特率:115200
? 5.1.看不到終端帅掘,使用ctrl+c
? ? 2.重啟開發(fā)板? 復(fù)位鍵
? 6.使用cd 進入根目錄? cd /
? ? 使用命令df查看一下開發(fā)板的使用空間
下載到開發(fā)板
? 1.在使用編譯的時候使用 arm-linux-gcc
? ? arm-linux-gcc hello.c -o hello.c
? 2.下載文件的時候使用命令 rx 文件名
? ? ? ? ? 1.rx? 文件名
? ? ? ? ? 2.點擊傳輸-----》第三個選項-----》共享文件
? ? ? ? ? 3.找到要發(fā)送的文件----》發(fā)送
=============測試工程===============
? 1.修改文件權(quán)限
? ? chmod? 777 hello
? 2.執(zhí)行文件
? ? ./hello
火星文:選項----》會話選項----》外觀-----》字符編碼 utf-8----》確定
====================================
怎么樣在開發(fā)板上顯示滿江紅?
1.arm開發(fā)板是如何顯示顏色
? 讀數(shù)據(jù)? 是一行一行的
? 一個像素點? 4字節(jié)? 位數(shù)32
2.打開文件的操作? 使用函數(shù)
? 在linux中堂油,一切設(shè)備皆文件
? ? ? ? ? 硬件設(shè)備:我們使用的驅(qū)動文件
? 查看函數(shù)? 使用linux里面的man手冊
? man man 查看所有的手冊
? 1 Executable programs or shell commands? ? ? ? ? ? ? 內(nèi)核函數(shù)?
? 2 System calls (functions provided by the kernel)? ? 系統(tǒng)函數(shù)
? 3 Library calls (functions within program libraries)? C語言庫函數(shù)
2.1打開函數(shù)? open()
? ? ? #include <sys/types.h>
? ? ? #include <sys/stat.h>
? ? ? #include <fcntl.h>
? ? ? int open(const char *pathname, int flags);
? ? ? ? 返回值:成功 :返回一個文件描述符? 一個大于的零的數(shù)
? ? ? ? ? ? ? ? 失敗 :返回? -1
? ? ? ? 參數(shù):const char *pathname? -----》字符串類型的路徑名
? ? ? ? ? ? ? int flags? -----》權(quán)限
? ? ? ? ? ? ? ? ? ? O_RDONLY -------read-------只讀權(quán)限
? ? ? ? ? ? ? ? ? ? O_WRONLY -------write------只寫權(quán)限
? ? ? ? ? ? ? ? ? ? O_RDWR? ----read and write ----可讀可寫
? 2.2寫函數(shù)? write()
? ? ? #include <unistd.h>
? ? ? ssize_t write(int fd, const void *buf, size_t count);
? ? ? 返回值:成功? 返回寫入的字節(jié)數(shù)
? ? ? ? ? ? ? 失敗? 返回 -1
? ? ? 參數(shù):int fd? ? ? ? ? ? 文件的描述符
? ? ? ? ? ? const void *buf? 寫入文件的字節(jié)數(shù)的緩沖區(qū)
? ? ? ? ? ? size_t count? ? ? 寫入的緩沖區(qū)的大小
? 2.3關(guān)閉文件 close()
? ? #include <unistd.h>
? ? int close(int fd);
? ? ? 返回值:成功? 返回 0
? ? ? ? ? ? ? 失敗? 返回 -1
? ? ? 參數(shù):
? ? ? ? ? ? int fd? ? ? ? ? ? 文件的描述符
練習(xí):德國國旗和比利時國旗
==============顯示圖片=============
常見的圖片類型:jpg gif jpeg? bmp
一張24位位圖 :bmp
錯誤打印函數(shù)? perror
? #include <stdio.h>
? ? void perror(const char *s);
? ? 參數(shù):const char *s? 字符串
讀取函數(shù)? read()
? ? ? #include <unistd.h>
? ? ? ssize_t read(int fd, void *buf, size_t count);
? ? ? 返回:成功? 返回一個讀取的字節(jié)數(shù)
? ? ? ? ? ? 失敗? 返回 -1
? ? ? 參數(shù):int fd? ? ? ? ? 文件描述符
? ? ? ? ? ? void *buf? ? ? ? 讀的緩沖區(qū)
? ? ? ? ? ? size_t count? ? 讀的字節(jié)數(shù)