大家好,自从去年(没错,是去年)发布了Py4OH第一个正式版之后,我开启了佛系开发模式,没有继续更新了。有小伙伴可能会问:这一年你干嘛去了,为啥没继续更新???
嗯。。。还是有必要解释一下!
Py4OH作为OpenHarmony轻量级设备上的Python开发平台,其目标是能够胜任工业应用程序的开发及部署,因此在稳定性上就会有要求,而稳定性只能通过时间验证。。。这一年里,我利用业余时间在多种场合下对Py4OH进行了应用开发测试,结果可谓是收获满满(臭虫多多),也因此有了这个Beta版本的Release。
Py4OH 1.1.0 Beta Release Notes:
- 优化REPL与设备的连接方式,增强连接稳定性
- 优化设备端内存利用率,减少长时间运行导致的内存碎片
- 重写Python内置函数print()的实现,解决高频打印时的内存泄露问题
- 重构外设接口(gpio,adc,i2c,uart)
- 新增网络接口(wifi,socket)
- 新增常用数学函数(sin,cos,log,......)
TODO:
- 适配小凌派开发板(RK2206)
- 适配拓维开发板(ESP32)
- 适配龙芯开发板(1C300B)
- 重构spi外设接口
- Bug Fix......
从上述介绍可以看出Py4OH 1.1.0新增了网络编程接口,那么具体如何使用呢?
废话不多说,直接上代码!!!
- TCP客户端编程
TCP 客户端相关接口:
函数名 |
参数 |
返回值 |
功能 |
tcp_client() |
无 |
TCP客户端ID值 |
创建TCP客户端 |
connect(fd, ip, port) |
fd : int,客户端ID值 ip : string,IP地址 port : int,端口号 |
0 -- 连接成功 -1 -- 连接失败 |
通过ip地址和端口号连接到指定服务端 |
recv(fd, n) |
fd : int,客户端ID值 n : int,字节数 |
(r, d) r -- 0 成功,-1 失败 d -- 字节列表 |
最多收取n字节的TCP数据 |
send(fd, bytes) |
fd : int,客户端ID值 bytes : list,字节列表 |
0 -- 发送成功 -1 -- 发送失败 |
发送TCP数据 |
available(fd) |
fd : int,客户端ID值 |
n -- 字节数 |
获取当前有多少TCP数据可收取 |
close(fd) |
fd : int,客户端ID值 |
无 |
关闭TCP客户端 |
- TCP 服务端编程
TCP服务端相关接口:
函数名 |
参数 |
返回值 |
功能 |
tcp_server(block) |
block : bool,是否阻塞 |
TCP服务端ID值 |
创建TCP服务端 |
listen(fd, port) |
fd : int,服务端ID值 port : int,端口号 |
0 -- 监听成功 -1 -- 监听失败 |
监听指定端口 |
accept(fd) |
fd : int,服务端ID值 |
socket id -- 通信ID值 |
接受客户端连接 |
close(fd) |
fd : int,服务端ID值 |
无 |
关闭TCP服务端 |
- UDP 编程
UDP 通信端相关接口:
函数名 |
参数 |
返回值 |
功能 |
udp_point() |
无 |
UDP通信端ID值 |
创建UDP通信端 |
bind(fd, port) |
fd : int,通信端ID值 port : int,端口号 |
0 -- 绑定成功 -1 -- 绑定失败 |
绑定UDP通信端口 |
recvfrom(fd, n) |
fd : int,通信端ID值 n : int,字节数 |
(r, d, remote, port) r -- 0 成功,-1 失败 d -- 字节列表 remote -- 对端地址 port -- 对端端口 |
最多收取n字节的UDP数据 |
sendto(fd, bytes, remote, port) |
fd : int,通信端ID值 bytes : list,字节列表 remote : string,对端地址 port : int,对端通信端口 |
0 -- 发送成功 -1 -- 发送失败 |
发送UDP数据 |
available(fd) |
fd : int,通信端ID值 |
n -- 字节数 |
获取当前有多少UDP数据可收取 |
close(fd) |
fd : int,通信端ID值 |
无 |
关闭UDP通信端 |
既然提供了socket网络编程接口,那么wifi联网接口肯定是少不了的。
示例代码如下:
WIFI 联网相关接口:
函数名 |
参数 |
返回值 |
功能 |
wifi_init() |
无 |
无 |
初始化WIFI模块 |
connect(id, pwd) |
id : string,热点ID值 pwd : string,热点密码 |
0 -- 连接成功 -1 -- 连接失败 |
通过用户名和密码连接热点 |
start() |
无 |
0 -- 启动成功 -1 -- 启动失败 |
开启设备联网 |
stop() |
无 |
无 |
停止设备联网 |
is_ok() |
无 |
True -- 联网成功 False -- 联网失败 |
获取设备联网状态 |
ip_addr() |
无 |
设备IP地址 |
获取设备IP地址 |
wifi_deinit() |
无 |
无 |
反初始化WIFI模块 |
Py4OH语言基础教程:
https://www.bilibili.com/video/BV1Rf4y1Z7N4/
Py4OH使用视频:
https://harmonyos.51cto.com/show/9231
Python设备开发系列文章:
使用Python开发鸿蒙设备程序(1-GPIO外设控制)
使用Python开发鸿蒙设备程序(2-I2C应用实例)
使用Python开发鸿蒙设备程序(3-安防系统雏形)
# 更多Python设备开发文章即将解锁。。。。。。
开源地址:
https://gitee.com/delphi-tang/python-for-hos
Enjoy it!
附件链接:
https://ost.51cto.com/#bkwz