《HarmonyOS网络编程》直播答疑
1、许老师,3861在STA模式下如何获取本机的IP地址,可以修改hostname吗,就是在路由器上显示的名称?
答:可以用Hi3861 SDK提供的netifapi_netif_get_addr接口,获取本机的IP地址;
可以用Hi3861 SDK提供的netifapi_set_hostname接口,设置主机名称(路由器配置界面上可以查看到);
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,使用硬件能力需要:
借助JerryScript的C扩展,实现JS调用C代码(具体可以参考JerryScript项目的C扩展文档: https://jerryscript.net/ext-reference-module/ ,其中最重要的是jerry_create_external_function这个接口);
hi3516上面的话,ace框架对JerryScript的C扩展做了一层封装,在ace框架的封装之上实现扩展,相比直接使用JerryScript的C扩展要容易一些;
在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协议栈
作者:许思维
想了解更多内容,请访问:
51CTO和华为官方战略合作共建的鸿蒙技术社区
https://harmonyos.51cto.com#bky