智慧型倉庫系統(一)之linux螢幕程式設計

2021-10-23 23:07:59 字數 3247 閱讀 4761

在 ubuntu 系統下,螢幕驅動檔案一般位於:/dev/ubuntu_lcd。

我們都知道,螢幕都是由乙個個畫素點構成的,而乙個畫素點由三原色構成(紅綠藍),簡稱 rgb。

假如是在 800 * 480 的解析度下,畫素分布如下:螢幕橫向有 800 個畫素格,縱向有 480 個畫素格。每個畫素格由 rgb 顏色組成。

然而,每個畫素點由 4 個位元組組成:

當你想表示藍色時,只需要將表示藍色的那個位元組置為全1,其它顏色表示的位置零即可。那麼,藍色就可表示為:00000000 00000000 00000000 11111111。用16進製表示為 0x000000ff。

下面我們按照以下步驟來測試一下lcd示例**:主要做的事情是:

1.安裝觸控螢幕驅動

cd  /mnt/hgfs/embed/lcd/event_drv

make

sudo insmod event_drv.ko

2.安裝螢幕驅動

cd  /mnt/hgfs/embed/lcd/mmap_drv

make

sudo insmod mmp_drv.ko

3.執行模擬器

cd  /mnt/hgfs/embed/lcd

sudo .

/vtslcd

4.開啟新的終端(ctrl+alt+t)

cd  /mnt/hgfs/embed/lcd/lcd_event

gcc lcd_event_ui.c bmp.c -o lcd_event_ui

sudo .

/lcd_event_ui

5. 執行結果如下:

你點一下燈泡,會變成粉色:

但是,這裡會有乙個問題就是這些驅動檔案都是臨時的,當你關掉虛擬機器或者重啟虛擬機器上,如果你還想執行一下示例**,那你仍然要乖乖按照步驟再來一遍,這樣子做會感覺很繁瑣。所以我寫了乙個指令碼(auto_config.sh),可以一步到位。

前文已經提到過:藍色的十六進製制為 0x000000ff。那我們可不可以將螢幕改為藍色呢?在編寫程式之前,我們首先要清除的是:一切裝置皆檔案,包括螢幕也是。那我們要操作乙個檔案,首先得開啟這個檔案,然後向檔案中寫入相應的資料,即可改變這個檔案的狀態。所以,**如下:

#include

#include

#include

#include

#include

#include

intmain()

close

(wfd)

;return0;

}

然後先執行sudo ./vtslcd,然後再編譯執行上面的應用程式(應用程式需要root許可權執行)。執行結果如下:

可以看到整個螢幕變成了藍色。當然你可以改變成你喜歡的任何顏色,只需要知道該顏色的十六進製制即可。

下面我將用共享記憶體來修改螢幕的顏色。如果大家還不懂共享記憶體的知識,可以參考這篇linux執行緒通訊之共享對映區。

**如下:

#include

#include

#include

#include

#include

#include

#include

intmain()

}close

(lcd)

;return0;

}

執行結果如下:

利用共享記憶體,我們可以設定螢幕任意乙個區域的顏色。

#include

#include

#include

#include

#include

#include

intmain()

printf

("lcd_fd = %d\n"

, lcd_fd)

;unsigned

int*lcd_p =

mmap

(null

,800

*480*4

, prot_read|prot_write, map_shared, lcd_fd,0)

;if(lcd_p == map_failed )

//開啟檔案失敗,結束程式

int blue =

0x0000a2e8

;int x, y;

for(y=

0; y<

480; y++)}

//在螢幕三分之一的地方顯示紅色

for(y=

0; y<

160; y++)}

//從座標x=400, y=240的地方開始,顯示乙個100畫素點的正方形

for(y=

240; y<

340; y++)}

//解除螢幕對映

munmap

(lcd_p,

800*

480*4)

;//關閉檔案

close

(lcd_fd)

;return0;

}

執行結果如下:

Linux系統結構之檔案系統(一)

一 linux系統支援多種檔案系統,大致可分為 1 磁碟檔案系統 指本地主機中實際可以通過磁碟訪問的系統,包括硬碟 光碟機 cd rom或 等 usb儲存 磁碟陣列 raid 等。常見的檔案系統格式有 autofs ext3 ext4 ufs unix系統檔案系統 fat fat16 fat32 n...

linux裝置驅動之led子系統《一》

資料結構 include linux leds.h enum led brightness led classdev代表led的例項 struct led classdev 觸發器的結構體 define trig name max 50 struct led trigger 平台裝置相關的led資料...

linux作業系統一

1有效的方式使用計算機系統資源。作業系統向下封裝硬體,向下提供操作介面。unix linux 2檔案系統 2.1 目錄和路徑 2.1.1 目錄 一組相關檔案的集合 乙個目錄下面包含子目錄 檔案下有檔案 路徑名 檔名 確定檔案位置 目錄位置 路徑反映目錄和目錄之間的關係。2.1.2 路徑 linux中...