Răsfoiți Sursa

【完善】:添加说明文档内容

SummerGift 7 ani în urmă
părinte
comite
7c3b149b4c

+ 1 - 1
docs/05-System_Module/01-uos.md

@@ -24,7 +24,7 @@
 删除目录。
 删除目录。
 
 
 ### **uos.rename**(old_path, new_path)  
 ### **uos.rename**(old_path, new_path)  
-重命名文件。
+重命名文件或者文件夹
 
 
 ### **uos.stat**(path)  
 ### **uos.stat**(path)  
 获取文件或目录的状态。
 获取文件或目录的状态。

+ 83 - 16
docs/05-System_Module/02-uselect.md

@@ -1,16 +1,8 @@
 # **uselect** – 等待流事件
 # **uselect** – 等待流事件
 !!! abstract "简介"
 !!! abstract "简介"
-    `uselect` 模块提供了在流上等待事件功能(选择可操作的流),轮询是在多个对象上等待读/写活动的有效方法
+    `uselect` 模块提供了等待数据流的事件功能。
 
 
-## 函数
-
-### **select.poll**()  
-创建轮询类的实例。
-
-### **select.select**(rlist, wlist, xlist[, timeout])  
-等待激活一组对象。提供的兼容性和效率不高,推荐使用 `Poll`。
-
-## `eventmask` 
+## 常数
 
 
 ### **select.POLLIN** - 读取可用数据  
 ### **select.POLLIN** - 读取可用数据  
 
 
@@ -19,18 +11,93 @@
 ### **select.POLLERR** - 发生错误  
 ### **select.POLLERR** - 发生错误  
 
 
 ### **select.POLLHUP** - 流结束/连接终止检测  
 ### **select.POLLHUP** - 流结束/连接终止检测  
-eventmask 默认 select.POLLIN | select.POLLOUT.
 
 
-## 类 Poll
+## 函数
+
+### **select.select**(rlist, wlist, xlist[, timeout])  
+监控对象何时可读或可写,一旦监控的对象状态改变,返回结果(阻塞线程)。这个函数是为了兼容,效率不高,推荐用 `poll` 函数 。
+
+```
+rlist:等待读就绪的文件描述符数组
+wlist:等待写就绪的文件描述符数组
+xlist:等待异常的数组
+timeout:等待时间(单位:秒)
+```
+示例:
+
+```python
+def selectTest():
+  global s
+  rs, ws, es = select.select([s,], [], [])
+  #程序会在此等待直到对象s可读
+  print(rs)
+  for i in rs:
+    if i == s:
+      print("s can read now")
+      data,addr=s.recvfrom(1024)
+      print('received:',data,'from',addr)
+```
+
+## Poll 类
+
+### **select.poll**()  
+创建轮询实例。
+
+示例:
+
+```
+>>>poller = select.poll()
+>>>print(poller)
+<poll>
+```
 
 
 ### **poll.register**(obj[, eventmask])  
 ### **poll.register**(obj[, eventmask])  
-注册轮询对象 。 
+注册一个用以监控的对象,并设置被监控对象的监控标志位 flag。 
+
+```
+obj:被监控的对象
+flag:被监控的标志
+    select.POLLIN — 可读
+    select.POLLHUP — 已挂断
+    select.POLLERR — 出错
+    select.POLLOUT — 可写
+```
+
 ### **poll.unregister**(obj)  
 ### **poll.unregister**(obj)  
-注销轮询对象。
+解除监控的对象的注册。 
+
+```
+obj:注册过的对象
+```
+
+示例:
+
+```
+>>>READ_ONLY = select.POLLIN | select.POLLHUP | select.POLLERR
+>>>READ_WRITE = select.POLLOUT | READ_ONLY
+>>>poller.register(s, READ_WRITE)
+>>>poller.unregister(s)
+```
+
 ### **poll.modify**(obj, eventmask)  
 ### **poll.modify**(obj, eventmask)  
-修改对象的 eventmask。
+修改已注册的对象监控标志。 
+
+```
+obj:已注册的被监控对象
+flag:修改为的监控标志
+```
+
+示例:
+
+```
+>>>READ_ONLY = select.POLLIN | select.POLLHUP | select.POLLERR
+>>>READ_WRITE = select.POLLOUT | READ_ONLY
+>>>poller.register(s, READ_WRITE)
+>>>poller.modify(s, READ_ONLY)
+```
+
 ### **poll.poll**([timeout])  
 ### **poll.poll**([timeout])  
-等待至少一个已注册的对象准备就绪。返回列表(obj, event, ...) 元组, event 元素指定了一个流发生的事件,是上面所描述的 `select.POLL*`常量组合。 在元组中可能有其他元素,取决于平台和版本,所以不要假定它的大小是2。如果超时,则返回空列表。超时为毫秒。
+等待至少一个已注册的对象准备就绪。返回 (obj, event, ...) 元组, event 元素指定了一个流发生的事件,是上面所描述的 `select.POLL*`常量组合。 根据平台和版本的不同,在元组中可能有其他元素,所以不要假定元组的大小是 2 。如果超时,则返回空列表
 
 
 更多内容可参考 [uselect](http://docs.micropython.org/en/latest/pyboard/library/uselect.html) 。
 更多内容可参考 [uselect](http://docs.micropython.org/en/latest/pyboard/library/uselect.html) 。
 
 

+ 17 - 15
docs/05-System_Module/05-_thread.md

@@ -4,23 +4,25 @@
 
 
 ## 示例
 ## 示例
 
 
-```
->>> ###  press CTRL + E to enter paste mode
-
-paste mode; Ctrl-C to cancel, Ctrl-D to finish
-=== import _thread
-=== import time
-=== 
-=== def testThread():
-===     while True:
-===         print("Hello from thread")
-===         time.sleep(2)
-=== 
-=== _thread.start_new_thread(testThread, ())
-=== while True:
-===     pass
+```python
+import _thread
+import time
+def testThread():
+    while True:
+        print("Hello from thread")
+        time.sleep(2)
 
 
+_thread.start_new_thread(testThread, ())
+while True:
+    pass
 ```
 ```
+输出结果(启动新的线程,每隔两秒打印字符): 
+
+Hello from thread  
+Hello from thread  
+Hello from thread  
+Hello from thread  
+Hello from thread  
 
 
 更多内容可参考 [_thread](http://docs.micropython.org/en/latest/pyboard/library/_thread.html)  。
 更多内容可参考 [_thread](http://docs.micropython.org/en/latest/pyboard/library/_thread.html)  。
 
 

+ 3 - 3
docs/06-Tools_Module/03-uhashlib.md

@@ -5,13 +5,13 @@
 ## 算法功能
 ## 算法功能
 
 
 ### **SHA256** 
 ### **SHA256** 
-The current generation, modern hashing algorithm (of SHA2 series). It is suitable for cryptographically-secure purposes. Included in the MicroPython core and any board is recommended to provide this, unless it has particular code size constraints.
+当代的散列算法(SHA2系列),它适用于密码安全的目的。被包含在 MicroPython 内核中,除非有特定的代码大小限制,否则推荐任何开发板都支持这个功能。
 
 
 ### **SHA1**
 ### **SHA1**
-A previous generation algorithm. Not recommended for new usages, but SHA1 is a part of number of Internet standards and existing applications, so boards targetting network connectivity and interoperatiability will try to provide this.
+上一代的算法,不推荐新的应用使用这种算法,但是 SHA1 算法是互联网标准和现有应用程序的一部分,所以针对网络连接便利的开发板会提供这种功能。
 
 
 ### **MD5** 
 ### **MD5** 
-A legacy algorithm, not considered cryptographically secure. Only selected boards, targetting interoperatibility with legacy applications, will offer this.
+一种遗留下来的算法,作为密码使用被认为是不安全的。只有特定的开发板,为了兼容老的应用才会提供这种算法。
 
 
 ## 函数
 ## 函数
 
 

+ 30 - 2
docs/06-Tools_Module/05-ujson.md

@@ -5,10 +5,38 @@
 ## 函数
 ## 函数
 
 
 ### **ujson.dumps**(obj)  
 ### **ujson.dumps**(obj)  
-返回对象的 JSON 字符串。
+将 dict 类型的数据转换成 str,因为如果直接将 dict 类型的数据写入 json 文件中会发生报错,因此在将数据写入时需要用到该函数。 
+
+```
+obj:要转换的对象
+```
+
+示例:
+
+```
+>>> 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}
+```
 
 
 ### **ujson.loads**(str)  
 ### **ujson.loads**(str)  
-解析 str 字符串并返回对象。如果字符串格式错误将引发 ValueError 异常。
+解析 JSON 字符串并返回对象。如果字符串格式错误将引发 ValueError 异常。 
+示例:
+
+```
+>>> 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}
+```
 
 
 更多内容可参考 [ujson](http://docs.micropython.org/en/latest/pyboard/library/ujson.html)  。
 更多内容可参考 [ujson](http://docs.micropython.org/en/latest/pyboard/library/ujson.html)  。
 
 

+ 159 - 15
docs/06-Tools_Module/08-urandom.md

@@ -4,28 +4,172 @@
 
 
 ## 函数 
 ## 函数 
 
 
-### **urandom.choice**()  
-Return a random element from the non-empty sequence seq. If seq is empty, raises IndexError.
+### **urandom.choice**(obj)  
 
 
-### **urandom.getrandbits**()  
-Returns a Python integer with k random bits. This method is supplied with the MersenneTwister generator and some other generators may also provide it as an optional part of the API. When available, getrandbits() enables randrange() to handle arbitrarily large ranges.
+随机生成对象 obj 中的元数。
 
 
-### **urandom.randint**()  
-Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).
+```
+obj:元数列表
+```
+
+示例:
+
+```python
+>>> print(random.choice("DFRobot"))
+R
+>>> print(random.choice("DFRobot"))
+D
+>>> print(random.choice([0, 2, 4, 3]))
+3
+>>> print(random.choice([0, 2, 4, 3]))
+3
+>>> print(random.choice([0, 2, 4, 3]))
+2
+```
+
+### **urandom.getrandbits**(size)  
+
+随机生成 0 到 size 个位二进制数范围内的正整数。 比如 :
+
+- size = 4,那么便是从 0 到0b1111中随机一个正整数。 
+- size = 8,那么便是从 0 到 0b11111111中随机一个正整数。
+
+```python
+size:位大小
+```
+
+示例:
+
+```python
+>>> print( random.getrandbits(1))  #1位二进制位,范围为0~1(十进制:0~1)
+1
+>>> print(random.getrandbits(1))
+0
+>>> print(random.getrandbits(8))  #8位二进制位,范围为0000 0000~1111 11111(十进制:0~255)
+224
+>>> print(random.getrandbits(8))
+155
+```
+
+### **urandom.randint**(start, end)  
+
+随机生成一个 start 到 end 之间的整数。 
+
+```
+start:指定范围内的开始值,包含在范围内
+end:指定范围内的结束值,包含在范围内
+```
+
+示例:
+
+```python
+>>> import random
+>>> print(random.randint(1, 4))
+4
+>>> print(random.randint(1, 4))
+2
+```
 
 
 ### **urandom.random**()  
 ### **urandom.random**()  
-Return the next random floating point number in the range [0.0, 1.0).
+随机生成一个 0 到 1 之间的浮点数。 
+示例:
+
+```python
+>>> print(random.random())
+0.7111824
+>>> print(random.random())
+0.3168149
+```
+
+### **urandom.randrange**(start, end, step)  
+
+随机生成 start 到 end 并且递增为 step 的范围内的正整数。例如,randrange(0, 8, 2)中,随机生成的数为 0、2、4、6 中任一个。
+
+```
+start:指定范围内的开始值,包含在范围内
+end:指定范围内的结束值,包含在范围内
+step:递增基数
+```
+
+示例:
+
+```python
+>>> print(random.randrange(2, 8, 2))
+4
+>>> print(random.randrange(2, 8, 2))
+6
+>>> print(random.randrange(2, 8, 2))
+2
+```
+
+### **urandom.seed**(sed)  
+
+指定随机数种子,通常和其他随机数生成函数搭配使用。 
+**注意:** 
+   MicroPython 中的随机数其实是一个稳定算法得出的稳定结果序列,而不是一个随机序列。sed 就是这个算法开始计算的第一个值。所以就会出现只要 sed 是一样的,那么后续所有“随机”结果和顺序也都完全一致。
+
+```
+sed:随机数种子
+```
+
+示例:
+
+```python
+import random
+
+for j in range(0, 2):
+  random.seed(13)  #指定随机数种子
+  for i in range(0, 10):  #生成0到10范围内的随机序列
+    print(random.randint(1, 10))
+  print("end")
+```
+
+运行结果:
+
+```
+5
+2
+3
+2
+3
+4
+2
+5
+8
+2
+end
+5
+2
+3
+2
+3
+4
+2
+5
+8
+2
+end
+```
+
+   从上面可以看到生成两个随机数列表是一样的,你也可以多生成几个随机数列表看看。另外当我们不用 seed(sed) 函数时,相当于没有指定随机种子,这样就是随机生成的。
+
+### **urandom.uniform**(start, end)  
+
+随机生成start到end之间的浮点数。
 
 
-### **urandom.randrange**()  
-Return a randomly selected element from range(start, stop, step). This is equivalent to choice(range(start, stop, step)), but doesn’t actually build a range object.
+```
+start:指定范围内的开始值,包含在范围内
+stop:指定范围内的结束值,包含在范围内
+```
 
 
-### **urandom.seed**()  
-Initialize the random number generator.
-If a is omitted or None, the current system time is used. If randomness sources are provided by the operating system, they are used instead of the system time (see the os.urandom() function for details on availability).
+示例:
 
 
-### **urandom.uniform**()  
-Return a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < a.
-The end-point value b may or may not be included in the range depending on floating-point rounding in the equation a + (b-a) * random().
+```python
+>>> print(random.uniform(2, 4))
+2.021441
+>>> print(random.uniform(2, 4))
+3.998012
+```
 
 
 更多内容可参考 [urandom](https://docs.python.org/3/library/random.html?highlight=random#module-random) 。
 更多内容可参考 [urandom](https://docs.python.org/3/library/random.html?highlight=random#module-random) 。
 
 

+ 114 - 35
docs/07-Network_Module/01-usocket.md

@@ -4,38 +4,42 @@
 
 
 ## 常数
 ## 常数
 
 
-### **socket.AF_INET**  
-### **socket.AF_INET6**  
+### 地址簇
+- socket.AF_INET =2 — TCP/IP – IPv4
+- socket.AF_INET6 =10 — TCP/IP – IPv6
 
 
-`TCP类型定义`
+### 套接字类型
+- socket.SOCK_STREAM =1 — TCP流
+- socket.SOCK_DGRAM =2 — UDP数据报
+- socket.SOCK_RAW =3 — 原始套接字
+- socket.SO_REUSEADDR =4 — socket可重用
 
 
-### **socket.SOCK_STREAM**  
-### **socket.SOCK_DGRAM**  
+### IP协议号
+- socket.IPPROTO_TCP =16
+- socket.IPPROTO_UDP =17
 
 
-`Socket类型`
-
-### **socket.IPPROTO_UDP**  
-### **socket.IPPROTO_TCP**  
-
-`IP协议号`
-
-### **socket.SOL_***  
-Socket option levels (an argument to setsockopt()). The exact inventory depends on a board.
-
-### **socket.SO_***  
-Socket options (an argument to setsockopt()). The exact inventory depends on a board.
-
-### **socket.IPPROTO_SEC**  
-Special protocol value to create SSL-compatible socket.
+### 套接字选项级别
+- socket.SOL_SOCKET =4095
 
 
 ## 函数
 ## 函数
 
 
 ### **socket.socket**(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)  
 ### **socket.socket**(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)  
 创建新的套接字,使用指定的地址、类型和协议号。
 创建新的套接字,使用指定的地址、类型和协议号。
 
 
-### **socket.getaddrinfo**(host, port)  
-传递 主机/端口 到一个5个数据的元组。元组列表的结构如下:
+### **socket.getaddrinfo**(host, port) 
+将主机域名(host)和端口(port)转换为用于创建套接字的5元组序列。元组列表的结构如下:
+
+```
 (family, type, proto, canonname, sockaddr)
 (family, type, proto, canonname, sockaddr)
+```
+
+示例:
+
+```
+>>> info = socket.getaddrinfo("127.0.0.1", 10000)
+>>> print(info)
+[(2, 1, 0, '127.0.0.1', ('127.0.0.1', 10000))]
+```
 
 
 ### **socket.close**()  
 ### **socket.close**()  
 关闭套接字。一旦关闭后,套接字所有的功能都将失效。远端将接收不到任何数据 (清理队列数据后)。 在回收垃圾时套接字会自动关闭,但还是推荐在必要时用 close() 去关闭,或, or to use a with statement around them。
 关闭套接字。一旦关闭后,套接字所有的功能都将失效。远端将接收不到任何数据 (清理队列数据后)。 在回收垃圾时套接字会自动关闭,但还是推荐在必要时用 close() 去关闭,或, or to use a with statement around them。
@@ -44,34 +48,110 @@ Special protocol value to create SSL-compatible socket.
 将套接字绑定到地址,套接字不能是已经绑定的。
 将套接字绑定到地址,套接字不能是已经绑定的。
 
 
 ### **socket.listen**([backlog])  
 ### **socket.listen**([backlog])  
-允许服务器接收连接。如果指定了 backlog,它不能小于0 (如果小于0将自动设置为0);超出后系统将拒绝新的连接。如果没有指定,将使用默认值。
+监听套接字,使服务器能够接收连接。
+```
+backlog:接受套接字的最大个数,至少为0,如果没有指定,则默认一个合理值。
+```
 
 
 ### **socket.accept**()  
 ### **socket.accept**()  
-接收连接。套接字需要指定地址并监听连接。返回值是 (conn, address),其中conn是用来接收和发送数据的套接字,address是绑定到另一端的套接字。
+接收连接请求。 
+**注意:** 
+   只能在绑定地址端口号和监听后调用,返回conn和address。
+
+```
+conn:新的套接字对象,可以用来收发消息
+address:连接到服务器的客户端地址
+```
 
 
 ### **socket.connect**(address)  
 ### **socket.connect**(address)  
-连接到指定地址的远端套接字。
+连接服务器。
+
+```
+address:服务器地址和端口号的元组或列表
+```
 
 
 ### **socket.send**(bytes)  
 ### **socket.send**(bytes)  
-发送数据。套接字需要已连接到远程。
+发送数据,并返回发送的字节数。
+
+```
+bytes:bytes类型数据
+```
 
 
 ### **socket.sendall**(bytes)  
 ### **socket.sendall**(bytes)  
-发送数据。套接字已连接到远程。 Unlike send(), this method will try to send all of data, by sending data chunk by chunk consecutively.
+与 send() 函数类似,区别是 sendall() 函数通过数据块连续发送数据。
+
+```
+bytes:bytes类型数据
+```
+
+示例:
+
+```
+s.sendall("hello DFRobot, I am TCP Client")
+```
 
 
 ### **socket.recv**(bufsize)  
 ### **socket.recv**(bufsize)  
-接收数据,返回值是数据字节对象。bufsize是接收数据的最大数量。
+接收数据,返回接收到的数据对象。
+
+```
+bufsize:指定一次接收的最大数据量
+```
+
+示例:
+
+```
+data = conn.recv(1024)
+```
 
 
 ### **socket.sendto**(bytes, address)  
 ### **socket.sendto**(bytes, address)  
-发送数据。套接字没有连接到远程,目标套接字由地址参数指定。
+发送数据,目标由address决定,用于UDP通信,返回发送的数据大小。
+
+```
+bytes:bytes类型数据
+address:目标地址和端口号的元组
+```
+
+示例:
+
+```
+data = sendto("hello DFRobot", ("192.168.3.147", 100))
+```
 
 
 ### **socket.recvfrom**(bufsize)  
 ### **socket.recvfrom**(bufsize)  
-接收数据。返回值是 (bytes, address),其中 bytes 是字节对象,address 是发送数据的套接字。
+接收数据,用于UDP通信,并返回接收到的数据对象和对象的地址。
+
+```
+bufsize:指定一次接收的最大数据量
+```
+
+示例:
+
+```
+data,addr=fd.recvfrom(1024)
+```
 
 
 ### **socket.setsockopt**(level, optname, value)  
 ### **socket.setsockopt**(level, optname, value)  
-设置套接字参数。需要的符号常数定义在套接字模块 (SO_* 等)。value 可以是整数或字节对象。
+根据选项值设置套接字。
+
+```
+level:套接字选项级别
+optname:套接字的选项
+value:可以是一个整数,也可以是一个表示缓冲区的bytes类对象。
+```
+
+示例:
+
+```
+s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+```
 
 
 ### **socket.settimeout**(value)  
 ### **socket.settimeout**(value)  
-设置阻塞套接字超时时间。value 参数可以是代表秒的正浮点数或 None。如果设定大于 0 的参数,在后面套接字操作超出指定时间后将引起 timeout 异常。如果参数是 0,套接字将使用非阻塞模式。如果是 None,套接字使用阻塞模式。
+设置超时时间,单位:秒。 
+示例:
+
+```
+s.settimeout(2)
+```
 
 
 ### **socket.setblocking**(flag)  
 ### **socket.setblocking**(flag)  
 设置阻塞或非阻塞模式: 如果 flag 是 false,设置非阻塞模式。
 设置阻塞或非阻塞模式: 如果 flag 是 false,设置非阻塞模式。
@@ -84,11 +164,10 @@ Read bytes into the buf. If nbytes is specified then read at most that many byte
 Return value: number of bytes read and stored into buf.
 Return value: number of bytes read and stored into buf.
 
 
 ### **socket.readline**()  
 ### **socket.readline**()  
-读取一行,以换行符结束,返回读取的数据行。
+接收一行数据,遇换行符结束,并返回接收数据的对象 。 
 
 
 ### **socket.write**(buf)  
 ### **socket.write**(buf)  
-Write the buffer of bytes to the socket. This function will try to write all data to a socket (no “short writes”). This may be not possible with a non-blocking socket though, and returned value will be less than the length of buf.
-Return value: number of bytes written.
+将字节类型数据写入套接字,并返回写入数据的大小。 
 
 
 ## 示例
 ## 示例
 
 

+ 1 - 0
docs/08-Packages_Management.md

@@ -1,2 +1,3 @@
 # RT-Thread MicroPython 包管理
 # RT-Thread MicroPython 包管理
 
 
+正在努力中,马上就来