《鴻蒙HarmonyOS網絡編程》直播答疑
https://harmonyos.51cto.com/#zz
1. 許老師,3861在STA模式下如何獲取本機的IP地址,可以修改hostname嗎,就是在路由器上顯示的名稱?
答:可以用Hi3861 SDK提供的netifapi_netif_get_addr接口,獲取本機的IP地址;
可以用Hi3861 SDK提供的netifapi_set_hostname接口,設置主機名稱(路由器配置界面上可以查看到);
2. 今天上課所講的是屬于南向的通信,通過之前的公開課我大概理解了北向開發之間的實時互聯,南北之間實現實時互聯的一個邏輯是什么?
答:目前來說,南北向之間的互聯,有兩種實現方式:
1. 使用鴻蒙的“分布式軟總線”,優點是軟總線本身已經實現了設備發現、傳輸層安全等特性,可以比較方便的實現安全、可靠的互聯;限制是,對端設備也必須是搭載鴻蒙鴻蒙系統或者HMS Core的Android配備(必須是華為的設備);
2. 使用傳統的網絡協議,例如TCP/UDP/MQTT等;優點是,對端設備只要支持TCP/IP協議即可,可以是任意OS,任意形態,不一定是華為設備,不一定是手機;缺點是,需要開發者自己實現設備發現、連接管理、傳輸層安全等特性,開發難度和工作量較大;
3. 請問鴻蒙系統支持以太網,WIFI多網絡共存,是否支持優先級控制?請問支持最新的wifi6嗎?
答:LwIP支持多網口,鴻蒙網絡協議棧用的是LwIP,是支持WiFi以太網共存的,比如3516開發板。目前不支持wifi6。
4. 請問老師剛開始講課時提到,鴻蒙的API跟海思的API都提供了 wifi不同模式,那么在代碼里面的體現方式有什么不一樣嗎?
答:最直觀的區別是命名風格,鴻蒙API命名是大駝峰,海思API是下劃線。
5. Harmony OS所帶的TCP/IP協議棧和LwIP的比較?
答:鴻蒙帶的就是LwIP,只不過有一些修改;海思Hi3861下的lwip添加了一些新的接口例如DHCP服務端等;
liteos-a上的lwip是socket接口的內核實現,對上接口是glibc風格的,和其他Unix系統基本一致。
6. 怎樣在hi3516用js寫app,調用硬件的能力?像上網,攝像頭,喇叭?
答:目前開源的openharmony,js引擎使用的JerryScript,使用硬件能力需要:
1. 借助JerryScript的C擴展,實現JS調用C代碼(具體可以參考JerryScript項目的C擴展文檔:https://jerryscript.net/ext-reference-module/,其中最重要的是jerry_create_external_function這個接口);
2. hi3516上面的話,ace框架對JerryScript的C擴展做了一層封裝,在ace框架的封裝之上實現擴展,相比直接使用JerryScript的C擴展要容易一些;
3. 在C擴展接口的實現中,用C語言實現硬件的訪問和控制;
7. 請問許老師,如果鴻蒙3861控制機器人,是不是先編寫STA鏈接WIFI,在寫UDP綁定端口得代碼,然后發送指令?
答:是這樣的思路,具體實施過程可能需要查閱機器人相關的SDK文檔。
8. 請問3861和智能音箱該怎么結合呢?例如天貓精靈,打開臥室燈光?
答:天貓精靈有SDK,具體信息可以在他們的SDK頁面上了解。
9. 這個bsd socket跟一般PC上的socket編程有什么不一樣的地方么?
答:一樣的,Socket API最早來源于BSD Unix發行版,所以也叫BSD Socket。
10. 請問老師,鴻蒙中主要是異步編程嘛?和go的異步模型有什么區別?
答:鴻蒙支持異步編程,但不是主要的方式;少部分API接口是異步的,大部分是同步的。go的異步是由協程(goroutine)和管道(channel)實現的CSP(Communicating Sequential Processes)模型;鴻蒙目前還沒有支持協程,但是支持進程和線程(liteos-a上兩者都支持,liteos-m上只支持線程)。
11. 可以應用到物聯網么?比如農業/畜牧業?
答:可以的
12. 支持鴻蒙系統4G/5G的開發板型號是什么?
答:目前還有沒有支持4G/5G的鴻蒙系統開發板。
13. 鴻蒙的liteos-a內核成熟后會不會不再使用linux內核?
答:應該不會,liteos-a和linux內核目標設備的資源等級不同,linux用來支持系統資源更豐富的芯片平臺,未來一段時間應該是會并行演進的。
14. 鴻蒙跟liteos有什么區別?
答:鴻蒙是完整的OS,liteos只是內核,兩者關系類似于Linux發行版(如Debian、Ubuntu)和Linux內核的關系。
15. 鴻蒙OS的開源程度?開源到什么程度,是100%開源嗎?
答:9月10號的開發者大會上有開源路線圖(可以在網上搜到回放),目前不是100%開源,下一步會開源的是鴻蒙的Linux內核。
16. Harmony的優先級范圍,如何處理優先級反轉問題?
答:目前liteos-m和liteos-a的優先級有32個,最高是0,最低是31;“優先級反轉問題”LiteOS里面有優先級繼承來規避這個問題,但是應用程序使用信號量之類時還是需要細致和小心。
17. 請問老師注冊的任務是如何執行的?
答:啟動過程中執行的,具體源碼解析可以取社區里面看連志安老師之前發過一篇帖子。
18. 必須用windows開發么?可以用linux開發么?
答:不是必須的,可以用Linux開發,但是目前燒錄工具都是Windows版的,在Linux上需要使用Wine運行燒錄工具。
19. HarmonyOS使用什么開發環境?
答:南向開發用的是VSCode + DevEco Device Tool,北向用的是DevEco Studio;
20. 鴻蒙OS能夠實現跨端應用嗎?
答:可以實現。
21. 鴻蒙OS開發應用能夠支持熱加載嗎?
答:目前開源的代碼里面還不支持熱加載。
22. 鴻蒙OS開發應用有沒有大小限制?
答:有一定限制,主要受限于內核和設備本身的內存閃存等硬件資源,例如目前Hi3516開發板有1G RAM,內核的DDRMEMSIZE 定義的是 512M;Hi3518芯片集成64M RAM,Hi3861芯片集成352 KB SRAM。
23. 鴻蒙OS適合于開發離線應用嗎?
答:可以開發離線應用,但鴻蒙支持分布式特性(分布式軟總線,分布式調度等),更適合于開發多端協同的應用。
24. HarmonyOS這用的是什么開發語言,要如何玩起來,可以用來解決生活中什么問題?
答:南向開發用的是C/C++,北向開發用的是Java/JavaScript,可以用在智能家居之類的應用場景中。
25. 編譯文件gn和Makefile相比有什么特別之處?
gn是兩階段的構建,先gn將.gn文件轉為.ninja描述的依賴關系文件,再用ninja命令執行實際的構建過程。
特別之處——gn的語法是C風格的(作用域、判斷、循環等),對于有C系列語言基礎的程序員更友好。
26. 這個用的哪些庫?
LwIP —— 一個輕量級的TCP/IP協議棧
https://harmonyos.51cto.com/#zz