日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

物联网操作系统Hello China V1.76(PC串口版)版本发布

發(fā)布時間:2025/3/15 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 物联网操作系统Hello China V1.76(PC串口版)版本发布 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作為向ARM平臺移植的基線版本,經(jīng)過三個多月的努力,Hello China V1.76終于完成并發(fā)布。相對原來發(fā)布的V1.75版本,該版本主要做了如下修改:

徹底去掉了原來版本源代碼中的C++特性,采用純C語言實現(xiàn)

V1.75以前的版本,不論是內(nèi)核還是GUI/網(wǎng)絡(luò)等外圍模塊,都是采用C++語言編寫的。雖然僅僅使用了諸如函數(shù)名重載/自定義對象類型等初級特性,但是在遷移到其它非VC開發(fā)環(huán)境的時候,發(fā)現(xiàn)還是困難重重。于是在V1.76版本的實現(xiàn)中,全部去掉了C++特性,完全采用純C語言實現(xiàn)。

這樣修改之后,順利移植到MDK/GCC等開發(fā)環(huán)境上。由此也事實上證明,用C++語言實現(xiàn)操作系統(tǒng)的內(nèi)核,還是有難度的。

增加了串口驅(qū)動程序及內(nèi)置的基于串口的shell

原來版本雖然也具備串口通信功能,但串口驅(qū)動并未納入Hello China的驅(qū)動程序框架。在V1.76內(nèi)核的實現(xiàn)中,把串口作為基礎(chǔ)的調(diào)試接口,為之編寫了完整的驅(qū)動程序,并納入統(tǒng)一的驅(qū)動程序框架。這樣,一臺運行Hello China的計算機,就無需有物理屏幕和鍵盤了,可以由另外一臺計算機通過串口進行操作。比如,在我的老舊的DELL電腦上運行Hello China,在另一臺上網(wǎng)本上運行超級終端,就可操作DELL計算機了。前提是,使用交叉串口線,把DELL計算機和上網(wǎng)本連接起來,同時設(shè)置串口波特率為9600,無奇偶校驗,8位數(shù)據(jù)位,一個停止位,即最常用的串口默認(rèn)設(shè)置。由于Hello China V1.76版尚未加入USB驅(qū)動程序,因此必須具備物理串口。

下圖是運行Hello China V1.75的DELL筆記本,當(dāng)然,如果有屏幕和鍵盤,也可直接通過計算機自己的鍵盤來操作Hello China。

?

下圖是運行在另外一臺筆記本電腦上的超級終端軟件。絕大部分通過物理鍵盤和顯示器能夠完成的操作,通過超級終端都能完成。一些超級終端無法支持的按鍵輸入,比如“CTRL + ALT + DELETE”,就無法處理了。

統(tǒng)一了設(shè)備訪問接口

應(yīng)用程序可通過訪問文件的接口,來訪問任何驅(qū)動程序。比如,用戶可以采用下列代碼來直接訪問串口設(shè)備:

?

???????? #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.");

?????????????????? }

???????? }

?

訪問串口的代碼與訪問普通文件的代碼一樣。只要把上述代碼中的文件名,修改為一個普通文件,上述代碼就完成了普通文件的讀寫功能。

?

定義了統(tǒng)一的消息輸入框架

不論是鍵盤輸入,還是通過串口的輸入,甚至是其它具備主動輸入能力的輸入,都被統(tǒng)一處理,遵循統(tǒng)一的消息傳遞路徑,把消息傳遞給應(yīng)用程序或shell。這樣的好處是,不論我的操作方式是什么,是串口也好,是鍵盤和鼠標(biāo)也好,甚至是基于網(wǎng)絡(luò)的telnet,應(yīng)用程序統(tǒng)統(tǒng)不用關(guān)心,只要統(tǒng)一調(diào)用GetMessage來處理消息隊列中的消息即可。這樣就最大程度的保證了應(yīng)用程序的可移植性。

?

其他一些改進

除此之外,還做了一些其它的修改和改進,比如代碼的規(guī)范性,注釋,修改了幾個導(dǎo)致內(nèi)存泄漏的地方,進一步優(yōu)化了程序框架,使得整個內(nèi)核可配置可裁剪,等等。

?

V1.76版已成功移植到MDK編譯開發(fā)環(huán)境,順利通過編譯鏈接。但由于目標(biāo)硬件尚未定義好,故尚未完成移植。接下來的工作將分兩步進行(同步):

第一步:增加GPRS/3G等無線網(wǎng)絡(luò)支持功能和Zigbee通信功能,基于PC構(gòu)筑一個智能家居控制系統(tǒng);

第二步:啟動向STM32平臺上的移植。

V1.76版的內(nèi)核源代碼(其他模塊,比如GUI等,無變化),可從下列鏈接下載:

http://download.csdn.net/detail/hellochina15/6399069


轉(zhuǎn)載于:https://www.cnblogs.com/fengju/p/6174206.html

總結(jié)

以上是生活随笔為你收集整理的物联网操作系统Hello China V1.76(PC串口版)版本发布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。