diff --git a/README.html b/README.html new file mode 100644 index 00000000..957a28ec --- /dev/null +++ b/README.html @@ -0,0 +1,1238 @@ +README

NodeMcu

+

A lua based firmware for wifi-soc esp8266

+

version 0.9.2 build 2014-11-18

+

Change log

+

change log

+变更日志

+

Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IO indexESP8266 pinIO indexESP8266 pin
0GPIO128GPIO0
1GPIO139GPIO2
2GPIO1410GPIO4
3GPIO1511GPIO5
4GPIO3
5GPIO1
6GPIO9
7GPIO10
+ +

Flash the firmware

+

nodemcu_512k.bin: 0x00000

+for most esp8266 modules, just pull GPIO0 down and restart.

+

Connect the hardware in serial

+

braudrate:9600

+

Start play

+

Connect to your ap

+
    print(wifi.sta.getip())
+    --0.0.0.0
+    wifi.setmode(wifi.STATION)
+    wifi.sta.config("SSID","password")
+    print(wifi.sta.getip())
+    --192.168.18.110
+
+ + +

Manipulate hardware like a arduino

+
    pin = 1
+    gpio.mode(pin,gpio.OUTPUT)
+    gpio.write(pin,gpio.HIGH)
+    print(gpio.read(pin))
+
+ + +

Write network application in nodejs style

+
    -- A simple http client
+    conn=net.createConnection(net.TCP, false) 
+    conn:on("receive", function(conn, payload) print(c) end )
+    conn:connect(80,"115.239.210.27")
+    conn:send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\n"
+        .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")
+
+ + +

Or a simple http server

+
    -- A simple http server
+    srv=net.createServer(net.TCP) 
+    srv:listen(80,function(conn) 
+      conn:on("receive",function(conn,payload) 
+        print(payload) 
+        conn:send("<h1> Hello, NodeMcu.</h1>")
+      end) 
+    end)
+
+ + +

Do something shining

+
  function led(r,g,b) 
+    pwm.setduty(0,r) 
+    pwm.setduty(1,g) 
+    pwm.setduty(2,b) 
+  end
+  pwm.setup(0,500,50) 
+  pwm.setup(1,500,50) 
+  pwm.setup(2,500,50)
+  pwm.start(0) 
+  pwm.start(1) 
+  pwm.start(2)
+  led(50,0,0) -- red
+  led(0,0,50) -- blue
+
+ + + +
  lighton=0
+  tmr.alarm(1000,1,function()
+    if lighton==0 then 
+      lighton=1 
+      led(50,50,50) 
+    else 
+      lighton=0 
+      led(0,0,0) 
+    end 
+  end)
+
+ + +

If you want to run something when system started

+
  --init.lua will be excuted
+  file.open("init.lua","w")
+  file.writeline([[print("Hello, do this at the beginning.")]])
+  file.close()
+  node.restart()  -- this will restart the module.
+
+ + +

With below code, you can telnet to your esp8266 now

+
    -- a simple telnet server
+    s=net.createServer(net.TCP) 
+    s:listen(2323,function(c) 
+       con_std = c 
+       function s_output(str) 
+          if(con_std~=nil) 
+             then con_std:send(str) 
+          end 
+       end 
+       node.output(s_output, 0)   -- re-direct output to function s_ouput.
+       c:on("receive",function(c,l) 
+          node.input(l)           -- works like pcall(loadstring(l)) but support multiple separate line
+       end) 
+       c:on("disconnection",function(c) 
+          con_std = nil 
+          node.output(nil)        -- un-regist the redirect output function, output goes to serial
+       end) 
+    end)
+
+ + +

Check this out

+

Tencent QQ group: 309957875

+nodemcu wiki

+nodemcu.com

\ No newline at end of file diff --git a/README.md b/README.md index cea207c2..0281a8d8 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ ###A lua based firmware for wifi-soc esp8266 version 0.9.2 build 2014-11-18 # Change log -[change log](https://github.com/funshine/nodemcu-firmware/wiki/nodeMcu:-lua-based-interactive-firmware-for-mcu#change_log) - +[change log](https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_en#change_log)
+[变更日志](https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_cn#change_log) # Summary - Easy to access wireless router - Based on Lua 5.1.4 diff --git a/README_cn.md b/README_cn.md deleted file mode 100644 index 649d7415..00000000 --- a/README_cn.md +++ /dev/null @@ -1,292 +0,0 @@ -nodeMcu API说明 -======= -version 0.1 2014-10-11 - up -flash 错误 ----- - 注意:有些模块在烧写之后启动,串口输出 ERROR in flash_read: r=。。。 - 这是因为模块原来的flash内部没有擦除。 - 可使用blank.bin(4k), - 重复烧入起始地址0x47000, 0x48000, 0x49000, 0x4a000扇区. - 或者生成一个512k大小的blank512k.bin, 内容为全0xFF,从0x00000开始烧入。 - 烧入之后可以正常运行。 - -概述 ------- - 支持一键配置 - - 基于Lua 5.1.4,使用者需了解最简单的Lua语法。 - - 采用事件驱动的编程模型。 - - 内置 timer,pwm,i2c,net,gpio,wifi module。 - - 对模块的引脚进行编号;gpio,i2c,pwm等模块需要使用引脚编号进行索引。 - -###目前的编号对应表格: - - IO索引编号 ESP8266实际IO IO索引编号 ESP8266实际IO - 0 GPIO12 8 GPIO0 - 1 GPIO13 9 GPIO2 - 2 GPIO14 10 GPIO4 - 3 GPIO15 11 GPIO5 - 4 GPIO3 - 5 GPIO1 - 6 GPIO9 - 7 GPIO10 - -###串口波特率 -9600 - -###固件烧写地址: - - eagle.app.v6.flash.bin:0x00000 - eagle.app.v6.irom0text.bin:0x10000 - esp_init_data_default.bin:0x7c000 - blank.bin:0x7e000 - - 第一次使用建议将blank512k.bin烧写在地址0x00000 - -node module ------- -node.restart() - - 描述:重新启动 - -node.dsleep( us ) - - 描述:深度睡眠 us 微秒,时间到之后将重新启动 - us:时间,单位微秒 - -node.chipid() - - 描述:返回芯片id - 返回:number - -node.heap() - - 描述:返回可用内存 in bytes - 返回:系统heap剩余 - -node.format() - - 描述:格式化用户flash区 - -node.startlog( filename, noparse) - - 描述:开始记录输入 - filename:log所保存的文件名,不支持目录 - noparse:1表示lua虚拟机不对输入进行解析,0表示lua虚拟机对输入进行解析 - -node.stoplog() - - 描述:结束log - -例子:录制log到init.lua文件,可以在系统启动之后自动调用该文件。 - - node.format() - node.startlog("init.lua", 1) - print("hello world") - node.stoplog() - -此时,文件init.lua内部将含有内容,重启之后,系统执行print("hello world") - -node.readlog( filename) - - 描述:读取文件 - filename:log文件名,不支持目录 - 返回:读取的内容,字符串形式 - -node.list() - - 描述:返回所有文件 - 返回:一个包含 <文件名:文件大小> pair 的map - -wifi module ------------ -[up](#upupup) - -常量:wifi.STATION, wifi.SOFTAP, wifi.STATIONAP - -wifi.setmode(mode) - - 描述:设置wifi的工作模式 - mode:取值:wifi.STATION, wifi.SOFTAP或wifi.STATIONAP - 返回设置之后的当前mode - -wifi.getmode() - - 描述:获取wifi的工作模式 - 返回:wifi.STATION, wifi.SOFTAP或wifi.STATIONAP - -wifi.startconfig( channel, function succeed_callback ) - - 描述:开始智能配置,若成功自动设置ssid和pwd并退出 - channel:1~13,起始搜索信道。若不指定,默认为6,每个信道搜索20秒 - succeed_callback:配置成功后的回调函数,将在获取密码正确并连接上ap之后调用 - -wifi.stopconfig() - - 描述:中断智能配置 - -wifi.station module ------------------ -wifi.station.setconfig(ssid, password) - - 描述:设置station模式下的ssid和password - ssid:字符串形式,长度小于32 - password:字符串形式,长度小于64 - -wifi.station.connect() - - 描述:station模式下连接至ap - -wifi.station.disconnect() - - 描述:station模式下断开与ap的连接 - -wifi.station.autoconnect(auto) - - 描述:station模式下设置自动连接至ap - auto:0表示设置为不自动连,1表示设置为自动连接 - -wifi.station.getip() - - 描述:station模式下获取ip - 返回:字符串形式的ip,如"192.168.0.2" - -wifi.station.getmac() - - 描述:station模式下获取mac - 返回:字符串形式的mac,如"18-33-44-FE-55-BB" - -wifi.ap module ---------------- -wifi.ap.setconfig(cfg) - - 描述:设置station模式下的ssid和password - cfg:设置需要的map - -例子: - - cfg={} - cfg.ssid="myssid" - cfg.pwd="mypwd" - wifi.ap.setconfig(cfg) - -wifi.ap.getip() - - 描述:ap模式下获取ip - 返回:字符串形式的ip,如"192.168.0.2" - -wifi.ap.getmac() - - 描述:ap模式下获取mac - 返回:字符串形式的mac,如"1A-33-44-FE-55-BB" - -gpio module ------------ -常量:gpio.OUTPUT, gpio.INPUT, gpio.HIGH, gpio.LOW - -gpio.mode( pin, mode) - - 描述:设置对应pin的输入输出模式,将该pin初始化为gpio模式。 - pin:0~11,IO索引编号 - mode:gpio.OUTPUT或者gpio.INPUT - -gpio.read(pin) - - 描述:读取对应pin的值 - pin:0~11,IO索引编号 - 返回:0表示低,1表示高 - -gpio.write(pin, level) - - 描述:设置对应pin的值 - pin:0~11,IO索引编号 - level:gpio.HIGH或者gpio.LOW - -例子: - - pin=1 - gpio.mode(pin, gpio.OUTPUT) - gpio.write(pin, gpio.HIGH) - -将索引1的pin设置为GPIO模式,并设置为高电平。 - -net module ---------------- -常量:net.TCP, net.UDP - -net.createServer(type) - - 描述:建立一个服务器 - type:net.TCP或 net.UDP - 返回:net.server子模块 - -net.createConnection(type) - - 描述:建立一个客户端 - type:net.TCP或 net.UDP - 返回:net.socket子模块 - -net.server module -------------- -listen(port,[ip],function(net.socket)) - - 描述:监听某端口 - port:端口号 - ip:可忽略,ip字符串 - function(net.socket): 回调函数,当有连接建立的时候,作为参数传给回调函数。 - -例子: - - sv=net.createServer(net.TCP, false) - sv:listen(80,function(c) - c:on("receive", function(sck, pl) print(pl) end) - c:send("hello world") - end) - -close() - - 描述:关闭服务器 - -net.socket module -------- -connect(port, ip) - - 描述:连接到某ip和端口 - port:端口号 - ip:ip字符串 - -send( string, function(sent) ) - - 描述:向连接发送数据 - string:需要发送的数据字符串 - -on(event, function cb()) - - 描述:注册事件的回调函数 - event:字符串 - 可为:"connection","reconnection","disconnection","receive","sent" - function cb(net.socket, [string]):回调函数。第一个参数为socket连接。 - 若event为"receive", 第二个参数为接收到数据,字符串形式。 - -例子: - - sk=net.createConnection(net.TCP, false) - sk:on("receive", function(sck, pl) print(pl) end ) - sk:connect(80,"115.239.210.27") - sk:send("GET / HTTP/1.1\r\nHost: 115.239.210.27\r\n - Connection: keep-alive\r\nAccept: */*\r\n\r\n") - -close() - - 描述:关闭socket - -dns(domain, function cb(net.socket, ip) ) - - 描述:获取domain的ip - domain:字符串 - function cb(net.socket, ip):回调函数。 - 第一个参数为socket连接本身, 第二个为获取的ip, 字符串形式。 diff --git a/nodemcu_api_cn.html b/nodemcu_api_cn.html new file mode 100644 index 00000000..8e6f4d0a --- /dev/null +++ b/nodemcu_api_cn.html @@ -0,0 +1,2365 @@ +nodemcu_api_cn

nodeMcu API说明

+

English Version

+

版本 0.9.2 build 2014-11-18

+

+

变更日志:

+

2014-11-18

+修正tcp服务器不能使用:close()函数关闭tcp连接的问题。

+tcp服务器: 服务器将关闭30s内未使用的闲置的连接。(修正前为180s)

+增加了函数node.input()用来向lua解释器输入lua代码段, 支持多行输入。

+增加了函数node.ouput(function)用来将串口输出重定向于回调函数。

+file.readline()函数返回值包含了EOL’\n’, 当读到EOF时,返回nil。

+

2014-11-12

+全功能版本固件

+

2014-11-11

+文件模块中增加了file.seek()函数。

+最多支持6个PWM输出。

+

2014-11-10

+log模块更名为file模块

+文件操作支持多次读写。

+当前仅支持打开一个文件进行操作。

+

2014-11-5

+node模块中删除了log函数。

+增加了log模块。

+修改wifi模块的函数。

+修改了node.key长按与短按的默认回调函数。

+只有当按钮被松开后,key才会被触发。

+

flash 错误

+

注意:有些模块在烧写之后启动,串口输出 ERROR in flash_read: r=。。。

+这是因为模块原来的flash内部没有擦除。

+可使用blank512k.bin,

+内容为全0xFF,从0x00000开始烧入。

+烧入之后可以正常运行。

+

概述

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IO indexESP8266 pinIO indexESP8266 pin
0GPIO128GPIO0
1GPIO139GPIO2
2GPIO1410GPIO4
3GPIO1511GPIO5
4GPIO3
5GPIO1
6GPIO9
7GPIO10
+ +

固件烧写

+

地址

+

nodemcu_512k.bin: 0x00000

+

node模块

+

+

node.restart()

+

描述

+

重新启动

+

语法

+

node.restart()

+

参数

+

nil

+

返回值

+

nil

+

示例

+
    node.restart();
+
+ + +

参见

+

-

+

+

node.dsleep()

+

描述

+

进入睡眠模式,计时时间之后唤醒

+

语法

+

node.dsleep(us)

+-注意: 如需使用此功能,需要将esp8266的PIN32(RST)和PIN8(XPD_DCDC)短接。

+

参数

+

us: 睡眠时间,单位:us

+

返回值

+

nil

+

示例

+
    node.dsleep(us);
+
+ + +

参见

+

-

+

+

node.chipid()

+

描述

+

返回芯片ID

+

语法

+

node.chipid()

+

参数

+

nil

+

返回值

+

number:芯片ID

+

示例

+
    id = node.chipid();
+
+ + +

参见

+

-

+

+

node.heap()

+

描述

+

返回当前系统剩余内存大小,单位:字节

+

语法

+

node.heap()

+

参数

+

nil

+

返回值

+

number: 系统剩余内存字节数

+

示例

+
    heap_size = node.heap();
+
+ + +

参见

+

-

+

+

node.key()

+

描述

+

定义按键的功能函数, 按键与GPIO16相连。

+

语法

+

node.key(type, function())

+

参数

+

type: type取字符串”long”或者”short”. long:按下按键持续3s以上, short: 短按按键(时间短于3s)

+function(): 用户自定义的按键回调函数。 如果为nil, 则取消用户定义的回调函数。

+默认函数:long:改变LED闪烁频率,short:重新启动。

+

返回值

+

nil

+

示例

+
    node.key("long", function(){print('hello world')})
+
+ + +

参见

+

-

+

+

node.led()

+

描述

+

设置LED的亮/暗时间, LED连接到GPIO16, 与node.key()复用。

+

语法

+

node.led(low, high)

+

参数

+

Low: LED关闭时间,如设置为0,则LED处于常亮状态。单位:毫秒,时间分辨率:80~100ms

+High: LED打开时间,单位:毫秒,时间分辨率:80~100ms

+

返回值

+

nil

+

示例

+
    -- LED常亮.
+    node.led(0);
+
+ + +

参见

+

-

+

+

node.input()

+

描述

+

接收字符串并将字符串传入lua解释器。

+功能同pcall(loadstring(str)),增加了支持多行输入的功能。

+

语法

+

node.input(str)

+

参数

+

str: Lua代码段

+

返回值

+

nil

+

示例

+
    -- 注意:该函数不支持在命令行中使用。
+    sk:on("receive", function(conn, payload) node.input(payload) end)
+
+ + +

参见

+

-

+

+

node.output()

+

描述

+

将lua解释器输出重定向于回调函数。

+

语法

+

node.output(function(str), serial_debug)

+

参数

+

function(str): 接收lua解释器输出的str作为输入,可以将该输出通过socket发送。

+serial_debug: 1:将输出送至串口; 0:输出不送至串口

+

返回值

+

nil

+

示例

+
    function tonet(str)
+      sk:send(str)
+      -- print(str) 错误!!! 千万不要在此函数中再使用print函数
+      -- 因为这样会导致函数的嵌套调用!!
+    end
+    node.ouput(tonet, 1)  -- serial also get the lua output.
+
+ + +

参见

+

-

+

file 模块

+

+

file.remove()

+

描述

+

删除文件。

+

语法

+

file.remove(filename)

+

参数

+

filename: 需要删除的文件。

+

返回值

+

nil

+

示例

+
    -- 删除foo.lua文件
+    file.remove("foo.lua")
+
+ + +

参见

+

- file.open()

+- file.close()

+

+

file.open()

+

描述

+

打开文件。

+

语法

+

file.open(filename, mode)

+

参数

+

filename: 需要打开的文件,不支持文件夹。

+mode:

+ “r”: read mode (the default)

+ “w”: write mode

+ “a”: append mode

+ “r+”: update mode, 文件内的数据保留

+ “w+”: update mode, 文件内的数据清除

+ “a+”: append update mode, 文件内的数据保留,要写入的数据仅能增加在文件最后。

+

返回值

+

nil

+

示例

+
    -- 打开'init.lua',并打印文件的第一行。
+    file.open("init.lua", "r")
+    print(file.readline())
+    file.close()
+
+ + +

参见

+

- file.close()

+- file.readline()

+

+

file.close()

+

描述

+

关闭文件。

+

语法

+

file.close()

+

参数

+

nil

+

返回值

+

nil

+

示例

+
    -- 打开'init.lua',并打印文件的第一行,然后关闭文件。
+    file.open("init.lua", "r")
+    print(file.readline())
+    file.close()
+
+ + +

参见

+

- file.open()

+- file.readline()

+

+

file.readline()

+

描述

+

读取文件的一行。

+

语法

+

file.readline()

+

参数

+

nil

+

返回值

+

逐行返回文件内容。返回值末尾包含EOL(‘\n’)

+如果读到EOF返回nil。

+

示例

+
    -- 打开'init.lua',读取并打印文件的第一行,然后关闭文件。
+    file.open("init.lua", "r")
+    print(file.readline())
+    file.close()
+
+ + +

参见

+

- file.open()

+- file.close()

+

+

file.writeline()

+

描述

+

向文件写入一行,行末尾增加’\n’。

+

语法

+

file.writeline(string)

+

参数

+

string: 需要写入的字符串

+

返回值

+

true: 写入成功

+nil: 写入失败

+

示例

+
    -- 以'a+'的模式打开'init.lua'
+    file.open("init.lua", "a+")
+    -- 将'foo bar'写到文件的末尾
+    file.writeline('foo bar')
+    file.close()
+
+ + +

参见

+

- file.open()

+- file.write()

+

+

file.write()

+

描述

+

向文件写入字符串。

+

语法

+

file.write(string)

+

参数

+

string: 需要写入的字符串

+

返回值

+

true: 写入成功

+nil: 写入失败

+

示例

+
    -- 以'a+'的模式打开'init.lua'
+    file.open("init.lua", "a+")
+    -- 将'foo bar'写到文件的末尾
+    file.writeline('foo bar')
+    file.close()
+
+ + +

参见

+

- file.open()

+- file.writeline()

+

+

file.flush()

+

描述

+

清空缓存写入文件。

+

语法

+

file.flush()

+

参数

+

nil

+

返回值

+

nil

+

示例

+
    -- 以'a+'的模式打开'init.lua'
+    file.open("init.lua", "a+")
+    -- 将'foo bar'写到文件的末尾
+    file.write('foo bar')
+    file.flush()
+    file.close()
+
+ + +

参见

+

- file.open()

+- file.writeline()

+

+

file.seek()

+

描述

+

设置或者读取文件的读写位置,位置等于whence加上offset的值。

+

语法

+

file.seek(whence, offset)

+

参数

+

whence:

+“set”: base is position 0 (beginning of the file);

+“cur”: base is current position;(default value)

+“end”: base is end of file;

+offset: default 0

+

返回值

+

成功: 返回当前的文件读写位置

+失败: 返回nil

+

示例

+
    -- 以'a+'的模式打开'init.lua'
+    file.open("init.lua", "a+")
+    -- 将'foo bar'写到文件的末尾
+    file.write('foo bar')
+    file.flush()
+    --将文件读写位置设置在文件开始
+    file.seek("set")
+    --读取并打印文件的第一行
+    print(file.readline())
+    file.close()
+
+ + +

参见

+

- file.open()

+- file.writeline()

+

+

file.list()

+

描述

+

显示所有文件。

+

语法

+

file.list()

+

参数

+

nil

+

返回值

+

返回包含{文件名:文件大小}的lua table

+

示例

+
    l = file.list();
+    for k,v in pairs(l) do
+      print("name:"..k..", size:"..v)
+    end
+
+ + +

参见

+

- file.remove()

+

wifi模块

+

常量

+

wifi.STATION, wifi.SOFTAP, wifi.STATIONAP

+

+

wifi.setmode(mode)

+

描述

+

设置wifi的工作模式。

+

语法

+

wifi.setmode(mode)

+

参数

+

mode: 取值为:wifi.STATION, wifi.SOFTAP or wifi.STATIONAP

+

返回值

+

返回设置之后的mode值

+

示例

+
    wifi.setmode(wifi.STATION)
+
+ + +

参见

+

- wifi.getmode()

+

+

wifi.getmode(mode)

+

描述

+

获取wifi的工作模式。

+

语法

+

wifi.getmode()

+

参数

+

nil

+

返回值

+

返回wifi的工作模式

+

示例

+
    print(wifi.getmode())
+
+ + +

参见

+

- wifi.setmode()

+

+

wifi.startsmart()

+

描述

+

开始自动配置,如果配置成功自动设置ssid和密码。

+

语法

+

wifi.startsmart(channel, function succeed_callback())

+

参数

+

channel: 1~13, 启动寻找的初始频段,如果为nil默认值为6频段。每个频段搜寻20s。

+succeed_callback: 配置成功的回调函数,配置成功并连接至AP后调用此函数。

+

返回值

+

nil

+

示例

+
    wifi.startsmart(6, cb())
+
+ + +

参见

+

- wifi.stopsmart()

+

+

wifi.stopsmart()

+

描述

+

停止配置。

+

语法

+

wifi.stopsmart()

+

参数

+

nil

+

返回值

+

nil

+

示例

+
    wifi.stopsmart()
+
+ + +

参见

+

- wifi.startsmart()

+

wifi.sta 子模块

+

+

wifi.sta.config()

+

描述

+

设置station模式下的ssid和password。

+

语法

+

wifi.sta.config(ssid, password)

+

参数

+

ssid: 字符串,长度小于32字节。

+password: 字符串,长度小于64字节。

+

返回值

+

nil

+

示例

+
    wifi.sta.config("myssid","mypassword")
+
+ + +

参见

+

- wifi.sta.connect()

+- wifi.sta.disconnect()

+

+

wifi.sta.connect()

+

描述

+

station模式下连接AP。

+

语法

+

wifi.sta.connect()

+

参数

+

nil

+

返回值

+

nil

+

示例

+
    wifi.sta.connect()
+
+ + +

参见

+

- wifi.sta.disconnect()

+- wifi.sta.config()

+

+

wifi.sta.disconnect()

+

描述

+

station模式下与AP断开连接。

+

语法

+

wifi.sta.disconnect()

+

参数

+

nil

+

返回值

+

nil

+

示例

+
    wifi.sta.disconnect()
+
+ + +

参见

+

- wifi.sta.config()

+- wifi.sta.connect()

+

+

wifi.sta.autoconnect()

+

描述

+

station模式下自动连接。

+

语法

+

wifi.sta.autoconnect(auto)

+

参数

+

auto: 0:取消自动连接,1:使能自动连接。

+

返回值

+

nil

+

示例

+
    wifi.sta.autoconnect()
+
+ + +

参见

+

- wifi.sta.config()

+- wifi.sta.connect()

+- wifi.sta.disconnect()

+

+

wifi.sta.getip()

+

描述

+

station模式下获取ip

+

语法

+

wifi.sta.getip()

+

参数

+

nil

+

返回值

+

ip地址字符串,如:”192.168.0.111”

+

示例

+
    -- print current ip
+    print(wifi.sta.getip())
+
+ + +

参见

+

- wifi.sta.getmac()

+

+

wifi.sta.getmac()

+

描述

+

station模式下获取mac地址。

+

语法

+

wifi.sta.getmac()

+

参数

+

nil

+

返回值

+

mac地址字符串,如:”18-33-44-FE-55-BB”

+

示例

+
    -- 打印当前的mac地址
+    print(wifi.sta.getmac())
+
+ + +

参见

+

- wifi.sta.getip()

+

wifi.ap 子模块

+

+

wifi.ap.config()

+

描述

+

设置ap模式下的ssid和password

+

语法

+

wifi.ap.config(cfg)

+

参数

+

cfg: 设置AP的lua table

+

示例:

+
     cfg={}
+     cfg.ssid="myssid"
+     cfg.pwd="mypwd"
+     wifi.ap.setconfig(cfg)
+
+ + +

返回值

+

nil

+

示例

+
    wifi.ap.config(ssid, 'password')
+
+ + +

参见

+

-

+

+

wifi.ap.getip()

+

描述

+

ap模式下获取ip

+

语法

+

wifi.ap.getip()

+

参数

+

nil

+

返回值

+

ip地址字符串,如:”192.168.0.111”

+

示例

+
    wifi.ap.getip()
+
+ + +

参见

+

- wifi.ap.getmac()

+

+

wifi.ap.getmac()

+

描述

+

ap模式下获取mac地址。

+

语法

+

wifi.ap.getmac()

+

参数

+

nil

+

返回值

+

mac地址字符串,如:”1A-33-44-FE-55-BB”

+

示例

+
    wifi.ap.getmac()
+
+ + +

参见

+

- wifi.ap.getip()

+

timer 模块

+

+

tmr.delay()

+

描述

+

延迟us微秒。

+

语法

+

tmr.dealy(us)

+

参数

+

us: 延迟时间,单位:微秒

+

返回值

+

nil

+

示例

+
    -- delay 100us
+    tmr.delay(100)
+
+ + +

参见

+

- tmr.now()

+

+

tmr.now()

+

描述

+

返回系统计数器的当前值,uint32,单位:us。

+

语法

+

tmr.now()

+

参数

+

nil

+

返回值

+

uint32: value of counter

+

示例

+
    -- 打印计数器的当前值。
+    print(tmr.now())
+
+ + +

参见

+

- tmr.delay()

+

+

tmr.alarm()

+

描述

+

闹钟函数。

+-注意: 只能允许存在一个闹钟,如果在调用tmr.stop()之前重复调用tmr.alarm(),以最后一次设置的为准,此前定义的闹钟都将失效。

+

语法

+

tmr.alarm(interval, repeat, function do())

+

参数

+

Interval: 定时时间,单位:毫秒。

+repeat: 0:一次性闹钟;1:重复闹钟。

+function do(): 定时器到时回调函数。

+

返回值

+

nil

+

示例

+
    -- 每1000ms输出一个hello world
+    tmr.alarm(1000, 1, function() print("hello world") end )
+
+ + +

参见

+

- tmr.now()

+

+

tmr.stop()

+

描述

+

停止闹钟功能。

+

语法

+

tmr.stop()

+

参数

+

nil.

+

返回值

+

nil

+

示例

+
    -- 每隔1000ms打印hello world
+    tmr.alarm(1000, 1, function() print("hello world") end )
+
+    -- 其它代码
+
+    -- 停止闹钟
+    tmr.stop()
+
+ + +

参见

+

- tmr.now()

+

GPIO 模块

+

常量

+

gpio.OUTPUT, gpio.INPUT, gpio.INT, gpio.HIGH, gpio.LOW

+

+

gpio.mode()

+

描述

+

将pin初始化为GPIO并设置输入输出模式。

+

语法

+

gpio.mode(pin, mode)

+

参数

+

pin: 0~11, IO编号

+mode: 取值为:gpio.OUTPUT or gpio.INPUT, or gpio.INT(中断模式)

+

返回值

+

nil

+

示例

+
    -- 将GPIO0设置为输出模式
+    gpio.mode(0, gpio.OUTPUT)
+
+ + +

参见

+

- gpio.read()

+

+

gpio.read()

+

描述

+

读取管脚电平高低。

+

语法

+

gpio.read(pin)

+

参数

+

pin: 0~11, IO编号

+

返回值

+

number:0:低电平, 1:高电平。

+

示例

+
    -- 读取GPIO0的电平
+    gpio.read(0)
+
+ + +

参见

+

- gpio.mode()

+

+

gpio.write()

+

描述

+

设置管脚电平

+

语法

+

gpio.write(pin)

+

参数

+

pin: 0~11, IO编号

+level: gpio.HIGH or gpio.LOW

+

返回值

+

nil

+

示例

+
    -- 设置GPIP1为输出模式,并将输出电平设置为高
+    pin=1
+    gpio.mode(pin, gpio.OUTPUT)
+    gpio.write(pin, gpio.HIGH)
+
+ + +

参见

+

- gpio.mode()

+- gpio.read()

+

+

gpio.trig()

+

描述

+

设置管脚中断模式的回调函数。

+

语法

+

gpio.trig(pin, type, function(level))

+

参数

+

pin: 0~11, IO编号

+type: 取值为”up”, “down”, “both”, “low”, “high”, 分别代表上升沿、下降沿、双边沿、低电平、高电平触发方式。

+function(level): 中断触发的回调函数,GPIO的电平作为输入参数。如果此处没有定义函数,则使用之前定义的回调函数。

+

返回值

+

nil

+

示例

+
    -- 使用GPIO0检测输入脉冲宽度
+    pulse0 = 0
+    du = 0
+    gpio.mode(0,gpio.INT)
+    function pin0cb(level)
+     du = tmr.now()  pulse0
+     print(du)
+     pulse0 = tmr.now()
+     if level == 1 then gpio.trig(0, "down ") else gpio.trig(0, "up ") end
+    end
+    gpio.trig(0, "down ",pin0cb)
+
+ + +

参见

+

- gpio.mode()

+- gpio.write()

+

PWM模块

+

+

pwm.setup()

+

描述

+

设置管脚为pwm模式,最多支持6个pwm。

+

语法

+

pwm.setup(pin, clock, duty)

+

参数

+

pin: 0~11, IO编号

+clock: 1~500, pwm频率

+duty: 0~100, pwm占空比,百分比表示。

+

返回值

+

nil

+

示例

+
    -- 将管脚0设置为pwm输出模式,频率100Hz,占空比50-50
+    pwm.setup(0, 100, 50)
+
+ + +

参见

+

- pwm.start()

+

+

pwm.close()

+

描述

+

退出pwm模式。

+

语法

+

pwm.close(pin)

+

参数

+

pin: 0~11, IO编号

+

返回值

+

nil

+

示例

+
    pwm.close(0)
+
+ + +

参见

+

- pwm.start()

+

+

pwm.start()

+

描述

+

pwm启动,可以在对应的GPIO检测到波形。

+

语法

+

pwm.start(pin)

+

参数

+

pin: 0~11, IO编号

+

返回值

+

nil

+

示例

+
    pwm.start(0)
+
+ + +

参见

+

- pwm.stop()

+

+

pwm.stop()

+

描述

+

暂停pwm输出波形。

+

语法

+

pwm.stop(pin)

+

参数

+

pin: 0~11, IO编号

+

返回值

+

nil

+

示例

+
    pwm.stop(0)
+
+ + +

参见

+

- pwm.start()

+

+

pwm.setclock()

+

描述

+

设置pwm的频率

+-Note: 设置pwm频率将会同步改变其他pwm输出的频率,当前版本的所有pwm仅支持同一频率输出。

+

语法

+

pwm.setclock(pin, clock)

+

参数

+

pin: 0~11, IO编号

+clock: 1~500, pwm周期

+

返回值

+

nil

+

示例

+
    pwm.setclock(0, 100)
+
+ + +

参见

+

- pwm.getclock()

+

+

pwm.getclock()

+

描述

+

获取pin的pwm工作频率

+

语法

+

pwm.getclock(pin)

+

参数

+

pin: 0~11, IO编号

+

返回值

+

number:pin的pwm工作频率

+

示例

+
    print(pwm.getclock(0))
+
+ + +

参见

+

- pwm.setclock()

+

+

pwm.setduty()

+

描述

+

设置pin的占空比。

+

语法

+

pwm.setduty(pin, duty)

+

参数

+

pin: 0~11, IO编号

+duty: 0~100, pwm的占空比,以百分数表示

+

返回值

+

nil

+

示例

+
    pwm.setduty(0, 50)
+
+ + +

参见

+

- pwm.getduty()

+

+

pwm.getduty()

+

描述

+

获取pin的pwm占空比。

+

语法

+

pwm.getduty(pin)

+

参数

+

pin: 0~11, IO编号

+

返回值

+

nil

+

示例

+
    -- D0 连接绿色led
+    -- D1 连接蓝色led
+    -- D2 连接红色led
+    pwm.setup(0,500,50)
+    pwm.setup(1,500,50)
+    pwm.setup(2,500,50)
+    pwm.start(0)
+    pwm.start(1)
+    pwm.start(2)
+    function led(r,g,b)
+      pwm.setduty(0,g)
+      pwm.setduty(1,b)
+      pwm.setduty(2,r)
+    end
+    led(50,0,0) --  led显示红色
+    led(0,0,50) -- led显示蓝色
+
+ + +

参见

+

- pwm.setduty()

+

net 模块

+

常量

+

net.TCP, net.UDP

+

+

net.createServer()

+

描述

+

创建一个server。

+

语法

+

net.createServer(type, secure)

+

参数

+

type: 取值为:net.TCP 或者 net.UDP

+secure: 设置为true或者false, true代表安全连接,false代表普通连接。

+

返回值

+

net.server子模块

+

示例

+
    net.createServer(net.TCP, true)
+
+ + +

参见

+

- net.createConnection()

+

+

net.createConnection()

+

描述

+

创建一个client。

+

语法

+

net.createConnection(type, secure)

+

参数

+

type: 取值为:net.TCP 或者 net.UDP

+secure: 设置为true或者false, true代表安全连接,false代表普通连接。

+

返回值

+

net.server子模块

+

示例

+
    net.createConnection(net.UDP, false)
+
+ + +

参见

+

- net.createServer()

+

net.server 子模块

+

+

listen()

+

描述

+

侦听指定ip地址的端口。

+

语法

+

net.server.listen(port,[ip],function(net.socket))

+

参数

+

port: 端口号

+ip:ip地址字符串,可以省略

+function(net.socket): 连接创建成功的回调函数,可以作为参数传给调用函数。

+

返回值

+

nil

+

示例

+
    -- 创建一个server
+    sv=net.createServer(net.TCP, false)
+    -- server侦听端口80,如果收到数据将数据打印至控制台,并向远端发送‘hello world’
+    sv:listen(80,function(c)
+      c:on("receive", function(sck, pl) print(pl) end)
+      c:send("hello world")
+      end)
+
+ + +

参见

+

- net.createServer()

+

+

close()

+

描述

+

关闭server

+

语法

+

net.server.close()

+

参数

+

nil

+

返回值

+

nil

+

示例

+
    -- 创建server
+    sv=net.createServer(net.TCP, false)
+    -- 关闭server
+    sv:close()
+
+ + +

参见

+

- net.createServer()

+

net.socket 子模块

+

+

connect()

+

描述

+

连接至远端。

+

语法

+

connect(port, ip)

+

参数

+

port: 端口号

+ip: ip地址字符串

+

返回值

+

nil

+

参见

+

- net.socket:on()

+

+

send()

+

描述

+

通过连接向远端发送数据。

+

语法

+

send(string, function(sent))

+

参数

+

string: 待发送的字符串

+function(sent): 发送字符串后的回调函数。

+

返回值

+

nil

+

参见

+

- net.socket:on()

+

+

on()

+

描述

+

向事件注册回调函数。

+

语法

+

on(event, function cb())

+

参数

+

event: 字符串,取值为: “connection”, “reconnection”, “disconnection”, “receive”, “sent”

+function cb(net.socket, [string]): 回调函数。第一个参数是socket.

+如果事件是”receive”, 第二个参数则为接收到的字符串。

+

返回值

+

nil

+

示例

+
    sk=net.createConnection(net.TCP, false)
+    sk:on("receive", function(sck, c) print(c) end )
+    sk:connect(80,"192.168.0.66")
+    sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
+
+ + +

参见

+

- net.createServer()

+

+

close()

+

描述

+

关闭socket。

+

语法

+

close()

+

参数

+

nil

+

返回值

+

nil

+

参见

+

- net.createServer()

+

+

dns()

+

描述

+

获取当前域的ip

+

语法

+

dns(domain, function(net.socket, ip))

+

参数

+

domain: 当前域的名称

+function (net.socket, ip): 回调函数。第一个参数是socket,第二个参数是当前域的ip字符串。

+

返回值

+

nil

+

参见

+

- net.createServer()

+

i2c模块

+

常量

+

i2c.SLOW, i2c.TRANSMITTER, i2c. RECEIVER. FAST(400k)模式目前不支持。

+

+

i2c.setup()

+

描述

+

初始化i2c。

+

语法

+

i2c.setup(id, pinSDA, pinSCL, speed)

+

参数

+

id = 0

+pinSDA: 0~11, IO编号

+pinSCL: 0~11, IO编号

+speed: i2c.SLOW

+

返回值

+

nil

+

参见

+

- i2c.read()

+

+

i2c.start()

+

描述

+

启动i2c传输。

+

语法

+

i2c.start(id)

+

参数

+

id = 0

+

返回值

+

nil

+

参见

+

- i2c.read()

+

+

i2c.stop()

+

描述

+

停止i2c传输。

+

语法

+

i2c.stop(id)

+

参数

+

id = 0

+

返回值

+

nil

+

参见

+

- i2c.read()

+

+

i2c.address()

+

描述

+

设置i2c地址以及读写模式。

+

语法

+

i2c.address(id, device_addr, direction)

+

参数

+

id=0

+device_addr: 设备地址。

+direction: i2c.TRANSMITTER:写模式;i2c. RECEIVER:读模式。

+

返回值

+

nil

+

参见

+

- i2c.read()

+

+

i2c.write()

+

描述

+

向i2c写数据。数据可以是多个数字, 字符串或者lua table。

+

语法

+

i2c.write(id, data1, data2,…)

+

参数

+

id=0

+data: 数据可以是多个数字, 字符串或者lua table。

+

返回值

+

nil

+

示例

+
    i2c.write(0, "hello", "world")
+
+ + +

参见

+

- i2c.read()

+

+

i2c.read()

+

描述

+

读取len个字节的数据。

+

语法

+

i2c.read(id, len)

+

参数

+

id=0

+len: 数据长度。

+

返回值

+

string:接收到的数据。

+

示例

+
    id=0
+    sda=1
+    scl=0
+
+    -- 初始化i2c, 将pin1设置为sda, 将pin0设置为scl
+    i2c.setup(id,sda,scl,i2c.SLOW)
+
+    -- 用户定义函数:读取地址dev_addr的寄存器reg_addr中的内容。
+    function read_reg(dev_addr, reg_addr)
+      i2c.start(id)
+      i2c.address(id, dev_addr ,i2c.TRANSMITTER)
+      i2c.write(id,reg_addr)
+      i2c.stop(id)
+      i2c.start(id)
+      i2c.address(id, dev_addr,i2c.RECEIVER)
+      c=i2c.read(id,1)
+      i2c.stop(id)
+      return c
+    end
+
+    -- 读取0x77的寄存器0xAA中的内容。
+    reg = read_reg(0x77, 0xAA)
+    pirnt(string.byte(reg))
+
+ + +

参见

+

- i2c.write()

\ No newline at end of file diff --git a/nodemcu_api_cn.md b/nodemcu_api_cn.md new file mode 100644 index 00000000..16f3570b --- /dev/null +++ b/nodemcu_api_cn.md @@ -0,0 +1,1710 @@ +# **nodeMcu API说明** # +[English Version](https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_en) +###版本 0.9.2 build 2014-11-18 + +###变更日志: +2014-11-18
+修正tcp服务器不能使用:close()函数关闭tcp连接的问题。
+tcp服务器: 服务器将关闭30s内未使用的闲置的连接。(修正前为180s)
+增加了函数node.input()用来向lua解释器输入lua代码段, 支持多行输入。
+增加了函数node.ouput(function)用来将串口输出重定向于回调函数。
+file.readline()函数返回值包含了EOL'\n', 当读到EOF时,返回nil。 + +2014-11-12
+全功能版本固件
+ +2014-11-11
+文件模块中增加了file.seek()函数。
+最多支持6个PWM输出。
+ +2014-11-10
+log模块更名为file模块
+文件操作支持多次读写。
+当前仅支持打开一个文件进行操作。
+ +2014-11-5
+node模块中删除了log函数。
+增加了log模块。
+修改wifi模块的函数。
+修改了node.key长按与短按的默认回调函数。
+只有当按钮被松开后,key才会被触发。
+ + +###flash 错误 +注意:有些模块在烧写之后启动,串口输出 ERROR in flash_read: r=。。。
+这是因为模块原来的flash内部没有擦除。
+可使用blank512k.bin,
+内容为全0xFF,从0x00000开始烧入。
+烧入之后可以正常运行。 + +# 概述 +- 快速、自动连接无线路由器 +- 基于Lua 5.1.4,使用者需了解最简单的Lua语法 +- 采用事件驱动的编程模型 +- 内置file, timer, pwm, i2c, net, gpio, wifi模块 +- 串口波特率:9600-8N1 +- 对模块的引脚进行编号;gpio,i2c,pwm等模块需要使用引脚编号进行索引 +- 目前的编号对应表格: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IO indexESP8266 pinIO indexESP8266 pin
0GPIO128GPIO0
1GPIO139GPIO2
2GPIO1410GPIO4
3GPIO1511GPIO5
4GPIO3
5GPIO1
6GPIO9
7GPIO10
+ +#固件烧写 +###地址 +nodemcu_512k.bin: 0x00000
+ +#node模块 + +## node.restart() +####描述 +重新启动 + +####语法 + +node.restart() + +####参数 +nil + +####返回值 +nil + +####示例 + +```lua + node.restart(); +``` + +####参见 +**-** []() + + +## node.dsleep() +####描述 + +进入睡眠模式,计时时间之后唤醒
+ +####语法 + +node.dsleep(us)
+**-注意:** 如需使用此功能,需要将esp8266的PIN32(RST)和PIN8(XPD_DCDC)短接。 + +####参数 +us: 睡眠时间,单位:us + +####返回值 +nil + +####示例 + +```lua + node.dsleep(us); +``` + +####参见 +**-** []() + + +## node.chipid() +####描述 +返回芯片ID + +####语法 +node.chipid() + +####参数 +nil + +####返回值 +number:芯片ID + +####示例 + +```lua + id = node.chipid(); +``` + +####参见 +**-** []() + + +## node.heap() +####描述 +返回当前系统剩余内存大小,单位:字节 + +####语法 +node.heap() + +####参数 +nil + +####返回值 +number: 系统剩余内存字节数 + +####示例 + +```lua + heap_size = node.heap(); +``` + +####参见 +**-** []() + + +## node.key() +####描述 +定义按键的功能函数, 按键与GPIO16相连。 + +####语法 +node.key(type, function()) + +####参数 +type: type取字符串"long"或者"short". long:按下按键持续3s以上, short: 短按按键(时间短于3s)
+function(): 用户自定义的按键回调函数。 如果为nil, 则取消用户定义的回调函数。
+默认函数:long:改变LED闪烁频率,short:重新启动。 + +####返回值 +nil + +####示例 +```lua + node.key("long", function(){print('hello world')}) +``` + +####参见 +**-** []() + + +## node.led() +####描述 +设置LED的亮/暗时间, LED连接到GPIO16, 与node.key()复用。 + +####语法 +node.led(low, high) + +####参数 +Low: LED关闭时间,如设置为0,则LED处于常亮状态。单位:毫秒,时间分辨率:80~100ms
+High: LED打开时间,单位:毫秒,时间分辨率:80~100ms + +####返回值 +nil + +####示例 + +```lua + -- LED常亮. + node.led(0); +``` + +####参见 +**-** []() + + +## node.input() +####描述 +接收字符串并将字符串传入lua解释器。
+功能同pcall(loadstring(str)),增加了支持多行输入的功能。 + +####语法 +node.input(str) + +####参数 +str: Lua代码段 + +####返回值 +nil + +####示例 + +```lua + -- 注意:该函数不支持在命令行中使用。 + sk:on("receive", function(conn, payload) node.input(payload) end) +``` + +####参见 +**-** []() + + +## node.output() +####描述 +将lua解释器输出重定向于回调函数。 + +####语法 +node.output(function(str), serial_debug) + +####参数 +function(str): 接收lua解释器输出的str作为输入,可以将该输出通过socket发送。
+serial_debug: 1:将输出送至串口; 0:输出不送至串口 + +####返回值 +nil + +####示例 + +```lua + function tonet(str) + sk:send(str) + -- print(str) 错误!!! 千万不要在此函数中再使用print函数 + -- 因为这样会导致函数的嵌套调用!! + end + node.ouput(tonet, 1) -- serial also get the lua output. +``` + +####参见 +**-** []() + +#file 模块 + +## file.remove() +####描述 +删除文件。 + +####语法 +file.remove(filename) + +####参数 +filename: 需要删除的文件。 + +####返回值 +nil + +####示例 + +```lua + -- 删除foo.lua文件 + file.remove("foo.lua") +``` + +####参见 +**-** [file.open()](#fl_open)
+**-** [file.close()](#fl_close) + + +## file.open() +####描述 +打开文件。 + +####语法 +file.open(filename, mode) + +####参数 +filename: 需要打开的文件,不支持文件夹。
+mode:
+ "r": read mode (the default)
+ "w": write mode
+ "a": append mode
+ "r+": update mode, 文件内的数据保留
+ "w+": update mode, 文件内的数据清除
+ "a+": append update mode, 文件内的数据保留,要写入的数据仅能增加在文件最后。 + +####返回值 +nil + +####示例 + +```lua + -- 打开'init.lua',并打印文件的第一行。 + file.open("init.lua", "r") + print(file.readline()) + file.close() +``` + +####参见 +**-** [file.close()](#fl_close)
+**-** [file.readline()](#fl_readline) + + +## file.close() +####描述 +关闭文件。 + +####语法 +file.close() + +####参数 +nil + +####返回值 +nil + +####示例 + +```lua + -- 打开'init.lua',并打印文件的第一行,然后关闭文件。 + file.open("init.lua", "r") + print(file.readline()) + file.close() +``` + +####参见 +**-** [file.open()](#fl_open)
+**-** [file.readline()](#fl_readline) + + +## file.readline() +####描述 +读取文件的一行。 + +####语法 +file.readline() + +####参数 +nil + +####返回值 +逐行返回文件内容。返回值末尾包含EOL('\n')
+如果读到EOF返回nil。 + +####示例 + +```lua + -- 打开'init.lua',读取并打印文件的第一行,然后关闭文件。 + file.open("init.lua", "r") + print(file.readline()) + file.close() +``` + +####参见 +**-** [file.open()](#fl_open)
+**-** [file.close()](#fl_close) + + +## file.writeline() +####描述 +向文件写入一行,行末尾增加'\n'。 + +####语法 +file.writeline(string) + +####参数 +string: 需要写入的字符串 + +####返回值 +true: 写入成功
+nil: 写入失败 + +####示例 + +```lua + -- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.writeline('foo bar') + file.close() +``` + +####参见 +**-** [file.open()](#fl_open)
+**-** [file.write()](#fl_write) + + +## file.write() +####描述 +向文件写入字符串。 + +####语法 +file.write(string) + +####参数 +string: 需要写入的字符串 + +####返回值 +true: 写入成功
+nil: 写入失败 + +####示例 + +```lua + -- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.writeline('foo bar') + file.close() +``` + +####参见 +**-** [file.open()](#fl_open)
+**-** [file.writeline()](#fl_writeline) + + +## file.flush() +####描述 +清空缓存写入文件。 + +####语法 +file.flush() + +####参数 +nil + +####返回值 +nil + +####示例 + +```lua + -- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.write('foo bar') + file.flush() + file.close() +``` + +####参见 +**-** [file.open()](#fl_open)
+**-** [file.writeline()](#fl_writeline) + + +## file.seek() +####描述 +设置或者读取文件的读写位置,位置等于whence加上offset的值。 + +####语法 +file.seek(whence, offset) + +####参数 +whence:
+"set": base is position 0 (beginning of the file);
+"cur": base is current position;(default value)
+"end": base is end of file;
+offset: default 0 + +####返回值 +成功: 返回当前的文件读写位置
+失败: 返回nil + +####示例 + +```lua + -- 以'a+'的模式打开'init.lua' + file.open("init.lua", "a+") + -- 将'foo bar'写到文件的末尾 + file.write('foo bar') + file.flush() + --将文件读写位置设置在文件开始 + file.seek("set") + --读取并打印文件的第一行 + print(file.readline()) + file.close() +``` + +####参见 +**-** [file.open()](#fl_open)
+**-** [file.writeline()](#fl_writeline) + + +## file.list() +####描述 +显示所有文件。 + +####语法 +file.list() + +####参数 +nil + +####返回值 +返回包含{文件名:文件大小}的lua table + +####示例 + +```lua + l = file.list(); + for k,v in pairs(l) do + print("name:"..k..", size:"..v) + end +``` + +####参见 +**-** [file.remove()](#fl_remove) + +#wifi模块 +##常量 +wifi.STATION, wifi.SOFTAP, wifi.STATIONAP + + +## wifi.setmode(mode) +####描述 +设置wifi的工作模式。 + +####语法 +wifi.setmode(mode) + +####参数 +mode: 取值为:wifi.STATION, wifi.SOFTAP or wifi.STATIONAP + +####返回值 +返回设置之后的mode值 + +####示例 + +```lua + wifi.setmode(wifi.STATION) +``` + +####参见 +**-** [wifi.getmode()](#wf_getmode) + + + +## wifi.getmode(mode) +####描述 +获取wifi的工作模式。 + +####语法 +wifi.getmode() + +####参数 +nil + +####返回值 +返回wifi的工作模式 + +####示例 + +```lua + print(wifi.getmode()) +``` + +####参见 +**-** [wifi.setmode()](#wf_setmode) + + + +## wifi.startsmart() +####描述 +开始自动配置,如果配置成功自动设置ssid和密码。 + +####语法 +wifi.startsmart(channel, function succeed_callback()) + +####参数 + +channel: 1~13, 启动寻找的初始频段,如果为nil默认值为6频段。每个频段搜寻20s。
+succeed_callback: 配置成功的回调函数,配置成功并连接至AP后调用此函数。 + +####返回值 +nil + +####示例 + +```lua + wifi.startsmart(6, cb()) +``` + +####参见 +**-** [wifi.stopsmart()](#wf_stopsmart) + + + +## wifi.stopsmart() +####描述 +停止配置。 + +####语法 +wifi.stopsmart() + +####参数 +nil + +####返回值 +nil + +####示例 + +```lua + wifi.stopsmart() +``` + +####参见 +**-** [wifi.startsmart()](#wf_startsmart) + + +#wifi.sta 子模块 + + +## wifi.sta.config() +####描述 +设置station模式下的ssid和password。 + +####语法 +wifi.sta.config(ssid, password) + +####参数 + +ssid: 字符串,长度小于32字节。
+password: 字符串,长度小于64字节。 + +####返回值 +nil + +####示例 + +```lua + wifi.sta.config("myssid","mypassword") +``` + +####参见 +**-** [wifi.sta.connect()](#ws_connect)
+**-** [wifi.sta.disconnect()](#ws_disconnect) + + + +## wifi.sta.connect() +####描述 +station模式下连接AP。 + +####语法 +wifi.sta.connect() + +####参数 +nil + + +####返回值 +nil + +####示例 + +```lua + wifi.sta.connect() +``` + +####参见 +**-** [wifi.sta.disconnect()](#ws_disconnect)
+**-** [wifi.sta.config()](#ws_config) + + + +## wifi.sta.disconnect() +####描述 +station模式下与AP断开连接。 + +####语法 +wifi.sta.disconnect() + +####参数 +nil + + +####返回值 +nil + +####示例 + +```lua + wifi.sta.disconnect() +``` + +####参见 +**-** [wifi.sta.config()](#ws_config)
+**-** [wifi.sta.connect()](#ws_connect) + + + +## wifi.sta.autoconnect() +####描述 +station模式下自动连接。 + +####语法 +wifi.sta.autoconnect(auto) + +####参数 +auto: 0:取消自动连接,1:使能自动连接。 + + +####返回值 +nil + +####示例 + +```lua + wifi.sta.autoconnect() +``` + +####参见 +**-** [wifi.sta.config()](#ws_config)
+**-** [wifi.sta.connect()](#ws_connect)
+**-** [wifi.sta.disconnect()](#ws_disconnect) + + + +## wifi.sta.getip() +####描述 +station模式下获取ip + +####语法 +wifi.sta.getip() + +####参数 +nil + + +####返回值 +ip地址字符串,如:"192.168.0.111" + +####示例 + +```lua + -- print current ip + print(wifi.sta.getip()) +``` + +####参见 +**-** [wifi.sta.getmac()](#ws_getmac) + + + +## wifi.sta.getmac() +####描述 +station模式下获取mac地址。 + +####语法 +wifi.sta.getmac() + +####参数 +nil + + +####返回值 +mac地址字符串,如:"18-33-44-FE-55-BB" + +####示例 + +```lua + -- 打印当前的mac地址 + print(wifi.sta.getmac()) +``` + +####参见 +**-** [wifi.sta.getip()](#ws_getip) + + +#wifi.ap 子模块 + + +## wifi.ap.config() +####描述 +设置ap模式下的ssid和password + +####语法 +wifi.ap.config(cfg) + +####参数 +cfg: 设置AP的lua table + +####示例: + +```lua + cfg={} + cfg.ssid="myssid" + cfg.pwd="mypwd" + wifi.ap.setconfig(cfg) +``` + +####返回值 +nil + +####示例 + +```lua + wifi.ap.config(ssid, 'password') +``` + +####参见 +**-** []() + + +## wifi.ap.getip() +####描述 +ap模式下获取ip + +####语法 +wifi.ap.getip() + +####参数 +nil + +####返回值 +ip地址字符串,如:"192.168.0.111" + +####示例 + +```lua + wifi.ap.getip() +``` + +####参见 +**-** [wifi.ap.getmac()](#wa_getmac) + + + +## wifi.ap.getmac() +####描述 +ap模式下获取mac地址。 + +####语法 +wifi.ap.getmac() + +####参数 +nil + +####返回值 +mac地址字符串,如:"1A-33-44-FE-55-BB" + +####示例 + +```lua + wifi.ap.getmac() +``` + +####参见 +**-** [wifi.ap.getip()](#wa_getip) + + +#timer 模块 + +## tmr.delay() +####描述 +延迟us微秒。 + +####语法 +tmr.dealy(us) + +####参数 +us: 延迟时间,单位:微秒 + +####返回值 +nil + +####示例 + +```lua + -- delay 100us + tmr.delay(100) +``` + +####参见 +**-** [tmr.now()](#tm_now) + + + +## tmr.now() +####描述 +返回系统计数器的当前值,uint32,单位:us。 + +####语法 +tmr.now() + +####参数 +nil + +####返回值 +uint32: value of counter + +####示例 + +```lua + -- 打印计数器的当前值。 + print(tmr.now()) +``` + +####参见 +**-** [tmr.delay()](#tm_delay) + + + +## tmr.alarm() +####描述 +闹钟函数。
+**-注意:** 只能允许存在一个闹钟,如果在调用tmr.stop()之前重复调用tmr.alarm(),以最后一次设置的为准,此前定义的闹钟都将失效。 + +####语法 +tmr.alarm(interval, repeat, function do()) + +####参数 +Interval: 定时时间,单位:毫秒。
+repeat: 0:一次性闹钟;1:重复闹钟。
+function do(): 定时器到时回调函数。 + +####返回值 +nil + +####示例 + +```lua + -- 每1000ms输出一个hello world + tmr.alarm(1000, 1, function() print("hello world") end ) +``` + +####参见 +**-** [tmr.now()](#tm_now) + + + +## tmr.stop() +####描述 +停止闹钟功能。
+ +####语法 +tmr.stop() + +####参数 +nil. + +####返回值 +nil + +####示例 + +```lua + -- 每隔1000ms打印hello world + tmr.alarm(1000, 1, function() print("hello world") end ) + + -- 其它代码 + + -- 停止闹钟 + tmr.stop() +``` + +####参见 +**-** [tmr.now()](#tm_now) + + +#GPIO 模块 +##常量 +gpio.OUTPUT, gpio.INPUT, gpio.INT, gpio.HIGH, gpio.LOW + + + +## gpio.mode() +####描述 +将pin初始化为GPIO并设置输入输出模式。 + +####语法 +gpio.mode(pin, mode) + +####参数 +pin: 0~11, IO编号
+mode: 取值为:gpio.OUTPUT or gpio.INPUT, or gpio.INT(中断模式) + +####返回值 +nil + +####示例 + +```lua + -- 将GPIO0设置为输出模式 + gpio.mode(0, gpio.OUTPUT) + +``` + +####参见 +**-** [gpio.read()](#io_read) + + + +## gpio.read() +####描述 +读取管脚电平高低。 + +####语法 +gpio.read(pin) + +####参数 +pin: 0~11, IO编号 + +####返回值 +number:0:低电平, 1:高电平。 + +####示例 + +```lua + -- 读取GPIO0的电平 + gpio.read(0) +``` + +####参见 +**-** [gpio.mode()](#io_mode) + + + +## gpio.write() +####描述 +设置管脚电平 + +####语法 +gpio.write(pin) + +####参数 +pin: 0~11, IO编号
+level: gpio.HIGH or gpio.LOW + +####返回值 +nil + +####示例 + +```lua + -- 设置GPIP1为输出模式,并将输出电平设置为高 + pin=1 + gpio.mode(pin, gpio.OUTPUT) + gpio.write(pin, gpio.HIGH) +``` + +####参见 +**-** [gpio.mode()](#io_mode)
+**-** [gpio.read()](#io_read) + + + +## gpio.trig() +####描述 +设置管脚中断模式的回调函数。 + +####语法 +gpio.trig(pin, type, function(level)) + +####参数 +pin: 0~11, IO编号
+type: 取值为"up", "down", "both", "low", "high", 分别代表上升沿、下降沿、双边沿、低电平、高电平触发方式。
+function(level): 中断触发的回调函数,GPIO的电平作为输入参数。如果此处没有定义函数,则使用之前定义的回调函数。 + +####返回值 +nil + +####示例 + +```lua + -- 使用GPIO0检测输入脉冲宽度 + pulse0 = 0 + du = 0 + gpio.mode(0,gpio.INT) + function pin0cb(level) + du = tmr.now() – pulse0 + print(du) + pulse0 = tmr.now() + if level == 1 then gpio.trig(0, "down ") else gpio.trig(0, "up ") end + end + gpio.trig(0, "down ",pin0cb) + +``` + +####参见 +**-** [gpio.mode()](#io_mode)
+**-** [gpio.write()](#io_write) + + +#PWM模块 + +## pwm.setup() +####描述 +设置管脚为pwm模式,最多支持6个pwm。 + +####语法 +pwm.setup(pin, clock, duty) + +####参数 +pin: 0~11, IO编号
+clock: 1~500, pwm频率
+duty: 0~100, pwm占空比,百分比表示。 + +####返回值 +nil + +####示例 + +```lua + -- 将管脚0设置为pwm输出模式,频率100Hz,占空比50-50 + pwm.setup(0, 100, 50) +``` + +####参见 +**-** [pwm.start()](#pw_start) + + + +## pwm.close() +####描述 +退出pwm模式。 + +####语法 +pwm.close(pin) + +####参数 +pin: 0~11, IO编号 + +####返回值 +nil + +####示例 + +```lua + pwm.close(0) +``` + +####参见 +**-** [pwm.start()](#pw_start) + + + +## pwm.start() +####描述 +pwm启动,可以在对应的GPIO检测到波形。 + +####语法 +pwm.start(pin) + +####参数 +pin: 0~11, IO编号 + +####返回值 +nil + +####示例 + +```lua + pwm.start(0) +``` + +####参见 +**-** [pwm.stop()](#pw_stop) + + + +## pwm.stop() +####描述 +暂停pwm输出波形。 + +####语法 +pwm.stop(pin) + +####参数 +pin: 0~11, IO编号 + +####返回值 +nil + +####示例 + +```lua + pwm.stop(0) +``` + +####参见 +**-** [pwm.start()](#pw_start) + + + +## pwm.setclock() +####描述 +设置pwm的频率
+**-Note:** 设置pwm频率将会同步改变其他pwm输出的频率,当前版本的所有pwm仅支持同一频率输出。 + +####语法 +pwm.setclock(pin, clock) + +####参数 +pin: 0~11, IO编号
+clock: 1~500, pwm周期 + +####返回值 +nil + +####示例 + +```lua + pwm.setclock(0, 100) +``` + +####参见 +**-** [pwm.getclock()](#pw_getclock) + + + +## pwm.getclock() +####描述 +获取pin的pwm工作频率 + +####语法 +pwm.getclock(pin) + +####参数 +pin: 0~11, IO编号 + +####返回值 +number:pin的pwm工作频率 + +####示例 + +```lua + print(pwm.getclock(0)) +``` + +####参见 +**-** [pwm.setclock()](#pw_setclock) + + + +## pwm.setduty() +####描述 +设置pin的占空比。 + +####语法 +pwm.setduty(pin, duty) + +####参数 +pin: 0~11, IO编号
+duty: 0~100, pwm的占空比,以百分数表示 + +####返回值 +nil + +####示例 + +```lua + pwm.setduty(0, 50) +``` + +####参见 +**-** [pwm.getduty()](#pw_getduty) + + + +## pwm.getduty() +####描述 +获取pin的pwm占空比。 + +####语法 +pwm.getduty(pin) + +####参数 +pin: 0~11, IO编号 + +####返回值 +nil + +####示例 + +```lua + -- D0 连接绿色led + -- D1 连接蓝色led + -- D2 连接红色led + pwm.setup(0,500,50) + pwm.setup(1,500,50) + pwm.setup(2,500,50) + pwm.start(0) + pwm.start(1) + pwm.start(2) + function led(r,g,b) + pwm.setduty(0,g) + pwm.setduty(1,b) + pwm.setduty(2,r) + end + led(50,0,0) -- led显示红色 + led(0,0,50) -- led显示蓝色 + +``` + +####参见 +**-** [pwm.setduty()](#pw_setduty) + + +#net 模块 +##常量 +net.TCP, net.UDP + + +## net.createServer() +####描述 +创建一个server。 + +####语法 +net.createServer(type, secure) + +####参数 +type: 取值为:net.TCP 或者 net.UDP
+secure: 设置为true或者false, true代表安全连接,false代表普通连接。 + +####返回值 +net.server子模块 + +####示例 + +```lua + net.createServer(net.TCP, true) +``` + +####参见 +**-** [net.createConnection()](#nt_createConnection) + + + +## net.createConnection() +####描述 +创建一个client。 + +####语法 +net.createConnection(type, secure) + +####参数 +type: 取值为:net.TCP 或者 net.UDP
+secure: 设置为true或者false, true代表安全连接,false代表普通连接。 + +####返回值 +net.server子模块 + +####示例 + +```lua + net.createConnection(net.UDP, false) +``` + +####参见 +**-** [net.createServer()](#nt_createServer) + + +#net.server 子模块 + +## listen() +####描述 +侦听指定ip地址的端口。 + +####语法 +net.server.listen(port,[ip],function(net.socket)) + +####参数 +port: 端口号
+ip:ip地址字符串,可以省略
+function(net.socket): 连接创建成功的回调函数,可以作为参数传给调用函数。 + +####返回值 +nil + +####示例 + +```lua + -- 创建一个server + sv=net.createServer(net.TCP, false) + -- server侦听端口80,如果收到数据将数据打印至控制台,并向远端发送‘hello world’ + sv:listen(80,function(c) + c:on("receive", function(sck, pl) print(pl) end) + c:send("hello world") + end) +``` + +####参见 +**-** [net.createServer()](#nt_createServer) + + + +## close() +####描述 +关闭server + +####语法 +net.server.close() + +####参数 +nil + +####返回值 +nil + +####示例 + +```lua + -- 创建server + sv=net.createServer(net.TCP, false) + -- 关闭server + sv:close() +``` + +####参见 +**-** [net.createServer()](#nt_createServer) + + +#net.socket 子模块 + +## connect() +####描述 +连接至远端。 + +####语法 +connect(port, ip) + +####参数 +port: 端口号
+ip: ip地址字符串 + +####返回值 +nil + +####参见 +**-** [net.socket:on()](#nk_on) + + + +## send() +####描述 +通过连接向远端发送数据。 + +####语法 +send(string, function(sent)) + +####参数 +string: 待发送的字符串
+function(sent): 发送字符串后的回调函数。 + +####返回值 +nil + +####参见 +**-** [net.socket:on()](#nk_on) + + + +## on() +####描述 +向事件注册回调函数。 + +####语法 +on(event, function cb()) + +####参数 +event: 字符串,取值为: "connection", "reconnection", "disconnection", "receive", "sent"
+function cb(net.socket, [string]): 回调函数。第一个参数是socket.
+如果事件是"receive", 第二个参数则为接收到的字符串。 + +####返回值 +nil + +####示例 + +```lua + sk=net.createConnection(net.TCP, false) + sk:on("receive", function(sck, c) print(c) end ) + sk:connect(80,"192.168.0.66") + sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") +``` + +####参见 +**-** [net.createServer()](#nt_createServer) + + + +## close() +####描述 +关闭socket。 + +####语法 +close() + +####参数 +nil + +####返回值 +nil + +####参见 +**-** [net.createServer()](#nt_createServer) + + + +## dns() +####描述 +获取当前域的ip + +####语法 +dns(domain, function(net.socket, ip)) + +####参数 +domain: 当前域的名称
+function (net.socket, ip): 回调函数。第一个参数是socket,第二个参数是当前域的ip字符串。 + +####返回值 +nil + +####参见 +**-** [net.createServer()](#nt_createServer) + + +#i2c模块 +##常量 +i2c.SLOW, i2c.TRANSMITTER, i2c. RECEIVER. FAST(400k)模式目前不支持。 + + +## i2c.setup() +####描述 +初始化i2c。 + +####语法 +i2c.setup(id, pinSDA, pinSCL, speed) + +####参数 +id = 0
+pinSDA: 0~11, IO编号
+pinSCL: 0~11, IO编号
+speed: i2c.SLOW + +####返回值 +nil + +####参见 +**-** [i2c.read()](#ic_read) + + + +## i2c.start() +####描述 +启动i2c传输。 + +####语法 +i2c.start(id) + +####参数 +id = 0 + +####返回值 +nil + +####参见 +**-** [i2c.read()](#ic_read) + + + +## i2c.stop() +####描述 +停止i2c传输。 + +####语法 +i2c.stop(id) + +####参数 +id = 0 + +####返回值 +nil + +####参见 +**-** [i2c.read()](#ic_read) + + + +## i2c.address() +####描述 +设置i2c地址以及读写模式。 + +####语法 +i2c.address(id, device_addr, direction) + +####参数 +id=0
+device_addr: 设备地址。
+direction: i2c.TRANSMITTER:写模式;i2c. RECEIVER:读模式。 + +####返回值 +nil + +####参见 +**-** [i2c.read()](#ic_read) + + +## i2c.write() +####描述 +向i2c写数据。数据可以是多个数字, 字符串或者lua table。 + +####语法 +i2c.write(id, data1, data2,...) + +####参数 +id=0
+data: 数据可以是多个数字, 字符串或者lua table。 + +####返回值 +nil + +####示例 + +```lua + i2c.write(0, "hello", "world") +``` + +####参见 +**-** [i2c.read()](#ic_read) + + + +## i2c.read() +####描述 +读取len个字节的数据。 + +####语法 +i2c.read(id, len) + +####参数 +id=0
+len: 数据长度。 + +####返回值 +string:接收到的数据。 + +####示例 + +```lua + id=0 + sda=1 + scl=0 + + -- 初始化i2c, 将pin1设置为sda, 将pin0设置为scl + i2c.setup(id,sda,scl,i2c.SLOW) + + -- 用户定义函数:读取地址dev_addr的寄存器reg_addr中的内容。 + function read_reg(dev_addr, reg_addr) + i2c.start(id) + i2c.address(id, dev_addr ,i2c.TRANSMITTER) + i2c.write(id,reg_addr) + i2c.stop(id) + i2c.start(id) + i2c.address(id, dev_addr,i2c.RECEIVER) + c=i2c.read(id,1) + i2c.stop(id) + return c + end + + -- 读取0x77的寄存器0xAA中的内容。 + reg = read_reg(0x77, 0xAA) + pirnt(string.byte(reg)) + +``` + +####参见 +**-** [i2c.write()](#ic_write) \ No newline at end of file diff --git a/API.html b/nodemcu_api_en.html similarity index 75% rename from API.html rename to nodemcu_api_en.html index 72fc3975..3e0ac9a0 100644 --- a/API.html +++ b/nodemcu_api_en.html @@ -1014,7 +1014,73 @@ body .markdown-body page-break-after: avoid; } } -API

nodeMcu API Instruction

+nodemcu_api_en

nodeMcu API Instruction

+

中文版本

version 0.9.2 build 2014-11-18

change log:

@@ -1096,8 +1162,9 @@ key is triged only when key is released

Returns

nil

Example

-
    node.restart();
-
+
    node.restart();
+
+

See also

-

@@ -1113,8 +1180,9 @@ key is triged only when key is released

Returns

nil

Example

-
    node.dsleep(us);
-
+
    node.dsleep(us);
+
+

See also

-

@@ -1129,8 +1197,9 @@ key is triged only when key is released

Returns

number:chip ID

Example

-
    id = node.chipid();
-
+
    id = node.chipid();
+
+

See also

-

@@ -1145,8 +1214,9 @@ key is triged only when key is released

Returns

number: system heap size left in bytes

Example

-
    heap_size = node.heap();
-
+
    heap_size = node.heap();
+
+

See also

-

@@ -1163,8 +1233,9 @@ Default function: long: change LED blinking rate, short: reset chip

Returns

nil

Example

-
    node.key("long", function(){print('hello world')})
-
+
    node.key("long", function(){print('hello world')})
+
+

See also

-

@@ -1180,9 +1251,10 @@ High: LED off time. Unit: milliseconds, time resolution: 80~100ms

Returns

nil

Example

-
    -- turn led on forever.
-    node.led(0);
-
+
    -- turn led on forever.
+    node.led(0);
+
+

See also

-

@@ -1198,9 +1270,10 @@ same as pcall(loadstring(str)) but support multi seperated line.

Returns

nil

Example

-
    -- never use node.input() in console. no effect.
-    sk:on("receive", function(conn, payload) node.input(payload) end)
-
+
    -- never use node.input() in console. no effect.
+    sk:on("receive", function(conn, payload) node.input(payload) end)
+
+

See also

-

@@ -1216,33 +1289,35 @@ serial_debug: 1 output also show in serial. 0: no serial output.

Returns

nil

Example

-
    function tonet(str)
-      sk:send(str)
-      -- print(str) WRONG!!! never ever print something in this function
-      -- because this will cause a recursive function call!!!
-    end
-    node.ouput(tonet, 1)  -- serial also get the lua output.
-
+
    function tonet(str)
+      sk:send(str)
+      -- print(str) WRONG!!! never ever print something in this function
+      -- because this will cause a recursive function call!!!
+    end
+    node.ouput(tonet, 1)  -- serial also get the lua output.
+
+ + +
    -- a simple telnet server
+    s=net.createServer(net.TCP) 
+    s:listen(2323,function(c) 
+       con_std = c 
+       function s_output(str) 
+          if(con_std~=nil) 
+             then con_std:send(str) 
+          end 
+       end 
+       node.output(s_output, 0)   -- re-direct output to function s_ouput.
+       c:on("receive",function(c,l) 
+          node.input(l)           -- works like pcall(loadstring(l)) but support multiple separate line
+       end) 
+       c:on("disconnection",function(c) 
+          con_std = nil 
+          node.output(nil)        -- un-regist the redirect output function, output goes to serial
+       end) 
+    end)
+
-
    -- a simple telnet server
-    s=net.createServer(net.TCP) 
-    s:listen(23,function(c) 
-       con_std = c 
-       function s_output(str) 
-          if(con_std~=nil) 
-             then con_std:send(str) 
-          end 
-       end 
-       node.output(s_output, 0)   -- re-direct output to function s_ouput.
-       c:on("receive",function(c,l) 
-          node.input(l)           -- works like pcall(loadstring(l)) but support multiple separate line
-       end) 
-       c:on("disconnection",function(c) 
-          con_std = nil 
-          node.output(nil)        -- un-regist the redirect output function, output goes to serial
-       end) 
-    end)
-

See also

-

@@ -1258,9 +1333,10 @@ serial_debug: 1 output also show in serial. 0: no serial output.

Returns

nil

Example

-
    -- remove "foo.lua" from file system.
-    file.remove("foo.lua")
-
+
    -- remove "foo.lua" from file system.
+    file.remove("foo.lua")
+
+

See also

- file.open()

@@ -1283,11 +1359,12 @@ mode:

Returns

nil

Example

-
    -- open 'init.lua', print the first line.
-    file.open("init.lua", "r")
-    print(file.readline())
-    file.close()
-
+
    -- open 'init.lua', print the first line.
+    file.open("init.lua", "r")
+    print(file.readline())
+    file.close()
+
+

See also

- file.close()

@@ -1303,11 +1380,12 @@ mode:

Returns

nil

Example

-
    -- open 'init.lua', print the first line.
-    file.open("init.lua", "r")
-    print(file.readline())
-    file.close()
-
+
    -- open 'init.lua', print the first line.
+    file.open("init.lua", "r")
+    print(file.readline())
+    file.close()
+
+

See also

- file.open()

@@ -1324,11 +1402,12 @@ mode:

file content in string, line by line, include EOL(‘\n’)

return nil when EOF.

Example

-
    -- print the first line of 'init.lua'
-    file.open("init.lua", "r")
-    print(file.readline())
-    file.close()
-
+
    -- print the first line of 'init.lua'
+    file.open("init.lua", "r")
+    print(file.readline())
+    file.close()
+
+

See also

- file.open()

@@ -1345,12 +1424,13 @@ return nil when EOF.

true: write ok.
nil: there is error

Example

-
    -- open 'init.lua' in 'a+' mode
-    file.open("init.lua", "a+")
-    -- write 'foo bar' to the end of the file
-    file.writeline('foo bar')
-    file.close()
-
+
    -- open 'init.lua' in 'a+' mode
+    file.open("init.lua", "a+")
+    -- write 'foo bar' to the end of the file
+    file.writeline('foo bar')
+    file.close()
+
+

See also

- file.open()

@@ -1367,12 +1447,13 @@ nil: there is error

true: write ok.
nil: there is error

Example

-
    -- open 'init.lua' in 'a+' mode
-    file.open("init.lua", "a+")
-    -- write 'foo bar' to the end of the file
-    file.write('foo bar')
-    file.close()
-
+
    -- open 'init.lua' in 'a+' mode
+    file.open("init.lua", "a+")
+    -- write 'foo bar' to the end of the file
+    file.write('foo bar')
+    file.close()
+
+

See also

- file.open()

@@ -1388,13 +1469,14 @@ nil: there is error

Returns

nil

Example

-
    -- open 'init.lua' in 'a+' mode
-    file.open("init.lua", "a+")
-    -- write 'foo bar' to the end of the file
-    file.write('foo bar')
-    file.flush()
-    file.close()
-
+
    -- open 'init.lua' in 'a+' mode
+    file.open("init.lua", "a+")
+    -- write 'foo bar' to the end of the file
+    file.write('foo bar')
+    file.flush()
+    file.close()
+
+

See also

- file.open()

@@ -1415,15 +1497,16 @@ offset: default 0

success: returns the final file position

fail: returns nil

Example

-
    -- open 'init.lua' in 'a+' mode
-    file.open("init.lua", "a+")
-    -- write 'foo bar' to the end of the file
-    file.write('foo bar')
-    file.flush()
-    file.seek("set")
-    print(file.readline())
-    file.close()
-
+
    -- open 'init.lua' in 'a+' mode
+    file.open("init.lua", "a+")
+    -- write 'foo bar' to the end of the file
+    file.write('foo bar')
+    file.flush()
+    file.seek("set")
+    print(file.readline())
+    file.close()
+
+

See also

- file.open()

@@ -1439,11 +1522,12 @@ fail: returns nil

Returns

a lua table which contains the {file name: file size} pairs

Example

-
    l = file.list();
-    for k,v in l do
-      print("name:"..k..", size:"..v)
-    end
-
+
    l = file.list();
+    for k,v in l do
+      print("name:"..k..", size:"..v)
+    end
+
+

See also

- file.remove()

@@ -1461,8 +1545,9 @@ fail: returns nil

Returns

current mode after setup

Example

-
    wifi.setmode(wifi.STATION)
-
+
    wifi.setmode(wifi.STATION)
+
+

See also

- wifi.getmode()

@@ -1477,8 +1562,9 @@ fail: returns nil

Returns

wifi operation mode

Example

-
    print(wifi.getmode())
-
+
    print(wifi.getmode())
+
+

See also

- wifi.setmode()

@@ -1494,8 +1580,9 @@ succeed_callback: callback function called after configuration, which is called

Returns

nil

Example

-
    wifi.startsmart(6, cb())
-
+
    wifi.startsmart(6, cb())
+
+

See also

- wifi.stopsmart()

@@ -1510,8 +1597,9 @@ succeed_callback: callback function called after configuration, which is called

Returns

nil

Example

-
    wifi.stopsmart()
-
+
    wifi.stopsmart()
+
+

See also

- wifi.startsmart()

@@ -1528,8 +1616,9 @@ password: string which is less than 64 bytes.

Returns

nil

Example

-
    wifi.sta.config("myssid","mypassword")
-
+
    wifi.sta.config("myssid","mypassword")
+
+

See also

- wifi.sta.connect()

@@ -1545,8 +1634,9 @@ password: string which is less than 64 bytes.

Returns

nil

Example

-
    wifi.sta.connect()
-
+
    wifi.sta.connect()
+
+

See also

- wifi.sta.disconnect()

@@ -1562,8 +1652,9 @@ password: string which is less than 64 bytes.

Returns

nil

Example

-
    wifi.sta.disconnect()
-
+
    wifi.sta.disconnect()
+
+

See also

- wifi.sta.config()

@@ -1579,8 +1670,9 @@ password: string which is less than 64 bytes.

Returns

nil

Example

-
    wifi.sta.autoconnect()
-
+
    wifi.sta.autoconnect()
+
+

See also

- wifi.sta.config()

@@ -1597,9 +1689,10 @@ password: string which is less than 64 bytes.

Returns

ip address in string, for example:”192.168.0.111”

Example

-
    -- print current ip
-    print(wifi.sta.getip())
-
+
    -- print current ip
+    print(wifi.sta.getip())
+
+

See also

- wifi.sta.getmac()

@@ -1614,9 +1707,10 @@ password: string which is less than 64 bytes.

Returns

mac address in string, for example:”18-33-44-FE-55-BB”

Example

-
    -- print current mac address
-    print(wifi.sta.getmac())
-
+
    -- print current mac address
+    print(wifi.sta.getmac())
+
+

See also

- wifi.sta.getip()

@@ -1630,17 +1724,19 @@ password: string which is less than 64 bytes.

Parameters

cfg: lua table to setup ap.

Example:

-
     cfg={}
-     cfg.ssid="myssid"
-     cfg.pwd="mypwd"
-     wifi.ap.setconfig(cfg)
-
+
     cfg={}
+     cfg.ssid="myssid"
+     cfg.pwd="mypwd"
+     wifi.ap.setconfig(cfg)
+
+

Returns

nil

Example

-
    wifi.ap.config(ssid, 'password')
-
+
    wifi.ap.config(ssid, 'password')
+
+

See also

-

@@ -1655,8 +1751,9 @@ password: string which is less than 64 bytes.

Returns

ip address in string, for example:”192.168.0.111”

Example

-
    wifi.ap.getip()
-
+
    wifi.ap.getip()
+
+

See also

- wifi.ap.getmac()

@@ -1671,8 +1768,9 @@ password: string which is less than 64 bytes.

Returns

mac address in string, for example:”1A-33-44-FE-55-BB”

Example

-
    wifi.ap.getmac()
-
+
    wifi.ap.getmac()
+
+

See also

- wifi.ap.getip()

@@ -1688,9 +1786,10 @@ password: string which is less than 64 bytes.

Returns

nil

Example

-
    -- delay 100us
-    tmr.delay(100)
-
+
    -- delay 100us
+    tmr.delay(100)
+
+

See also

- tmr.now()

@@ -1705,9 +1804,10 @@ password: string which is less than 64 bytes.

Returns

uint32: value of counter

Example

-
    -- print current value of counter
-    print(tmr.now())
-
+
    -- print current value of counter
+    print(tmr.now())
+
+

See also

- tmr.delay()

@@ -1724,9 +1824,10 @@ function do(): callback function for alarm timed out

Returns

nil

Example

-
    -- print "hello world" every 1000ms
-    tmr.alarm(1000, 1, function() print("hello world") end )
-
+
    -- print "hello world" every 1000ms
+    tmr.alarm(1000, 1, function() print("hello world") end )
+
+

See also

- tmr.now()

@@ -1742,14 +1843,15 @@ function do(): callback function for alarm timed out

Returns

nil

Example

-
    -- print "hello world" every 1000ms
-    tmr.alarm(1000, 1, function() print("hello world") end )
+
    -- print "hello world" every 1000ms
+    tmr.alarm(1000, 1, function() print("hello world") end )
 
-    -- something else
+    -- something else
+
+    -- stop alarm
+    tmr.stop()
+
- -- stop alarm - tmr.stop() -

See also

- tmr.now()

@@ -1768,10 +1870,10 @@ mode: gpio.OUTPUT or gpio.INPUT, or gpio.INT(interrupt mode)

Returns

nil

Example

-
    -- set gpio 0 as output.
-    gpio.mode(0, gpio.OUTPUT)
+
    -- set gpio 0 as output.
+    gpio.mode(0, gpio.OUTPUT)
+
-

See also

- gpio.read()

@@ -1786,9 +1888,10 @@ mode: gpio.OUTPUT or gpio.INPUT, or gpio.INT(interrupt mode)

Returns

number:0 - low, 1 - high

Example

-
    -- read value of gpio 0.
-    gpio.read(0)
-
+
    -- read value of gpio 0.
+    gpio.read(0)
+
+

See also

- gpio.mode()

@@ -1804,11 +1907,12 @@ level: gpio.HIGH or gpio.LOW

Returns

nil

Example

-
    -- set pin index 1 to GPIO mode, and set the pin to high.
-    pin=1
-    gpio.mode(pin, gpio.OUTPUT)
-    gpio.write(pin, gpio.HIGH)
-
+
    -- set pin index 1 to GPIO mode, and set the pin to high.
+    pin=1
+    gpio.mode(pin, gpio.OUTPUT)
+    gpio.write(pin, gpio.HIGH)
+
+

See also

- gpio.mode()

@@ -1826,19 +1930,19 @@ function(level): callback function when triggered. The gpio level is the param.

Returns

nil

Example

-
    -- use pin 0 as the input pulse width counter
-    pulse0 = 0
-    du = 0
-    gpio.mode(0,gpio.INT)
-    function pin0cb(level)
-     du = tmr.now() – pulse0
-     print(du)
-     pulse0 = tmr.now()
-     if level == 1 then gpio.trig(0, "down ") else gpio.trig(0, "up ") end
-    end
-    gpio.trig(0, "down ",pin0cb)
+
    -- use pin 0 as the input pulse width counter
+    pulse0 = 0
+    du = 0
+    gpio.mode(0,gpio.INT)
+    function pin0cb(level)
+     du = tmr.now()  pulse0
+     print(du)
+     pulse0 = tmr.now()
+     if level == 1 then gpio.trig(0, "down ") else gpio.trig(0, "up ") end
+    end
+    gpio.trig(0, "down ",pin0cb)
+
-

See also

- gpio.mode()

@@ -1857,9 +1961,10 @@ duty: 0~100, pwm duty cycle in percentage

Returns

nil

Example

-
    -- set pin index 0 as pwm output, frequency is 100Hz, duty cycle is 50-50.
-    pwm.setup(0, 100, 50)
-
+
    -- set pin index 0 as pwm output, frequency is 100Hz, duty cycle is 50-50.
+    pwm.setup(0, 100, 50)
+
+

See also

- pwm.start()

@@ -1874,8 +1979,9 @@ duty: 0~100, pwm duty cycle in percentage

Returns

nil

Example

-
    pwm.close(0)
-
+
    pwm.close(0)
+
+

See also

- pwm.start()

@@ -1890,8 +1996,9 @@ duty: 0~100, pwm duty cycle in percentage

Returns

nil

Example

-
    pwm.start(0)
-
+
    pwm.start(0)
+
+

See also

- pwm.stop()

@@ -1906,8 +2013,9 @@ duty: 0~100, pwm duty cycle in percentage

Returns

nil

Example

-
    pwm.stop(0)
-
+
    pwm.stop(0)
+
+

See also

- pwm.start()

@@ -1924,8 +2032,9 @@ clock: 1~500, pwm frequency.

Returns

nil

Example

-
    pwm.setclock(0, 100)
-
+
    pwm.setclock(0, 100)
+
+

See also

- pwm.getclock()

@@ -1940,8 +2049,9 @@ clock: 1~500, pwm frequency.

Returns

number:pwm frequency of pin

Example

-
    print(pwm.getclock(0))
-
+
    print(pwm.getclock(0))
+
+

See also

- pwm.setclock()

@@ -1957,8 +2067,9 @@ duty: 0~100, pwm duty cycle in percentage

Returns

nil

Example

-
    pwm.setduty(0, 50)
-
+
    pwm.setduty(0, 50)
+
+

See also

- pwm.getduty()

@@ -1973,24 +2084,24 @@ duty: 0~100, pwm duty cycle in percentage

Returns

nil

Example

-
    -- D0 is connected to green led
-    -- D1 is connected to blue led
-    -- D2 is connected to red led
-    pwm.setup(0,500,50)
-    pwm.setup(1,500,50)
-    pwm.setup(2,500,50)
-    pwm.start(0)
-    pwm.start(1)
-    pwm.start(2)
-    function led(r,g,b)
-      pwm.setduty(0,g)
-      pwm.setduty(1,b)
-      pwm.setduty(2,r)
-    end
-    led(50,0,0) --  set led to red
-    led(0,0,50) -- set led to blue.
+
    -- D0 is connected to green led
+    -- D1 is connected to blue led
+    -- D2 is connected to red led
+    pwm.setup(0,500,50)
+    pwm.setup(1,500,50)
+    pwm.setup(2,500,50)
+    pwm.start(0)
+    pwm.start(1)
+    pwm.start(2)
+    function led(r,g,b)
+      pwm.setduty(0,g)
+      pwm.setduty(1,b)
+      pwm.setduty(2,r)
+    end
+    led(50,0,0) --  set led to red
+    led(0,0,50) -- set led to blue.
+
-

See also

- pwm.setduty()

@@ -2009,8 +2120,9 @@ secure: true or false, true for safe link, false for ordinary link

Returns

net.server sub module

Example

-
    net.createServer(net.TCP, true)
-
+
    net.createServer(net.TCP, true)
+
+

See also

- net.createConnection()

@@ -2026,8 +2138,9 @@ secure: true or false, true for safe link, false for ordinary link

Returns

net.server sub module

Example

-
    net.createConnection(net.UDP, false)
-
+
    net.createConnection(net.UDP, false)
+
+

See also

- net.createServer()

@@ -2045,14 +2158,15 @@ function(net.socket): callback function, pass to Caller function as param if a c

Returns

nil

Example

-
    -- create a server
-    sv=net.createServer(net.TCP, false)
-    -- server listen on 80, if data received, print data to console, and send "hello world" to remote.
-    sv:listen(80,function(c)
-      c:on("receive", function(sck, pl) print(pl) end)
-      c:send("hello world")
-      end)
-
+
    -- create a server
+    sv=net.createServer(net.TCP, false)
+    -- server listen on 80, if data received, print data to console, and send "hello world" to remote.
+    sv:listen(80,function(c)
+      c:on("receive", function(sck, pl) print(pl) end)
+      c:send("hello world")
+      end)
+
+

See also

- net.createServer()

@@ -2067,11 +2181,12 @@ function(net.socket): callback function, pass to Caller function as param if a c

Returns

nil

Example

-
    -- create a server
-    sv=net.createServer(net.TCP, false)
-    -- close server
-    sv:close()
-
+
    -- create a server
+    sv=net.createServer(net.TCP, false)
+    -- close server
+    sv:close()
+
+

See also

- net.createServer()

@@ -2115,11 +2230,12 @@ If event is”receive”, the second param is received data in string.

Returns

nil

Example

-
    sk=net.createConnection(net.TCP, false)
-    sk:on("receive", function(sck, c) print(c) end )
-    sk:connect(80,"192.168.0.66")
-    sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
-
+
    sk=net.createConnection(net.TCP, false)
+    sk:on("receive", function(sck, c) print(c) end )
+    sk:connect(80,"192.168.0.66")
+    sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
+
+

See also

- net.createServer()

@@ -2216,8 +2332,9 @@ data: data can be numbers, string or lua table.

Returns

nil

Example

-
    i2c.write(0, "hello", "world")
-
+
    i2c.write(0, "hello", "world")
+
+

See also

- i2c.read()

@@ -2233,31 +2350,31 @@ len: data length

Returns

string:data received.

Example

-
    id=0
-    sda=1
-    scl=0
+
    id=0
+    sda=1
+    scl=0
 
-    -- initialize i2c, set pin1 as sda, set pin0 as scl
-    i2c.setup(id,sda,scl,i2c.SLOW)
+    -- initialize i2c, set pin1 as sda, set pin0 as scl
+    i2c.setup(id,sda,scl,i2c.SLOW)
 
-    -- user defined function: read from reg_addr content of dev_addr
-    function read_reg(dev_addr, reg_addr)
-      i2c.start(id)
-      i2c.address(id, dev_addr ,i2c.TRANSMITTER)
-      i2c.write(id,reg_addr)
-      i2c.stop(id)
-      i2c.start(id)
-      i2c.address(id, dev_addr,i2c.RECEIVER)
-      c=i2c.read(id,1)
-      i2c.stop(id)
-      return c
-    end
+    -- user defined function: read from reg_addr content of dev_addr
+    function read_reg(dev_addr, reg_addr)
+      i2c.start(id)
+      i2c.address(id, dev_addr ,i2c.TRANSMITTER)
+      i2c.write(id,reg_addr)
+      i2c.stop(id)
+      i2c.start(id)
+      i2c.address(id, dev_addr,i2c.RECEIVER)
+      c=i2c.read(id,1)
+      i2c.stop(id)
+      return c
+    end
 
-    -- get content of register 0xAA of device 0x77
-    reg = read_reg(0x77, 0xAA)
-    pirnt(string.byte(reg))
+    -- get content of register 0xAA of device 0x77
+    reg = read_reg(0x77, 0xAA)
+    pirnt(string.byte(reg))
+
-

See also

- i2c.write()

\ No newline at end of file diff --git a/API.md b/nodemcu_api_en.md similarity index 99% rename from API.md rename to nodemcu_api_en.md index 93a90116..d8f24c99 100644 --- a/API.md +++ b/nodemcu_api_en.md @@ -1,4 +1,5 @@ # **nodeMcu API Instruction** # +[中文版本](https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_cn) ###version 0.9.2 build 2014-11-18 ###change log: