前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP8266上的MicroPython入门(9)

ESP8266上的MicroPython入门(9)

作者头像
云深无际
发布2021-04-14 14:21:13
7550
发布2021-04-14 14:21:13
举报
文章被收录于专栏:云深之无迹云深之无迹
小节将会介绍ubinascii,gc,json,micropython库中得常用函数使用
  1. ubinascii.hexlify(data[, sep])

函数说明:将字符串转换为十六进制表示的字符串。 示例:

代码语言:javascript
复制
>>> ubinascii.hexlify('\x11\x22123')
b'1122313233'
>>> ubinascii.hexlify('abcdfg')
b'616263646667'

如果指定了第二个参数sep,它将用于分隔两个十六进制数。 示例:

代码语言:javascript
复制
>>> ubinascii.hexlify('\x11\x22123', ' ')
b'11 22 31 32 33'
>>> ubinascii.hexlify('\x11\x22123', ',')
b'11,22,31,32,33'
2. ubinascii.unhexlify(data)

函数说明:转换十六进制字符串为二进制字符串,功能和 hexlify 相反。 示例:

代码语言:javascript
复制
>>> ubinascii.unhexlify('313233')
b'123'

gc模块可以回收系统运行中产生的内存碎片。

函数

1. gc.enable()

函数说明:允许自动回收内存碎片。

2. gc.disable()

函数说明:禁止自动回收,但可以通过collect()函数进行手动回收内存碎片。

3. gc.collect()

函数说明:回收内存碎片。

4. gc.mem_alloc()

函数说明:返回已分配的内存数量。

5. gc.mem_free()

函数说明:返回剩余的内存数量。

6. gc.isenabled()

函数说明:判断是否启动自动内存碎片收集。

7. gc.threshold(amount)

函数说明:当未设置参数amount时,返回已设置的GC回收触发阀值,否则设置触发阀值为amount。

json模块提供json数据格式的转换。

函数

1. json.dumps(obj)

函数说明:将dict类型的数据转换成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。

代码语言:javascript
复制
obj:要转换的对象

示例:

代码语言:javascript
复制
>>> obj = {1:2, 3:4, "a":6}
>>> print(type(obj), obj) #原来为dict类型
<class 'dict'> {3: 4, 1: 2, 'a': 6}
>>> jsObj = json.dumps(obj) #将dict类型转换成str
>>> print(type(jsObj), jsObj)
<class 'str'> {3: 4, 1: 2, "a": 6}
2. json.loads(str)

函数说明:解析 JSON 字符串并返回对象。如果字符串格式错误将引发 ValueError 异常。 示例:

代码语言:javascript
复制
>>> obj = {1:2, 3:4, "a":6}
>>> jsDumps = json.dumps(obj)
>>> jsLoads = json.loads(jsDumps)
>>> print(type(obj), obj)
<class 'dict'> {3: 4, 1: 2, 'a': 6}
>>> print(type(jsDumps), jsDumps)
<class 'str'> {3: 4, 1: 2, "a": 6}
>>> print(type(jsLoads), jsLoads)
<class 'dict'> {'a': 6, 1: 2, 3: 4}

micropython—访问和控制MicroPython

函数

1. micropython.const(expr)

函数说明: 用于声明该变量的值是一个常量,以便解释器可以优化它。 示例:

代码语言:javascript
复制
from micropython import const

CONST_X = const(123)
CONST_Y = const(2 * CONST_X + 1)
print(CONST_X)
print(CONST_Y)

运行结果:

代码语言:javascript
复制
123
247

使用 const 声明为一个常量后,它的值不可被更改。 示例:

新建一个文件,命名为test.py

代码语言:javascript
复制


from micropython import const

a = const(1)
a = 4

试图更改常量时,会出产生如下错误。

代码语言:javascript
复制
exec(open('test.py').read(),globals())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 4, in <module>
SyntaxError: can't assign to expression
2. micropython.opt_level(level)

函数说明: 如果给定级别level,那么该函数将为后续的脚本解释执行设置优化级别。否则,它将返回当前的优化级别。

3. micropython.mem_info(level)

函数说明: 打印当前内存使用的情况(包括栈和堆的使用量)。

注意: 如果给出参数level(任何数据类型),则打印出更加详细的信息,它会打印整个堆,指示哪些内存块被使用,哪些内存是空闲的。 示例一: 不给参数

代码语言:javascript
复制
>>>micropython.mem_info()
stack: 736 out of 15360
GC: total: 48000, used: 7984, free: 40016
 No. of 1-blocks: 72, 2-blocks: 31, max blk sz: 264, max free sz: 2492
>>>

示例二: 给定参数

代码语言:javascript
复制
>>>micropython.mem_info("level")
stack: 752 out of 15360
GC: total: 48000, used: 8400, free: 39600
 No. of 1-blocks: 82, 2-blocks: 36, max blk sz: 264, max free sz: 2466
GC memory layout; from 3ffc4930:
00000: h=ShhBMh=DhBhDBBBBhAh===h===Ahh==h==============================
00400: ================================================================
00800: ================================================================
00c00: ================================================================
01000: =========================================hBh==Ah=ShShhThhAh=BhBh
01400: hhBhTShh=h==h=hh=Bh=BDhhh=hh=Bh=hh=Bh=BhBh=hh=hh=h===h=Bhh=h=BhB
01800: h=hh=h=Bh=hBh=h=hBh=h=hBh=h=h=hh=======h========================
01c00: ============================================Bh=hBhTh==hh=hh=Sh=h
02000: h==Bh=B..h...h==....h=..........................................
       (37 lines all free)
0b800: ........................................................
>>>
4. micropython.qstr_info([verbose])

函数说明: 打印当前所有已使用的字符串在内存中的个数,占用内存大小等信息。

注意: 如果给出参数,则打印出具体的字符串信息。打印的信息是依赖于实际情况的,包括被录入的字符串数量和它们使用的RAM的数量。在详细模式中,它打印出所有字符串的名称。 示例一: 不给参数

代码语言:javascript
复制
>>>micropython.qstr_info()  
qstr pool: n_pool=1, n_qstr=4, n_str_data_bytes=31, n_total_bytes=1135
>>>

示例二: 给定参数

代码语言:javascript
复制
>>>micropython.qstr_info("level")  
qstr pool: n_pool=1, n_qstr=4, n_str_data_bytes=31, n_total_bytes=1135
Q(b)
Q(2)
Q(asdfa222)
Q(level)
>>>
5. micropython.stack_use()

函数说明: 返回一个整数,表示正在使用的堆栈的当前量。 示例:

代码语言:javascript
复制
>>>micropython.stack_use()
720
6. micropython.alloc_emergency_exception_buf(size)

函数说明: 设置紧急情况下的(栈溢出,普通RAM不足等)保险RAM分配,使在紧急情况下仍有RAM可用。

代码语言:javascript
复制
size:保险剩余RAM的大小,一般为100
7. micropython.heap_lock()

函数说明: 锁定堆,当堆被锁定时,任何操作都不会分配内存 。如果尝试内存分配操作,则会产生MemoryError错误。

注意: 一旦锁定堆,除非重新开机,否则其他有关堆区的操作都会出错。

8. micropython.heap_unlock()

函数说明:解锁堆

9. micropython.kbd_intr(chr)

函数说明: 在解释执行py文件时设置键盘中断响应。 示例:

代码语言:javascript
复制
#以下程序执行在py文件
import micropython
import time

micropython.kbd_intr(-1)
time.sleep(8)
micropython.kbd_intr(3)
#此时不会再响应键盘的ctrl+c,8秒钟后才可以响应
10. micropython.schedule(func, arg)

函数说明:这个函数通常是用在中断中,用于在退出中断时快速执行函数func。

代码语言:javascript
复制
func:在退出中断时需要快速执行的方法
arg:该方法的变量

示例:

代码语言:javascript
复制
>>> def testFunc(t):
...     print("run now")
...     time.sleep(t)
... 
>>> micropython.schedule(testFunc, 1)
run now
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小节将会介绍ubinascii,gc,json,micropython库中得常用函数使用
  • 2. ubinascii.unhexlify(data)
  • 函数
    • 1. gc.enable()
      • 2. gc.disable()
        • 3. gc.collect()
          • 4. gc.mem_alloc()
            • 5. gc.mem_free()
              • 6. gc.isenabled()
                • 7. gc.threshold(amount)
                • 函数
                  • 1. json.dumps(obj)
                    • 2. json.loads(str)
                    • 函数
                      • 1. micropython.const(expr)
                        • 2. micropython.opt_level(level)
                          • 3. micropython.mem_info(level)
                            • 4. micropython.qstr_info([verbose])
                              • 5. micropython.stack_use()
                                • 6. micropython.alloc_emergency_exception_buf(size)
                                  • 7. micropython.heap_lock()
                                    • 8. micropython.heap_unlock()
                                      • 9. micropython.kbd_intr(chr)
                                        • 10. micropython.schedule(func, arg)
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档