一種藍牙無(wú)線(xiàn)顯示屏系統的設計方案
3系統軟件設計
本文引用地址:http://dyxdggzs.com/article/248952.htm系統軟件同樣分為主機部分和顯示終端部分。這里主要分析顯示終端部分軟件的設計,主機部分與其類(lèi)似。顯示終端部分程序包括:LCD液晶屏初始化,藍牙設備的初始化,藍牙連接的建立和圖像字符數據的傳輸顯示等幾個(gè)部分。程序流程如圖6所示。

用戶(hù)程序以L(fǎng)inux操作系統上的Bluez藍牙協(xié)議棧為平臺進(jìn)行開(kāi)發(fā)。主機應用程序采用GCC編譯器進(jìn)行編譯,顯示終端應用程序采用arm-linux-gcc編譯器進(jìn)行交叉編譯。
3.1藍牙部分程序設計
該部分采用了藍牙socket編程。通過(guò)建立藍牙RFCOMM協(xié)議層的socket進(jìn)行連接。連接建立成功之后可以調用函數recv或者 read讀取主機發(fā)來(lái)的數據,主機端則對應地采用函數send或者write發(fā)送數據。通信結束之后可以調用函數close結束連接。
主機和顯示終端藍牙模塊都有固定的藍牙地址,主機端直接和固定藍牙地址的顯示終端設備進(jìn)行連接。一臺主機可以和多個(gè)顯示終端進(jìn)行通信,在不同的顯示終端上顯示圖像和字符。
藍牙初始化部分參考程序如下:

3.2 LCD液晶屏部分程序設計
LCD液晶屏部分程序采用了Linux內核驅動(dòng)程序的framebuffer編程接口。framebuffer為圖像硬件設備提供了一種抽象化處理,允許應用程序通過(guò)定義明確的界面來(lái)訪(fǎng)問(wèn)圖像硬件設備。軟件無(wú)須了解任何涉及硬件底層驅動(dòng)的東西。通過(guò)framebuffer,應用程序可以用 mmap函數把顯存映射到應用程序虛擬地址空間,將要顯示的數據寫(xiě)入內存空間就可以在屏幕上顯示出來(lái)。LCD顯示屏初始化和清屏部分參考程序如下:

LCD液晶屏初始化和藍牙socket初始化連接完成以后,便可以通過(guò)藍牙發(fā)送圖像和字符數據。藍牙接收顯示圖像和字符兩個(gè)部分的程序類(lèi)似,都是通過(guò)調用函數recv或者read讀取主機發(fā)來(lái)的命令,經(jīng)過(guò)程序判斷然后以相同的方式接收數據。字符部分數據接收和顯示參考程序如下:

該段程序利用接收到的字符數據得到對應的顯示字庫數據,然后通過(guò)frambuffer顯示接口顯示到LCD液晶屏上面。源程序帶有顯示字庫文件,該文件通過(guò)編譯并嵌入可執行代碼,然后下載到顯示終端文件系統。系統這里只添加了英文字庫和對應的顯示代碼,可以正常顯示英文字符。如果需要,通過(guò)添加中文字庫和少量顯示代碼就可以很方便地實(shí)現中文字符的顯示。圖像部分程序則是將接收到的位圖數據通過(guò)frambuffer顯示接口直接顯示到LCD液晶屏上面。
為了在顯示終端的Linux操作系統上使用藍牙協(xié)議棧,需要在交叉編譯嵌入式Linux內核時(shí)將所需的藍牙支持選項選上,并將所需的Bluez藍牙庫編譯安裝到終端文件系統中。用戶(hù)應用程序同樣通過(guò)交叉編譯得到可執行代碼,然后下載到終端文件系統運行。
該系統可以應用在公共信息顯示屏,如大廳廣告信息屏、建筑物提示標志等地方,可以避免有線(xiàn)連接的缺陷。系統通過(guò)擴展后還可以同移動(dòng)電話(huà)、PDA、無(wú)線(xiàn)耳機、無(wú)線(xiàn)揚聲器交換數據。
4結論
在嵌入式Linux操作系統上通過(guò)已有的藍牙協(xié)議棧進(jìn)行藍牙開(kāi)發(fā),通過(guò)藍牙協(xié)議層無(wú)線(xiàn)收發(fā)數據,可以不用關(guān)心藍牙底層驅動(dòng)的實(shí)現。用戶(hù)可以通過(guò)各種上層協(xié)議進(jìn)行更復雜的通信,通過(guò)藍牙SCO協(xié)議層還可以發(fā)送音頻數據。因此嵌入式Linux操作系統平臺上進(jìn)行藍牙無(wú)線(xiàn)顯示屏系統的開(kāi)發(fā)較為方便,并且具有擴展性能好的優(yōu)點(diǎn)。
藍牙技術(shù)相關(guān)文章:藍牙技術(shù)原理
評論