物联网操作系统Hello China V1.76(PC串口版)版本发布
作為向ARM平臺移植的基線版本,經過三個多月的努力,Hello China V1.76終于完成并發布。相對原來發布的V1.75版本,該版本主要做了如下修改:
徹底去掉了原來版本源代碼中的C++特性,采用純C語言實現
V1.75以前的版本,不論是內核還是GUI/網絡等外圍模塊,都是采用C++語言編寫的。雖然僅僅使用了諸如函數名重載/自定義對象類型等初級特性,但是在遷移到其它非VC開發環境的時候,發現還是困難重重。于是在V1.76版本的實現中,全部去掉了C++特性,完全采用純C語言實現。
這樣修改之后,順利移植到MDK/GCC等開發環境上。由此也事實上證明,用C++語言實現操作系統的內核,還是有難度的。
增加了串口驅動程序及內置的基于串口的shell
原來版本雖然也具備串口通信功能,但串口驅動并未納入Hello China的驅動程序框架。在V1.76內核的實現中,把串口作為基礎的調試接口,為之編寫了完整的驅動程序,并納入統一的驅動程序框架。這樣,一臺運行Hello China的計算機,就無需有物理屏幕和鍵盤了,可以由另外一臺計算機通過串口進行操作。比如,在我的老舊的DELL電腦上運行Hello China,在另一臺上網本上運行超級終端,就可操作DELL計算機了。前提是,使用交叉串口線,把DELL計算機和上網本連接起來,同時設置串口波特率為9600,無奇偶校驗,8位數據位,一個停止位,即最常用的串口默認設置。由于Hello China V1.76版尚未加入USB驅動程序,因此必須具備物理串口。
下圖是運行Hello China V1.75的DELL筆記本,當然,如果有屏幕和鍵盤,也可直接通過計算機自己的鍵盤來操作Hello China。
?
下圖是運行在另外一臺筆記本電腦上的超級終端軟件。絕大部分通過物理鍵盤和顯示器能夠完成的操作,通過超級終端都能完成。一些超級終端無法支持的按鍵輸入,比如“CTRL + ALT + DELETE”,就無法處理了。
統一了設備訪問接口
應用程序可通過訪問文件的接口,來訪問任何驅動程序。比如,用戶可以采用下列代碼來直接訪問串口設備:
?
???????? #defineTARGET_FILE_NAME “\\\\.\\COM1”
hCom1 = IOManager.CreateFile(
?????????????????? (__COMMON_OBJECT*)&IOManager,
?????????????????? TARGET_FILE_NAME,
?????????????????? 0,
?????????????????? 0,
?????????????????? NULL);
???????? if(NULL== hCom1)
???????? {
?????????????????? PrintLine("ComDebug: Can not open COM1 interface.");
?????????????????? goto__TERMINAL;
???????? }
???????? else
???????? {
?????????????????? PrintLine("ComDebug:Open COM1 interface successfully.");
?????????????????? if(IOManager.WriteFile((__COMMON_OBJECT*)&IOManager,
??????????????????????????? hCom1,
??????????????????????????? strlen(pData),
??????????????????????????? pData,
??????????????????????????? &dwWriteSize))
?????????????????? {
??????????????????????????? PrintLine("Writedata to COM1 interface successfully.");
?????????????????? }
?????????????????? else
?????????????????? {
??????????????????????????? PrintLine("Cannot write data to COM1 interface.");
?????????????????? }
?????????????????? PrintLine("ComDebug:Try to read data from COM interface...");
?????????????????? if(!IOManager.ReadFile((__COMMON_OBJECT*)&IOManager,
??????????????????????????? hCom1,
??????????????????????????? 1,
??????????????????????????? (LPVOID)&buff[0],
??????????????????????????? NULL))
?????????????????? {
??????????????????????????? PrintLine("Cannot read COM interface.");
?????????????????? }
?????????????????? else
?????????????????? {
??????????????????????????? PrintLine("ReadCOM interface sucessfully.");
?????????????????? }
???????? }
?
訪問串口的代碼與訪問普通文件的代碼一樣。只要把上述代碼中的文件名,修改為一個普通文件,上述代碼就完成了普通文件的讀寫功能。
?
定義了統一的消息輸入框架
不論是鍵盤輸入,還是通過串口的輸入,甚至是其它具備主動輸入能力的輸入,都被統一處理,遵循統一的消息傳遞路徑,把消息傳遞給應用程序或shell。這樣的好處是,不論我的操作方式是什么,是串口也好,是鍵盤和鼠標也好,甚至是基于網絡的telnet,應用程序統統不用關心,只要統一調用GetMessage來處理消息隊列中的消息即可。這樣就最大程度的保證了應用程序的可移植性。
?
其他一些改進
除此之外,還做了一些其它的修改和改進,比如代碼的規范性,注釋,修改了幾個導致內存泄漏的地方,進一步優化了程序框架,使得整個內核可配置可裁剪,等等。
?
V1.76版已成功移植到MDK編譯開發環境,順利通過編譯鏈接。但由于目標硬件尚未定義好,故尚未完成移植。接下來的工作將分兩步進行(同步):
第一步:增加GPRS/3G等無線網絡支持功能和Zigbee通信功能,基于PC構筑一個智能家居控制系統;
第二步:啟動向STM32平臺上的移植。
V1.76版的內核源代碼(其他模塊,比如GUI等,無變化),可從下列鏈接下載:
http://download.csdn.net/detail/hellochina15/6399069
轉載于:https://www.cnblogs.com/fengju/p/6174206.html
總結
以上是生活随笔為你收集整理的物联网操作系统Hello China V1.76(PC串口版)版本发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何:添加缺少的 ContentPlac
- 下一篇: Windows 7安装PlayReady