操作系統中控制硬件設備的方法和模塊的制作方法
【技術領域】
[0001]本申請涉及電子設備操作系統的開發,具體涉及一種操作系統中控制硬件設備的方法和模塊。
【背景技術】
[0002]請參考圖1,為安卓系統的架構示意圖。
[0003]第一層101為Linux內核驅動層(Linux kernel),其由C/C++實現。安卓核心系統服務依賴于Linux內核,包括安全性、內存管理、進程管理、網絡協議、驅動模型等。Linux內核也作為硬件和軟件棧之間的抽象層,除了標準的Linux內核外,安卓還增加了內核的驅動程序,例如:Binder (IPC)驅動、camera驅動、電源管理等。
[0004]第二層為組件庫和虛擬機層,其中,102為組件庫層(Libraries),103為虛擬機層(Android Runtime),組件庫層102通過C/C++實現,包含C/C++庫,用于安卓系統中不同的組件使用,它們通過安卓應用程序框架為開發者進行服務。虛擬機層103作為安卓系統的運動環境,其提供了 Java編程語言核心庫的大多數功能,由Dalvik Java虛擬機和基礎的Java類庫組成。
[0005]第三層104為應用框架層(Applicat1n Framework),在安卓系統中,開發人員也可以完全訪問核心應用程序所使用的API (Applicat1n Programming Interface,應用程序編程接口)框架。
[0006]第四層105為應用程序層(Applicat1ns),安卓應用程序都是采用Java語言編寫的,用戶開發的安卓應用程序和安卓的核心應用程序是同一層次的,它們都是基于安卓的系統API構建的。
[0007]目前,眾多的電子設備采用安卓系統,且設備硬件上都安裝有閃光燈,在很多情況下,用戶具有使用閃光燈的需求,因此,如何在安卓系統上實現閃光燈的控制,是本領域技術人員正在研究的問題。
[0008]隨著光通信的發展,越來越多的電子設備通過使用閃光燈來進行光通信。在安卓系統中,例如,用戶在應用程序層控制將某一數據通過閃光燈以光通信的方式發送出去,則該數據作為待發送數據,根據相應的編碼規則將該數據轉換成控制閃光燈亮滅的時間數據,即在應用程序層產生了控制閃光燈開關的時間數據。然而應用程序層在獲取到控制閃光燈的指令后,對閃光燈驅動的調用指令是一條一條發送的,閃光燈驅動執行完一條指令后,等待應用程序層發送的下一條指令,加上應用程序層將指令傳達到驅動層需要經過應用框架層、組件庫層和虛擬機層等層級,其間,必然會出現一定的時間延遲,從而影響光通信過程中數據傳輸的準確性。
[0009]在光通信中,通常采用的是可見光通信,該可見光即可用于進行數據傳輸,又可以作為照明用。然而,由于上述時間延遲問題,使得數據傳輸過程中,為了保證數據的準確性,需要適當限制其傳輸速度(可見光的閃爍頻率)。因此,對于需要對數據進行高速傳輸時,無法很好地適用。
【發明內容】
[0010]本申請提供一種操作系統中控制硬件設備的方法和模塊,解決了信息傳輸延遲、中斷的問題。
[0011]根據本申請的第一方面,本申請提供了一種操作系統中控制硬件設備的方法,包括:
[0012]獲取用于控制硬件設備動作的狀態數據;
[0013]將所述狀態數據下發并存儲到緩沖單元中;
[0014]調用硬件設備驅動,所述發光器件驅動讀取保存在緩沖單元中的狀態數據,根據所述狀態數據控制硬件設備動作的狀態。
[0015]在一實施例中,獲取用于控制硬件設備動作的狀態數據,具體為:獲取原始數據,對原始數據編碼后得到所述狀態數據。
[0016]在一實施例中,所述硬件設備為發光器件、震動器、攝像頭、傳感器或麥克風。
[0017]在一實施例中,所述狀態數據為表示時間數據、亮度數據或強度數據的數組。
[0018]在一實施例中,所述硬件設備為發光器件時,所述硬件設備驅動為發光器件驅動,所述狀態數據為表示時間數據的數組;所述硬件設備驅動根據所述狀態數據控制硬件設備動作的狀態,具體為:發光器件驅動按照所述數組中數據元素的順序控制發光器件開啟或關閉的時間。
[0019]在一實施例中,所述操作系統為安卓系統、Blackberry OS系統、windows phone系統、windows mobile系統、1S系統或Mac OS系統。
[0020]根據本申請的第二方面,本申請提供了一種操作系統中控制硬件設備的模塊,包括:
[0021]狀態數據獲取單元,用于控制應用程序層獲取用于控制硬件設備動作的狀態數據;
[0022]傳輸單元,用于控制應用程序層將所述狀態數據下發;
[0023]緩沖單元,用于存儲應用程序層下發的狀態數據;
[0024]執行單元,用于控制應用程序層調用位于內核驅動層中的硬件設備驅動,并控制硬件設備驅動讀取保存在緩沖單元中的狀態數據,根據所述狀態數據控制硬件設備動作的狀態。
[0025]在一實施例中,所述狀態數據獲取單元還包括編碼子單元,用于控制應用程序層獲取原始數據,對原始數據編碼后得到所述狀態數據。
[0026]在一實施例中,所述硬件設備為發光器件、震動器、攝像頭、傳感器或麥克風。
[0027]在一實施例中,所述狀態數據為表示時間數據、亮度數據或強度數據的數組。
[0028]在一實施例中,所述硬件設備為發光器件時,所述硬件設備驅動為發光器件驅動,所述狀態數據為表示時間數據的數組;所述執行單元控制硬件設備驅動根據所述狀態數據控制硬件設備的狀態時:執行單元控制發光器件驅動按照所述數組中數據元素的順序控制發光器件開啟或關閉的時間。
[0029]在一實施例中,所述操作系統為安卓系統、Blackberry OS系統、windows phone系統、windows mobile系統、1S系統或Mac OS系統。
[0030]本申請提供的操作系統中控制硬件設備的方法和模塊,在獲取到用于控制硬件設備動作的狀態數據后,先將狀態數據下發并存儲到緩沖單元中,之后,再調用硬件設備驅動,硬件設備驅動讀取保存在緩沖單元中的狀態數據,根據狀態數據控制硬件設備動作的狀態。由于狀態數據存儲在緩沖單元中,硬件設備驅動被調用后,便直接讀取存儲在緩沖單元中的狀態數據,該讀取過程是連續的,避免了硬件設備驅動在驅動硬件設備動作的過程中出現中斷、延遲等現象,從而提高了數據傳輸的準確性,并為高速數據傳輸提供了保證。
【附圖說明】
[0031]圖1為安卓系統的架構示意圖;
[0032]圖2為本申請一種實施例中操作系統中控制硬件設備的方法流程圖;
[0033]圖3為本申請一種實施例中操作系統中控制硬件設備的模塊的結構示意圖。
【具體實施方式】
[0034]本申請的發明構思在于:利用緩沖單元將用于控制硬件設備動作的狀態數據先存儲,該緩沖單元內存儲的數據為硬件設備驅動可直接讀取的,狀態數據存儲完畢后,再調用硬件設備驅動,硬件設備驅動讀取保存在緩存單元中的狀態數據,根據狀態數據控制硬件設備動作的狀態。硬件設備驅動讀取緩存單元中的狀態數據是連續的,不會出現時間延遲、中斷等現象,從而保證了數據傳輸的準確性,同時也為高速數據傳輸提