2014-11-17 18:24:49 +01:00
<!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < style > b o d y {
width: 45em;
border: 1px solid #ddd;
outline: 1300px solid #fff;
margin: 16px auto;
}
body .markdown-body
{
padding: 30px;
}
@font-face {
font-family: fontawesome-mini;
src: url(data:font/woff;charset=utf-8;base64,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
}
@font-face {
font-family: octicons-anchor;
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format('woff');
}
.markdown-body {
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
color: #333333;
overflow: hidden;
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
font-size: 16px;
line-height: 1.6;
word-wrap: break-word;
}
.markdown-body a {
background: transparent;
}
.markdown-body a:active,
.markdown-body a:hover {
outline: 0;
}
.markdown-body b,
.markdown-body strong {
font-weight: bold;
}
.markdown-body mark {
background: #ff0;
color: #000;
font-style: italic;
font-weight: bold;
}
.markdown-body sub,
.markdown-body sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
.markdown-body sup {
top: -0.5em;
}
.markdown-body sub {
bottom: -0.25em;
}
.markdown-body h1 {
font-size: 2em;
margin: 0.67em 0;
}
.markdown-body img {
border: 0;
}
.markdown-body hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
.markdown-body pre {
overflow: auto;
}
.markdown-body code,
.markdown-body kbd,
.markdown-body pre,
.markdown-body samp {
font-family: monospace, monospace;
font-size: 1em;
}
.markdown-body input {
color: inherit;
font: inherit;
margin: 0;
}
.markdown-body html input[disabled] {
cursor: default;
}
.markdown-body input {
line-height: normal;
}
.markdown-body input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
.markdown-body table {
border-collapse: collapse;
border-spacing: 0;
}
.markdown-body td,
.markdown-body th {
padding: 0;
}
.markdown-body .codehilitetable {
border: 0;
border-spacing: 0;
}
.markdown-body .codehilitetable tr {
border: 0;
}
.markdown-body .codehilitetable pre,
.markdown-body .codehilitetable div.codehilite {
margin: 0;
}
.markdown-body .linenos,
.markdown-body .code,
.markdown-body .codehilitetable td {
border: 0;
padding: 0;
}
.markdown-body td:not(.linenos) .linenodiv {
padding: 0 !important;
}
.markdown-body .code {
width: 100%;
}
.markdown-body .linenos div pre,
.markdown-body .linenodiv pre,
.markdown-body .linenodiv {
border: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
-webkit-border-top-left-radius: 3px;
-webkit-border-bottom-left-radius: 3px;
-moz-border-radius-topleft: 3px;
-moz-border-radius-bottomleft: 3px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
.markdown-body .code div pre,
.markdown-body .code div {
border: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
-webkit-border-top-right-radius: 3px;
-webkit-border-bottom-right-radius: 3px;
-moz-border-radius-topright: 3px;
-moz-border-radius-bottomright: 3px;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
.markdown-body * {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.markdown-body input {
font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
line-height: 1.4;
}
.markdown-body a {
color: #4183c4;
text-decoration: none;
}
.markdown-body a:hover,
.markdown-body a:focus,
.markdown-body a:active {
text-decoration: underline;
}
.markdown-body hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #ddd;
}
.markdown-body hr:before,
.markdown-body hr:after {
display: table;
content: " ";
}
.markdown-body hr:after {
clear: both;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 15px;
margin-bottom: 15px;
line-height: 1.1;
}
.markdown-body h1 {
font-size: 30px;
}
.markdown-body h2 {
font-size: 21px;
}
.markdown-body h3 {
font-size: 16px;
}
.markdown-body h4 {
font-size: 14px;
}
.markdown-body h5 {
font-size: 12px;
}
.markdown-body h6 {
font-size: 11px;
}
.markdown-body blockquote {
margin: 0;
}
.markdown-body ul,
.markdown-body ol {
padding: 0;
margin-top: 0;
margin-bottom: 0;
}
.markdown-body ol ol,
.markdown-body ul ol {
list-style-type: lower-roman;
}
.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
list-style-type: lower-alpha;
}
.markdown-body dd {
margin-left: 0;
}
.markdown-body code,
.markdown-body pre,
.markdown-body samp {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 12px;
}
.markdown-body pre {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body kbd {
background-color: #e7e7e7;
background-image: -moz-linear-gradient(#fefefe, #e7e7e7);
background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
background-image: linear-gradient(#fefefe, #e7e7e7);
background-repeat: repeat-x;
border-radius: 2px;
border: 1px solid #cfcfcf;
color: #000;
padding: 3px 5px;
line-height: 10px;
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
display: inline-block;
}
.markdown-body>*:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
margin-bottom: 0 !important;
}
.markdown-body .headeranchor-link {
position: absolute;
top: 0;
bottom: 0;
left: 0;
display: block;
padding-right: 6px;
padding-left: 30px;
margin-left: -30px;
}
.markdown-body .headeranchor-link:focus {
outline: none;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
position: relative;
margin-top: 1em;
margin-bottom: 16px;
font-weight: bold;
line-height: 1.4;
}
.markdown-body h1 .headeranchor,
.markdown-body h2 .headeranchor,
.markdown-body h3 .headeranchor,
.markdown-body h4 .headeranchor,
.markdown-body h5 .headeranchor,
.markdown-body h6 .headeranchor {
display: none;
color: #000;
vertical-align: middle;
}
.markdown-body h1:hover .headeranchor-link,
.markdown-body h2:hover .headeranchor-link,
.markdown-body h3:hover .headeranchor-link,
.markdown-body h4:hover .headeranchor-link,
.markdown-body h5:hover .headeranchor-link,
.markdown-body h6:hover .headeranchor-link {
height: 1em;
padding-left: 8px;
margin-left: -30px;
line-height: 1;
text-decoration: none;
}
.markdown-body h1:hover .headeranchor-link .headeranchor,
.markdown-body h2:hover .headeranchor-link .headeranchor,
.markdown-body h3:hover .headeranchor-link .headeranchor,
.markdown-body h4:hover .headeranchor-link .headeranchor,
.markdown-body h5:hover .headeranchor-link .headeranchor,
.markdown-body h6:hover .headeranchor-link .headeranchor {
display: inline-block;
}
.markdown-body h1 {
padding-bottom: 0.3em;
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}
.markdown-body h2 {
padding-bottom: 0.3em;
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}
.markdown-body h3 {
font-size: 1.5em;
line-height: 1.43;
}
.markdown-body h4 {
font-size: 1.25em;
}
.markdown-body h5 {
font-size: 1em;
}
.markdown-body h6 {
font-size: 1em;
color: #777;
}
.markdown-body p,
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body table,
.markdown-body pre,
.markdown-body .admonition {
margin-top: 0;
margin-bottom: 16px;
}
.markdown-body hr {
height: 4px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 2em;
}
.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body li>p {
margin-top: 16px;
}
.markdown-body dl {
padding: 0;
}
.markdown-body dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: bold;
}
.markdown-body dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
.markdown-body blockquote {
padding: 0 15px;
color: #777;
border-left: 4px solid #ddd;
}
.markdown-body blockquote>:first-child {
margin-top: 0;
}
.markdown-body blockquote>:last-child {
margin-bottom: 0;
}
.markdown-body table {
display: block;
width: 100%;
overflow: auto;
word-break: normal;
word-break: keep-all;
}
.markdown-body table th {
font-weight: bold;
}
.markdown-body table th,
.markdown-body table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
.markdown-body table tr {
background-color: #fff;
border-top: 1px solid #ccc;
}
.markdown-body table tr:nth-child(2n) {
background-color: #f8f8f8;
}
.markdown-body img {
max-width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.markdown-body code,
.markdown-body samp {
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
margin: 0;
font-size: 85%;
background-color: rgba(0,0,0,0.04);
border-radius: 3px;
}
.markdown-body code:before,
.markdown-body code:after {
letter-spacing: -0.2em;
content: "\00a0";
}
.markdown-body pre>code {
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
}
.markdown-body .codehilite {
margin-bottom: 16px;
}
.markdown-body .codehilite pre,
.markdown-body pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border-radius: 3px;
}
.markdown-body .codehilite pre {
margin-bottom: 0;
word-break: normal;
}
.markdown-body pre {
word-wrap: normal;
}
.markdown-body pre code {
display: inline;
max-width: initial;
padding: 0;
margin: 0;
overflow: initial;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
.markdown-body pre code:before,
.markdown-body pre code:after {
content: normal;
}
/* Admonition */
.markdown-body .admonition {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
position: relative;
border-radius: 3px;
border: 1px solid #e0e0e0;
border-left: 6px solid #333;
padding: 10px 10px 10px 30px;
}
.markdown-body .admonition table {
color: #333;
}
.markdown-body .admonition p {
padding: 0;
}
.markdown-body .admonition-title {
font-weight: bold;
margin: 0;
}
.markdown-body .admonition>.admonition-title {
color: #333;
}
.markdown-body .attention>.admonition-title {
color: #a6d796;
}
.markdown-body .caution>.admonition-title {
color: #d7a796;
}
.markdown-body .hint>.admonition-title {
color: #96c6d7;
}
.markdown-body .danger>.admonition-title {
color: #c25f77;
}
.markdown-body .question>.admonition-title {
color: #96a6d7;
}
.markdown-body .note>.admonition-title {
color: #d7c896;
}
.markdown-body .admonition:before,
.markdown-body .attention:before,
.markdown-body .caution:before,
.markdown-body .hint:before,
.markdown-body .danger:before,
.markdown-body .question:before,
.markdown-body .note:before {
font: normal normal 16px fontawesome-mini;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
line-height: 1.5;
color: #333;
position: absolute;
left: 0;
top: 0;
padding-top: 10px;
padding-left: 10px;
}
.markdown-body .admonition:before {
content: "\f056\00a0";
color: 333;
}
.markdown-body .attention:before {
content: "\f058\00a0";
color: #a6d796;
}
.markdown-body .caution:before {
content: "\f06a\00a0";
color: #d7a796;
}
.markdown-body .hint:before {
content: "\f05a\00a0";
color: #96c6d7;
}
.markdown-body .danger:before {
content: "\f057\00a0";
color: #c25f77;
}
.markdown-body .question:before {
content: "\f059\00a0";
color: #96a6d7;
}
.markdown-body .note:before {
content: "\f040\00a0";
color: #d7c896;
}
.markdown-body .admonition::after {
content: normal;
}
.markdown-body .attention {
border-left: 6px solid #a6d796;
}
.markdown-body .caution {
border-left: 6px solid #d7a796;
}
.markdown-body .hint {
border-left: 6px solid #96c6d7;
}
.markdown-body .danger {
border-left: 6px solid #c25f77;
}
.markdown-body .question {
border-left: 6px solid #96a6d7;
}
.markdown-body .note {
border-left: 6px solid #d7c896;
}
.markdown-body .admonition>*:first-child {
margin-top: 0 !important;
}
.markdown-body .admonition>*:last-child {
margin-bottom: 0 !important;
}
/* progress bar*/
.markdown-body .progress {
display: block;
width: 300px;
margin: 10px 0;
height: 24px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
background-color: #ededed;
position: relative;
box-shadow: inset -1px 1px 3px rgba(0, 0, 0, .1);
}
.markdown-body .progress-label {
position: absolute;
text-align: center;
font-weight: bold;
width: 100%; margin: 0;
line-height: 24px;
color: #333;
text-shadow: 1px 1px 0 #fefefe, -1px -1px 0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px 0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000;
-webkit-font-smoothing: antialiased !important;
white-space: nowrap;
overflow: hidden;
}
.markdown-body .progress-bar {
height: 24px;
float: left;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
background-color: #96c6d7;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(0, 0, 0, .1);
background-size: 30px 30px;
background-image: -webkit-linear-gradient(
135deg, rgba(255, 255, 255, .4) 27%,
transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%,
transparent 77%, transparent
);
background-image: -moz-linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
background-image: -ms-linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
background-image: -o-linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
background-image: linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
}
.markdown-body .progress-100plus .progress-bar {
background-color: #a6d796;
}
.markdown-body .progress-80plus .progress-bar {
background-color: #c6d796;
}
.markdown-body .progress-60plus .progress-bar {
background-color: #d7c896;
}
.markdown-body .progress-40plus .progress-bar {
background-color: #d7a796;
}
.markdown-body .progress-20plus .progress-bar {
background-color: #d796a6;
}
.markdown-body .progress-0plus .progress-bar {
background-color: #c25f77;
}
.markdown-body .candystripe-animate .progress-bar{
-webkit-animation: animate-stripes 3s linear infinite;
-moz-animation: animate-stripes 3s linear infinite;
animation: animate-stripes 3s linear infinite;
}
@-webkit-keyframes animate-stripes {
0% {
background-position: 0 0;
}
100% {
background-position: 60px 0;
}
}
@-moz-keyframes animate-stripes {
0% {
background-position: 0 0;
}
100% {
background-position: 60px 0;
}
}
@keyframes animate-stripes {
0% {
background-position: 0 0;
}
100% {
background-position: 60px 0;
}
}
.markdown-body .gloss .progress-bar {
box-shadow:
inset 0 4px 12px rgba(255, 255, 255, .7),
inset 0 -12px 0 rgba(0, 0, 0, .05);
}
/* Multimarkdown Critic Blocks */
.markdown-body .critic_mark {
background: #ff0;
}
.markdown-body .critic_delete {
color: #c82829;
text-decoration: line-through;
}
.markdown-body .critic_insert {
color: #718c00 ;
text-decoration: underline;
}
.markdown-body .critic_comment {
color: #8e908c;
font-style: italic;
}
.markdown-body .headeranchor {
font: normal normal 16px octicons-anchor;
line-height: 1;
display: inline-block;
text-decoration: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.headeranchor:before {
content: '\f05c';
}
.markdown-body .task-list-item {
list-style-type: none;
}
.markdown-body .task-list-item+.task-list-item {
margin-top: 3px;
}
.markdown-body .task-list-item input {
margin: 0 4px 0.25em -20px;
vertical-align: middle;
}
/* Media */
@media only screen and (min-width: 480px) {
.markdown-body {
font-size:14px;
}
}
@media only screen and (min-width: 768px) {
.markdown-body {
font-size:16px;
}
}
@media print {
.markdown-body * {
background: transparent !important;
color: black !important;
filter:none !important;
-ms-filter: none !important;
}
.markdown-body {
font-size:12pt;
max-width:100%;
outline:none;
border: 0;
}
.markdown-body a,
.markdown-body a:visited {
text-decoration: underline;
}
.markdown-body .headeranchor-link {
display: none;
}
.markdown-body a[href]:after {
content: " (" attr(href) ")";
}
.markdown-body abbr[title]:after {
content: " (" attr(title) ")";
}
.markdown-body .ir a:after,
.markdown-body a[href^="javascript:"]:after,
.markdown-body a[href^="#"]:after {
content: "";
}
.markdown-body pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
.markdown-body pre,
.markdown-body blockquote {
border: 1px solid #999;
padding-right: 1em;
page-break-inside: avoid;
}
.markdown-body .progress,
.markdown-body .progress-bar {
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.markdown-body .progress {
border: 1px solid #ddd;
}
.markdown-body .progress-bar {
height: 22px;
border-right: 1px solid #ddd;
}
.markdown-body tr,
.markdown-body img {
page-break-inside: avoid;
}
.markdown-body img {
max-width: 100% !important;
}
.markdown-body p,
.markdown-body h2,
.markdown-body h3 {
orphans: 3;
widows: 3;
}
.markdown-body h2,
.markdown-body h3 {
page-break-after: avoid;
}
}
2014-11-18 12:58:48 +01:00
< / style > < title > API< / title > < / head > < body > < article class = "markdown-body" > < h1 id = "nodemcu-api-instruction" > < strong > nodeMcu API Instruction< / strong > < / h1 >
2014-11-17 18:24:49 +01:00
< h3 id = "version-092-build-2014-11-18" > < a name = "user-content-version-092-build-2014-11-18" href = "#version-092-build-2014-11-18" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > version 0.9.2 build 2014-11-18< / h3 >
< p > < a id = "change_log" > < / a > < / p >
< h3 id = "change-log" > < a name = "user-content-change-log" href = "#change-log" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > change log:< / h3 >
< p > 2014-11-18< br / > < br / >
2014-11-18 05:27:28 +01:00
bug fixed: net.socket:connect() has no effect.< / p >
< p > 2014-11-18< br / > < br / >
2014-11-17 18:24:49 +01:00
bug fixed: as a tcp server, the connection can’ t closed with :close().< br / > < br / >
tcp server: inactive connection will closed by server in 30s (previously 180s).< br / > < br / >
add a test api node.input() to put lua chunk into lua interpretor, multi-line supported.< br / > < br / >
add a test api node.ouput(function) to direct serial output to a callback function.< br / > < br / >
file.readline() now returns line include EOL(‘ \n’ ), and returns nil when EOF. < / p >
< p > 2014-11-12< br / > < br / >
full version firmware< br / > < / p >
< p > 2014-11-11< br / > < br / >
add file.seek() api to file module< br / > < br / >
now max 6 pwm channel is supported< br / > < / p >
< p > 2014-11-10< br / > < br / >
change log module to file module< br / > < br / >
now file operation support multiple read/write< br / > < br / >
for now file module only allowed one file opened< br / > < / p >
< p > 2014-11-5< br / > < br / >
delete log operation api from node module< br / > < br / >
add log module< br / > < br / >
modify wifi module api< br / > < br / >
modify node.key long_press and short_press default function< br / > < br / >
key is triged only when key is released< br / > < / p >
< h1 id = "summary" > < a name = "user-content-summary" href = "#summary" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Summary< / h1 >
< ul >
< li > Easy to access wireless router< / li >
< li > Based on Lua 5.1.4, Developers are supposed to have experience with Lua Program language.< / li >
< li > Event-Drive programming modal.< / li >
< li > Build-in file, timer, pwm, i2c, net, gpio, wifi module.< / li >
< li > Serial Port BaudRate:9600< / li >
< li > Re-mapped GPIO pin, use the index to program gpio, i2c, pwm.< / li >
< li > GPIO Map Table:< / li >
< / ul >
< table >
< tr >
< th scope = "col" > IO index< / th > < th scope = "col" > ESP8266 pin< / th > < th scope = "col" > IO index< / th > < th scope = "col" > ESP8266 pin< / th >
< / tr >
< tr >
< td > 0< / td > < td > GPIO12< / td > < td > 8< / td > < td > GPIO0< / td >
< / tr >
< tr >
< td > 1< / td > < td > GPIO13< / td > < td > 9< / td > < td > GPIO2< / td >
< / tr >
< tr >
< td > 2< / td > < td > GPIO14< / td > < td > 10< / td > < td > GPIO4< / td >
< / tr >
< tr >
< td > 3< / td > < td > GPIO15< / td > < td > 11< / td > < td > GPIO5< / td >
< / tr >
< tr >
< td > 4< / td > < td > GPIO3< / td > < td > < / td > < td > < / td >
< / tr >
< tr >
< td > 5< / td > < td > GPIO1< / td > < td > < / td > < td > < / td >
< / tr >
< tr >
< td > 6< / td > < td > GPIO9< / td > < td > < / td > < td > < / td >
< / tr >
< tr >
< td > 7< / td > < td > GPIO10< /td< td > < / td > < td > < / td >
< / tr >
< / table >
< h1 id = "burnflash-firmware" > < a name = "user-content-burnflash-firmware" href = "#burnflash-firmware" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Burn/Flash Firmware< / h1 >
< h3 id = "address" > < a name = "user-content-address" href = "#address" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Address< / h3 >
< p > nodemcu_512k.bin: 0x00000< br / > < / p >
< h1 id = "node-module" > < a name = "user-content-node-module" href = "#node-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node module< / h1 >
< p > < a id = "nm_restart" > < / a > < / p >
< h2 id = "noderestart" > < a name = "user-content-noderestart" href = "#noderestart" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.restart()< / h2 >
< h4 id = "description" > < a name = "user-content-description" href = "#description" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > restart the chip.< / p >
< h4 id = "syntax" > < a name = "user-content-syntax" href = "#syntax" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.restart()< / p >
< h4 id = "parameters" > < a name = "user-content-parameters" href = "#parameters" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns" > < a name = "user-content-returns" href = "#returns" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example" > < a name = "user-content-example" href = "#example" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > node.restart();
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also" > < a name = "user-content-see-also" href = "#see-also" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "nm_dsleep" > < / a > < / p >
< h2 id = "nodedsleep" > < a name = "user-content-nodedsleep" href = "#nodedsleep" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.dsleep()< / h2 >
< h4 id = "description_1" > < a name = "user-content-description_1" href = "#description_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > Enter deep sleep mode, wake up when timed out< br / > < / p >
< h4 id = "syntax_1" > < a name = "user-content-syntax_1" href = "#syntax_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.dsleep(us)< br / > < br / >
< strong > -Note:< / strong > This function can only be used in the condition that esp8266 PIN32(RST) and PIN8(XPD_DCDC) are connected together.< / p >
< h4 id = "parameters_1" > < a name = "user-content-parameters_1" href = "#parameters_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > us: sleep time in micro second< / p >
< h4 id = "returns_1" > < a name = "user-content-returns_1" href = "#returns_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_1" > < a name = "user-content-example_1" href = "#example_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > node.dsleep(us);
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_1" > < a name = "user-content-see-also_1" href = "#see-also_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "nm_chipid" > < / a > < / p >
< h2 id = "nodechipid" > < a name = "user-content-nodechipid" href = "#nodechipid" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.chipid()< / h2 >
< h4 id = "description_2" > < a name = "user-content-description_2" href = "#description_2" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > return chip ID< / p >
< h4 id = "syntax_2" > < a name = "user-content-syntax_2" href = "#syntax_2" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.chipid()< / p >
< h4 id = "parameters_2" > < a name = "user-content-parameters_2" href = "#parameters_2" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_2" > < a name = "user-content-returns_2" href = "#returns_2" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > number:chip ID< / p >
< h4 id = "example_2" > < a name = "user-content-example_2" href = "#example_2" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > id = node.chipid();
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_2" > < a name = "user-content-see-also_2" href = "#see-also_2" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "nm_heap" > < / a > < / p >
< h2 id = "nodeheap" > < a name = "user-content-nodeheap" href = "#nodeheap" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.heap()< / h2 >
< h4 id = "description_3" > < a name = "user-content-description_3" href = "#description_3" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > return the remain HEAP size in bytes< / p >
< h4 id = "syntax_3" > < a name = "user-content-syntax_3" href = "#syntax_3" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.heap()< / p >
< h4 id = "parameters_3" > < a name = "user-content-parameters_3" href = "#parameters_3" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_3" > < a name = "user-content-returns_3" href = "#returns_3" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > number: system heap size left in bytes< / p >
< h4 id = "example_3" > < a name = "user-content-example_3" href = "#example_3" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > heap_size = node.heap();
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_3" > < a name = "user-content-see-also_3" href = "#see-also_3" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "nm_key" > < / a > < / p >
< h2 id = "nodekey" > < a name = "user-content-nodekey" href = "#nodekey" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.key()< / h2 >
< h4 id = "description_4" > < a name = "user-content-description_4" href = "#description_4" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > define button function, button is connected to GPIO16.< / p >
< h4 id = "syntax_4" > < a name = "user-content-syntax_4" href = "#syntax_4" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.key(type, function())< / p >
< h4 id = "parameters_4" > < a name = "user-content-parameters_4" href = "#parameters_4" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > type: type is either string “ long” or “ short” . long: press the key for 3 seconds, short: press shortly(less than 3 seconds)< br / > < br / >
function(): user defined function which is called when key is pressed. If nil, cancling the user defined function.< br / > < br / >
Default function: long: change LED blinking rate, short: reset chip< / p >
< h4 id = "returns_4" > < a name = "user-content-returns_4" href = "#returns_4" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_4" > < a name = "user-content-example_4" href = "#example_4" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > node.key(" long" , function(){print('hello world')})
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_4" > < a name = "user-content-see-also_4" href = "#see-also_4" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "nm_led" > < / a > < / p >
< h2 id = "nodeled" > < a name = "user-content-nodeled" href = "#nodeled" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.led()< / h2 >
< h4 id = "description_5" > < a name = "user-content-description_5" href = "#description_5" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > setup the on/off time for led, which connected to GPIO16, multiplexing with node.key()< / p >
< h4 id = "syntax_5" > < a name = "user-content-syntax_5" href = "#syntax_5" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.led(low, high)< / p >
< h4 id = "parameters_5" > < a name = "user-content-parameters_5" href = "#parameters_5" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > Low: LED off time, LED keeps on when low=0. Unit: milliseconds, time resolution: 80~100ms< br / > < br / >
High: LED off time. Unit: milliseconds, time resolution: 80~100ms< / p >
< h4 id = "returns_5" > < a name = "user-content-returns_5" href = "#returns_5" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_5" > < a name = "user-content-example_5" href = "#example_5" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- turn led on forever.
node.led(0);
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_5" > < a name = "user-content-see-also_5" href = "#see-also_5" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "nm_input" > < / a > < / p >
< h2 id = "nodeinput" > < a name = "user-content-nodeinput" href = "#nodeinput" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.input()< / h2 >
< h4 id = "description_6" > < a name = "user-content-description_6" href = "#description_6" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > accept a string and put the string into Lua interpretor.< br / > < br / >
same as pcall(loadstring(str)) but support multi seperated line.< / p >
< h4 id = "syntax_6" > < a name = "user-content-syntax_6" href = "#syntax_6" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.input(str)< / p >
< h4 id = "parameters_6" > < a name = "user-content-parameters_6" href = "#parameters_6" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > str: Lua chunk< / p >
< h4 id = "returns_6" > < a name = "user-content-returns_6" href = "#returns_6" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_6" > < a name = "user-content-example_6" href = "#example_6" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- never use node.input() in console. no effect.
sk:on(" receive" , function(conn, payload) node.input(payload) end)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_6" > < a name = "user-content-see-also_6" href = "#see-also_6" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "nm_output" > < / a > < / p >
< h2 id = "nodeoutput" > < a name = "user-content-nodeoutput" href = "#nodeoutput" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > node.output()< / h2 >
< h4 id = "description_7" > < a name = "user-content-description_7" href = "#description_7" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > direct output from lua interpretor to a call back function.< / p >
< h4 id = "syntax_7" > < a name = "user-content-syntax_7" href = "#syntax_7" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > node.output(function(str), serial_debug)< / p >
< h4 id = "parameters_7" > < a name = "user-content-parameters_7" href = "#parameters_7" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > function(str): a function accept every output as str, and can send the output to a socket.< br / > < br / >
serial_debug: 1 output also show in serial. 0: no serial output.< / p >
< h4 id = "returns_7" > < a name = "user-content-returns_7" href = "#returns_7" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_7" > < a name = "user-content-example_7" href = "#example_7" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > 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.
< / code > < / pre >
< pre > < code class = "lua" > -- 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)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_7" > < a name = "user-content-see-also_7" href = "#see-also_7" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< h1 id = "file-module" > < a name = "user-content-file-module" href = "#file-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file module< / h1 >
< p > < a id = "fl_remove" > < / a > < / p >
< h2 id = "fileremove" > < a name = "user-content-fileremove" href = "#fileremove" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.remove()< / h2 >
< h4 id = "description_8" > < a name = "user-content-description_8" href = "#description_8" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > remove file from file system.< / p >
< h4 id = "syntax_8" > < a name = "user-content-syntax_8" href = "#syntax_8" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.remove(filename)< / p >
< h4 id = "parameters_8" > < a name = "user-content-parameters_8" href = "#parameters_8" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > filename: file to remove< / p >
< h4 id = "returns_8" > < a name = "user-content-returns_8" href = "#returns_8" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_8" > < a name = "user-content-example_8" href = "#example_8" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- remove " foo.lua" from file system.
file.remove(" foo.lua" )
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_8" > < a name = "user-content-see-also_8" href = "#see-also_8" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_open" > file.open()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_close" > file.close()< / a > < / p >
< p > < a id = "fl_open" > < / a > < / p >
< h2 id = "fileopen" > < a name = "user-content-fileopen" href = "#fileopen" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.open()< / h2 >
< h4 id = "description_9" > < a name = "user-content-description_9" href = "#description_9" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > open file.< / p >
< h4 id = "syntax_9" > < a name = "user-content-syntax_9" href = "#syntax_9" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.open(filename, mode)< / p >
< h4 id = "parameters_9" > < a name = "user-content-parameters_9" href = "#parameters_9" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > filename: file to be opened, directories are not supported< br / > < br / >
mode:< br / > < br / >
“ r” : read mode (the default)< br / > < br / >
“ w” : write mode< br / > < br / >
“ a” : append mode< br / > < br / >
“ r+” : update mode, all previous data is preserved< br / > < br / >
“ w+” : update mode, all previous data is erased< br / > < br / >
“ a+” : append update mode, previous data is preserved, writing is only allowed at the end of file< / p >
< h4 id = "returns_9" > < a name = "user-content-returns_9" href = "#returns_9" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_9" > < a name = "user-content-example_9" href = "#example_9" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- open 'init.lua', print the first line.
file.open(" init.lua" , " r" )
print(file.readline())
file.close()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_9" > < a name = "user-content-see-also_9" href = "#see-also_9" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_close" > file.close()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_readline" > file.readline()< / a > < / p >
< p > < a id = "fl_close" > < / a > < / p >
< h2 id = "fileclose" > < a name = "user-content-fileclose" href = "#fileclose" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.close()< / h2 >
< h4 id = "description_10" > < a name = "user-content-description_10" href = "#description_10" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > close the file.< / p >
< h4 id = "syntax_10" > < a name = "user-content-syntax_10" href = "#syntax_10" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.close()< / p >
< h4 id = "parameters_10" > < a name = "user-content-parameters_10" href = "#parameters_10" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_10" > < a name = "user-content-returns_10" href = "#returns_10" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_10" > < a name = "user-content-example_10" href = "#example_10" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- open 'init.lua', print the first line.
file.open(" init.lua" , " r" )
print(file.readline())
file.close()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_10" > < a name = "user-content-see-also_10" href = "#see-also_10" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_open" > file.open()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_readline" > file.readline()< / a > < / p >
< p > < a id = "fl_readline" > < / a > < / p >
< h2 id = "filereadline" > < a name = "user-content-filereadline" href = "#filereadline" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.readline()< / h2 >
< h4 id = "description_11" > < a name = "user-content-description_11" href = "#description_11" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > read one line of file which is opened before.< / p >
< h4 id = "syntax_11" > < a name = "user-content-syntax_11" href = "#syntax_11" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.readline()< / p >
< h4 id = "parameters_11" > < a name = "user-content-parameters_11" href = "#parameters_11" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_11" > < a name = "user-content-returns_11" href = "#returns_11" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > file content in string, line by line, include EOL(‘ \n’ )< br / > < br / >
return nil when EOF.< / p >
< h4 id = "example_11" > < a name = "user-content-example_11" href = "#example_11" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- print the first line of 'init.lua'
file.open(" init.lua" , " r" )
print(file.readline())
file.close()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_11" > < a name = "user-content-see-also_11" href = "#see-also_11" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_open" > file.open()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_close" > file.close()< / a > < / p >
< p > < a id = "fl_writeline" > < / a > < / p >
< h2 id = "filewriteline" > < a name = "user-content-filewriteline" href = "#filewriteline" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.writeline()< / h2 >
< h4 id = "description_12" > < a name = "user-content-description_12" href = "#description_12" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > write string to file and add a ‘ \n’ at the end.< / p >
< h4 id = "syntax_12" > < a name = "user-content-syntax_12" href = "#syntax_12" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.writeline(string)< / p >
< h4 id = "parameters_12" > < a name = "user-content-parameters_12" href = "#parameters_12" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > string: content to be write to file< / p >
< h4 id = "returns_12" > < a name = "user-content-returns_12" href = "#returns_12" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > true: write ok.< br / >
nil: there is error< / p >
< h4 id = "example_12" > < a name = "user-content-example_12" href = "#example_12" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_12" > < a name = "user-content-see-also_12" href = "#see-also_12" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_open" > file.open()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_write" > file.write()< / a > < / p >
< p > < a id = "fl_write" > < / a > < / p >
< h2 id = "filewrite" > < a name = "user-content-filewrite" href = "#filewrite" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.write()< / h2 >
< h4 id = "description_13" > < a name = "user-content-description_13" href = "#description_13" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > write string to file.< / p >
< h4 id = "syntax_13" > < a name = "user-content-syntax_13" href = "#syntax_13" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.write(string)< / p >
< h4 id = "parameters_13" > < a name = "user-content-parameters_13" href = "#parameters_13" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > string: content to be write to file.< / p >
< h4 id = "returns_13" > < a name = "user-content-returns_13" href = "#returns_13" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > true: write ok.< br / >
nil: there is error< / p >
< h4 id = "example_13" > < a name = "user-content-example_13" href = "#example_13" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_13" > < a name = "user-content-see-also_13" href = "#see-also_13" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_open" > file.open()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_writeline" > file.writeline()< / a > < / p >
< p > < a id = "fl_flush" > < / a > < / p >
< h2 id = "fileflush" > < a name = "user-content-fileflush" href = "#fileflush" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.flush()< / h2 >
< h4 id = "description_14" > < a name = "user-content-description_14" href = "#description_14" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > flush to file.< / p >
< h4 id = "syntax_14" > < a name = "user-content-syntax_14" href = "#syntax_14" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.flush()< / p >
< h4 id = "parameters_14" > < a name = "user-content-parameters_14" href = "#parameters_14" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_14" > < a name = "user-content-returns_14" href = "#returns_14" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_14" > < a name = "user-content-example_14" href = "#example_14" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_14" > < a name = "user-content-see-also_14" href = "#see-also_14" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_open" > file.open()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_writeline" > file.writeline()< / a > < / p >
< p > < a id = "fl_seek" > < / a > < / p >
< h2 id = "fileseek" > < a name = "user-content-fileseek" href = "#fileseek" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.seek()< / h2 >
< h4 id = "description_15" > < a name = "user-content-description_15" href = "#description_15" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > Sets and gets the file position, measured from the beginning of the file, to the position given by offset plus a base specified by the string whence.< / p >
< h4 id = "syntax_15" > < a name = "user-content-syntax_15" href = "#syntax_15" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.seek(whence, offset)< / p >
< h4 id = "parameters_15" > < a name = "user-content-parameters_15" href = "#parameters_15" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > whence:< br / > < br / >
“ set” : base is position 0 (beginning of the file);< br / > < br / >
“ cur” : base is current position;(default value)< br / > < br / >
“ end” : base is end of file;< br / > < br / >
offset: default 0< / p >
< h4 id = "returns_15" > < a name = "user-content-returns_15" href = "#returns_15" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > success: returns the final file position< br / > < br / >
fail: returns nil< / p >
< h4 id = "example_15" > < a name = "user-content-example_15" href = "#example_15" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_15" > < a name = "user-content-see-also_15" href = "#see-also_15" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_open" > file.open()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#fl_writeline" > file.writeline()< / a > < / p >
< p > < a id = "fl_list" > < / a > < / p >
< h2 id = "filelist" > < a name = "user-content-filelist" href = "#filelist" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > file.list()< / h2 >
< h4 id = "description_16" > < a name = "user-content-description_16" href = "#description_16" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > list all files.< / p >
< h4 id = "syntax_16" > < a name = "user-content-syntax_16" href = "#syntax_16" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > file.list()< / p >
< h4 id = "parameters_16" > < a name = "user-content-parameters_16" href = "#parameters_16" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_16" > < a name = "user-content-returns_16" href = "#returns_16" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > a lua table which contains the {file name: file size} pairs< / p >
< h4 id = "example_16" > < a name = "user-content-example_16" href = "#example_16" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > l = file.list();
for k,v in l do
print(" name:" ..k.." , size:" ..v)
end
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_16" > < a name = "user-content-see-also_16" href = "#see-also_16" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#fl_remove" > file.remove()< / a > < / p >
< h1 id = "wifi-module" > < a name = "user-content-wifi-module" href = "#wifi-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi module< / h1 >
< h2 id = "constant" > < a name = "user-content-constant" href = "#constant" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > CONSTANT< / h2 >
< p > wifi.STATION, wifi.SOFTAP, wifi.STATIONAP< / p >
< p > < a id = "wf_setmode" > < / a > < / p >
< h2 id = "wifisetmodemode" > < a name = "user-content-wifisetmodemode" href = "#wifisetmodemode" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.setmode(mode)< / h2 >
< h4 id = "description_17" > < a name = "user-content-description_17" href = "#description_17" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > setup wifi operation mode.< / p >
< h4 id = "syntax_17" > < a name = "user-content-syntax_17" href = "#syntax_17" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.setmode(mode)< / p >
< h4 id = "parameters_17" > < a name = "user-content-parameters_17" href = "#parameters_17" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > mode: value should be: wifi.STATION, wifi.SOFTAP or wifi.STATIONAP< / p >
< h4 id = "returns_17" > < a name = "user-content-returns_17" href = "#returns_17" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > current mode after setup< / p >
< h4 id = "example_17" > < a name = "user-content-example_17" href = "#example_17" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.setmode(wifi.STATION)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_17" > < a name = "user-content-see-also_17" href = "#see-also_17" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#wf_getmode" > wifi.getmode()< / a > < / p >
< p > < a id = "wf_getmode" > < / a > < / p >
< h2 id = "wifigetmodemode" > < a name = "user-content-wifigetmodemode" href = "#wifigetmodemode" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.getmode(mode)< / h2 >
< h4 id = "description_18" > < a name = "user-content-description_18" href = "#description_18" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get wifi operation mode.< / p >
< h4 id = "syntax_18" > < a name = "user-content-syntax_18" href = "#syntax_18" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.getmode()< / p >
< h4 id = "parameters_18" > < a name = "user-content-parameters_18" href = "#parameters_18" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_18" > < a name = "user-content-returns_18" href = "#returns_18" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > wifi operation mode< / p >
< h4 id = "example_18" > < a name = "user-content-example_18" href = "#example_18" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > print(wifi.getmode())
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_18" > < a name = "user-content-see-also_18" href = "#see-also_18" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#wf_setmode" > wifi.setmode()< / a > < / p >
< p > < a id = "wf_startsmart" > < / a > < / p >
< h2 id = "wifistartsmart" > < a name = "user-content-wifistartsmart" href = "#wifistartsmart" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.startsmart()< / h2 >
< h4 id = "description_19" > < a name = "user-content-description_19" href = "#description_19" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > starts to auto configuration, if success set up ssid and pwd automatically .< / p >
< h4 id = "syntax_19" > < a name = "user-content-syntax_19" href = "#syntax_19" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.startsmart(channel, function succeed_callback())< / p >
< h4 id = "parameters_19" > < a name = "user-content-parameters_19" href = "#parameters_19" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > channel: 1~13, startup channel for searching, if nil, default to 6. 20 seconds for each channel.< br / > < br / >
succeed_callback: callback function called after configuration, which is called when got password and connected to AP.< / p >
< h4 id = "returns_19" > < a name = "user-content-returns_19" href = "#returns_19" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_19" > < a name = "user-content-example_19" href = "#example_19" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.startsmart(6, cb())
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_19" > < a name = "user-content-see-also_19" href = "#see-also_19" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#wf_stopsmart" > wifi.stopsmart()< / a > < / p >
< p > < a id = "wf_stopsmart" > < / a > < / p >
< h2 id = "wifistopsmart" > < a name = "user-content-wifistopsmart" href = "#wifistopsmart" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.stopsmart()< / h2 >
< h4 id = "description_20" > < a name = "user-content-description_20" href = "#description_20" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > stop the configuring process.< / p >
< h4 id = "syntax_20" > < a name = "user-content-syntax_20" href = "#syntax_20" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.stopsmart()< / p >
< h4 id = "parameters_20" > < a name = "user-content-parameters_20" href = "#parameters_20" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_20" > < a name = "user-content-returns_20" href = "#returns_20" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_20" > < a name = "user-content-example_20" href = "#example_20" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.stopsmart()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_20" > < a name = "user-content-see-also_20" href = "#see-also_20" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#wf_startsmart" > wifi.startsmart()< / a > < / p >
< h1 id = "wifista-module" > < a name = "user-content-wifista-module" href = "#wifista-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.sta module< / h1 >
< p > < a id = "ws_config" > < / a > < / p >
< h2 id = "wifistaconfig" > < a name = "user-content-wifistaconfig" href = "#wifistaconfig" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.sta.config()< / h2 >
< h4 id = "description_21" > < a name = "user-content-description_21" href = "#description_21" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > set ssid and password in station mode.< / p >
< h4 id = "syntax_21" > < a name = "user-content-syntax_21" href = "#syntax_21" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.sta.config(ssid, password)< / p >
< h4 id = "parameters_21" > < a name = "user-content-parameters_21" href = "#parameters_21" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > ssid: string which is less than 32 bytes.< br / > < br / >
password: string which is less than 64 bytes.< / p >
< h4 id = "returns_21" > < a name = "user-content-returns_21" href = "#returns_21" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_21" > < a name = "user-content-example_21" href = "#example_21" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.sta.config(" myssid" ," mypassword" )
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_21" > < a name = "user-content-see-also_21" href = "#see-also_21" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ws_connect" > wifi.sta.connect()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#ws_disconnect" > wifi.sta.disconnect()< / a > < / p >
< p > < a id = "ws_connect" > < / a > < / p >
< h2 id = "wifistaconnect" > < a name = "user-content-wifistaconnect" href = "#wifistaconnect" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.sta.connect()< / h2 >
< h4 id = "description_22" > < a name = "user-content-description_22" href = "#description_22" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > connect to AP in station mode.< / p >
< h4 id = "syntax_22" > < a name = "user-content-syntax_22" href = "#syntax_22" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.sta.connect()< / p >
< h4 id = "parameters_22" > < a name = "user-content-parameters_22" href = "#parameters_22" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_22" > < a name = "user-content-returns_22" href = "#returns_22" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_22" > < a name = "user-content-example_22" href = "#example_22" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.sta.connect()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_22" > < a name = "user-content-see-also_22" href = "#see-also_22" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ws_disconnect" > wifi.sta.disconnect()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#ws_config" > wifi.sta.config()< / a > < / p >
< p > < a id = "ws_disconnect" > < / a > < / p >
< h2 id = "wifistadisconnect" > < a name = "user-content-wifistadisconnect" href = "#wifistadisconnect" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.sta.disconnect()< / h2 >
< h4 id = "description_23" > < a name = "user-content-description_23" href = "#description_23" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > disconnect from AP in station mode.< / p >
< h4 id = "syntax_23" > < a name = "user-content-syntax_23" href = "#syntax_23" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.sta.disconnect()< / p >
< h4 id = "parameters_23" > < a name = "user-content-parameters_23" href = "#parameters_23" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_23" > < a name = "user-content-returns_23" href = "#returns_23" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_23" > < a name = "user-content-example_23" href = "#example_23" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.sta.disconnect()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_23" > < a name = "user-content-see-also_23" href = "#see-also_23" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ws_config" > wifi.sta.config()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#ws_connect" > wifi.sta.connect()< / a > < / p >
< p > < a id = "ws_autoconnect" > < / a > < / p >
< h2 id = "wifistaautoconnect" > < a name = "user-content-wifistaautoconnect" href = "#wifistaautoconnect" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.sta.autoconnect()< / h2 >
< h4 id = "description_24" > < a name = "user-content-description_24" href = "#description_24" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > auto connect to AP in station mode.< / p >
< h4 id = "syntax_24" > < a name = "user-content-syntax_24" href = "#syntax_24" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.sta.autoconnect(auto)< / p >
< h4 id = "parameters_24" > < a name = "user-content-parameters_24" href = "#parameters_24" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > auto: 0 to disable auto connecting. 1 to enable auto connecting< / p >
< h4 id = "returns_24" > < a name = "user-content-returns_24" href = "#returns_24" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_24" > < a name = "user-content-example_24" href = "#example_24" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.sta.autoconnect()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_24" > < a name = "user-content-see-also_24" href = "#see-also_24" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ws_config" > wifi.sta.config()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#ws_connect" > wifi.sta.connect()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#ws_disconnect" > wifi.sta.disconnect()< / a > < / p >
< p > < a id = "ws_getip" > < / a > < / p >
< h2 id = "wifistagetip" > < a name = "user-content-wifistagetip" href = "#wifistagetip" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.sta.getip()< / h2 >
< h4 id = "description_25" > < a name = "user-content-description_25" href = "#description_25" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get ip address in station mode.< / p >
< h4 id = "syntax_25" > < a name = "user-content-syntax_25" href = "#syntax_25" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.sta.getip()< / p >
< h4 id = "parameters_25" > < a name = "user-content-parameters_25" href = "#parameters_25" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_25" > < a name = "user-content-returns_25" href = "#returns_25" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > ip address in string, for example:” 192.168.0.111” < / p >
< h4 id = "example_25" > < a name = "user-content-example_25" href = "#example_25" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- print current ip
print(wifi.sta.getip())
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_25" > < a name = "user-content-see-also_25" href = "#see-also_25" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ws_getmac" > wifi.sta.getmac()< / a > < / p >
< p > < a id = "ws_getmac" > < / a > < / p >
< h2 id = "wifistagetmac" > < a name = "user-content-wifistagetmac" href = "#wifistagetmac" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.sta.getmac()< / h2 >
< h4 id = "description_26" > < a name = "user-content-description_26" href = "#description_26" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get mac address in station mode.< / p >
< h4 id = "syntax_26" > < a name = "user-content-syntax_26" href = "#syntax_26" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.sta.getmac()< / p >
< h4 id = "parameters_26" > < a name = "user-content-parameters_26" href = "#parameters_26" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_26" > < a name = "user-content-returns_26" href = "#returns_26" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > mac address in string, for example:” 18-33-44-FE-55-BB” < / p >
< h4 id = "example_26" > < a name = "user-content-example_26" href = "#example_26" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- print current mac address
print(wifi.sta.getmac())
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_26" > < a name = "user-content-see-also_26" href = "#see-also_26" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ws_getip" > wifi.sta.getip()< / a > < / p >
< h1 id = "wifiap-module" > < a name = "user-content-wifiap-module" href = "#wifiap-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.ap module< / h1 >
< p > < a id = "wa_config" > < / a > < / p >
< h2 id = "wifiapconfig" > < a name = "user-content-wifiapconfig" href = "#wifiapconfig" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.ap.config()< / h2 >
< h4 id = "description_27" > < a name = "user-content-description_27" href = "#description_27" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > set ssid and password in ap mode.< / p >
< h4 id = "syntax_27" > < a name = "user-content-syntax_27" href = "#syntax_27" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.ap.config(cfg)< / p >
< h4 id = "parameters_27" > < a name = "user-content-parameters_27" href = "#parameters_27" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > cfg: lua table to setup ap.< / p >
< h4 id = "example_27" > < a name = "user-content-example_27" href = "#example_27" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example:< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > cfg={}
cfg.ssid=" myssid"
cfg.pwd=" mypwd"
wifi.ap.setconfig(cfg)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "returns_27" > < a name = "user-content-returns_27" href = "#returns_27" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_28" > < a name = "user-content-example_28" href = "#example_28" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.ap.config(ssid, 'password')
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_27" > < a name = "user-content-see-also_27" href = "#see-also_27" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "" > < / a > < / p >
< p > < a id = "wa_getip" > < / a > < / p >
< h2 id = "wifiapgetip" > < a name = "user-content-wifiapgetip" href = "#wifiapgetip" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.ap.getip()< / h2 >
< h4 id = "description_28" > < a name = "user-content-description_28" href = "#description_28" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get ip in ap mode.< / p >
< h4 id = "syntax_28" > < a name = "user-content-syntax_28" href = "#syntax_28" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.ap.getip()< / p >
< h4 id = "parameters_28" > < a name = "user-content-parameters_28" href = "#parameters_28" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_28" > < a name = "user-content-returns_28" href = "#returns_28" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > ip address in string, for example:” 192.168.0.111” < / p >
< h4 id = "example_29" > < a name = "user-content-example_29" href = "#example_29" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.ap.getip()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_28" > < a name = "user-content-see-also_28" href = "#see-also_28" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#wa_getmac" > wifi.ap.getmac()< / a > < / p >
< p > < a id = "wa_getmac" > < / a > < / p >
< h2 id = "wifiapgetmac" > < a name = "user-content-wifiapgetmac" href = "#wifiapgetmac" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > wifi.ap.getmac()< / h2 >
< h4 id = "description_29" > < a name = "user-content-description_29" href = "#description_29" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get mac address in ap mode.< / p >
< h4 id = "syntax_29" > < a name = "user-content-syntax_29" href = "#syntax_29" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > wifi.ap.getmac()< / p >
< h4 id = "parameters_29" > < a name = "user-content-parameters_29" href = "#parameters_29" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_29" > < a name = "user-content-returns_29" href = "#returns_29" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > mac address in string, for example:” 1A-33-44-FE-55-BB” < / p >
< h4 id = "example_30" > < a name = "user-content-example_30" href = "#example_30" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > wifi.ap.getmac()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_29" > < a name = "user-content-see-also_29" href = "#see-also_29" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#wa_getip" > wifi.ap.getip()< / a > < / p >
< h1 id = "timer-module" > < a name = "user-content-timer-module" href = "#timer-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > timer module< / h1 >
< p > < a id = "tm_delay" > < / a > < / p >
< h2 id = "tmrdelay" > < a name = "user-content-tmrdelay" href = "#tmrdelay" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > tmr.delay()< / h2 >
< h4 id = "description_30" > < a name = "user-content-description_30" href = "#description_30" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > delay us micro seconds.< / p >
< h4 id = "syntax_30" > < a name = "user-content-syntax_30" href = "#syntax_30" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > tmr.dealy(us)< / p >
< h4 id = "parameters_30" > < a name = "user-content-parameters_30" href = "#parameters_30" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > us: delay time in micro second< / p >
< h4 id = "returns_30" > < a name = "user-content-returns_30" href = "#returns_30" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_31" > < a name = "user-content-example_31" href = "#example_31" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- delay 100us
tmr.delay(100)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_30" > < a name = "user-content-see-also_30" href = "#see-also_30" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#tm_now" > tmr.now()< / a > < / p >
< p > < a id = "tm_now" > < / a > < / p >
< h2 id = "tmrnow" > < a name = "user-content-tmrnow" href = "#tmrnow" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > tmr.now()< / h2 >
< h4 id = "description_31" > < a name = "user-content-description_31" href = "#description_31" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > return the current value of system counter: uint32, us.< / p >
< h4 id = "syntax_31" > < a name = "user-content-syntax_31" href = "#syntax_31" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > tmr.now()< / p >
< h4 id = "parameters_31" > < a name = "user-content-parameters_31" href = "#parameters_31" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_31" > < a name = "user-content-returns_31" href = "#returns_31" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > uint32: value of counter< / p >
< h4 id = "example_32" > < a name = "user-content-example_32" href = "#example_32" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- print current value of counter
print(tmr.now())
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_31" > < a name = "user-content-see-also_31" href = "#see-also_31" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#tm_delay" > tmr.delay()< / a > < / p >
< p > < a id = "tm_alarm" > < / a > < / p >
< h2 id = "tmralarm" > < a name = "user-content-tmralarm" href = "#tmralarm" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > tmr.alarm()< / h2 >
< h4 id = "description_32" > < a name = "user-content-description_32" href = "#description_32" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > alarm time.< / p >
< h4 id = "syntax_32" > < a name = "user-content-syntax_32" href = "#syntax_32" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > tmr.alarm(interval, repeat, function do())< / p >
< h4 id = "parameters_32" > < a name = "user-content-parameters_32" href = "#parameters_32" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > Interval: alarm time, unit: millisecond< br / > < br / >
repeat: 0 - one time alarm, 1 - repeat< br / > < br / >
function do(): callback function for alarm timed out< / p >
< h4 id = "returns_32" > < a name = "user-content-returns_32" href = "#returns_32" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_33" > < a name = "user-content-example_33" href = "#example_33" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- print " hello world" every 1000ms
tmr.alarm(1000, 1, function() print(" hello world" ) end )
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_32" > < a name = "user-content-see-also_32" href = "#see-also_32" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#tm_now" > tmr.now()< / a > < / p >
< p > < a id = "tm_stop" > < / a > < / p >
< h2 id = "tmrstop" > < a name = "user-content-tmrstop" href = "#tmrstop" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > tmr.stop()< / h2 >
< h4 id = "description_33" > < a name = "user-content-description_33" href = "#description_33" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > stop alarm.< br / > < br / >
< strong > -Note:< / strong > only one alarm is allowed, the previous one would be replaced if tmr.alarm() called again before tmr.stop().< / p >
< h4 id = "syntax_33" > < a name = "user-content-syntax_33" href = "#syntax_33" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > tmr.stop()< / p >
< h4 id = "parameters_33" > < a name = "user-content-parameters_33" href = "#parameters_33" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil.< / p >
< h4 id = "returns_33" > < a name = "user-content-returns_33" href = "#returns_33" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_34" > < a name = "user-content-example_34" href = "#example_34" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- print " hello world" every 1000ms
tmr.alarm(1000, 1, function() print(" hello world" ) end )
2014-11-18 05:27:28 +01:00
2014-11-18 12:58:48 +01:00
-- something else
2014-11-17 18:24:49 +01:00
2014-11-18 12:58:48 +01:00
-- stop alarm
tmr.stop()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_33" > < a name = "user-content-see-also_33" href = "#see-also_33" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#tm_now" > tmr.now()< / a > < / p >
< h1 id = "gpio-module" > < a name = "user-content-gpio-module" href = "#gpio-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > GPIO module< / h1 >
< h2 id = "constant_1" > < a name = "user-content-constant_1" href = "#constant_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > CONSTANT< / h2 >
< p > gpio.OUTPUT, gpio.INPUT, gpio.INT, gpio.HIGH, gpio.LOW< / p >
< p > < a id = "io_mode" > < / a > < / p >
< h2 id = "gpiomode" > < a name = "user-content-gpiomode" href = "#gpiomode" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > gpio.mode()< / h2 >
< h4 id = "description_34" > < a name = "user-content-description_34" href = "#description_34" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > initialize pin to GPIO mode, set the pin in/out mode.< / p >
< h4 id = "syntax_34" > < a name = "user-content-syntax_34" href = "#syntax_34" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > gpio.mode(pin, mode)< / p >
< h4 id = "parameters_34" > < a name = "user-content-parameters_34" href = "#parameters_34" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< br / > < br / >
mode: gpio.OUTPUT or gpio.INPUT, or gpio.INT(interrupt mode)< / p >
< h4 id = "returns_34" > < a name = "user-content-returns_34" href = "#returns_34" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_35" > < a name = "user-content-example_35" href = "#example_35" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- set gpio 0 as output.
gpio.mode(0, gpio.OUTPUT)
2014-11-17 18:24:49 +01:00
2014-11-18 12:58:48 +01:00
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_34" > < a name = "user-content-see-also_34" href = "#see-also_34" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#io_read" > gpio.read()< / a > < / p >
< p > < a id = "io_read" > < / a > < / p >
< h2 id = "gpioread" > < a name = "user-content-gpioread" href = "#gpioread" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > gpio.read()< / h2 >
< h4 id = "description_35" > < a name = "user-content-description_35" href = "#description_35" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > read pin value.< / p >
< h4 id = "syntax_35" > < a name = "user-content-syntax_35" href = "#syntax_35" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > gpio.read(pin)< / p >
< h4 id = "parameters_35" > < a name = "user-content-parameters_35" href = "#parameters_35" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< / p >
< h4 id = "returns_35" > < a name = "user-content-returns_35" href = "#returns_35" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > number:0 - low, 1 - high< / p >
< h4 id = "example_36" > < a name = "user-content-example_36" href = "#example_36" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- read value of gpio 0.
gpio.read(0)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_35" > < a name = "user-content-see-also_35" href = "#see-also_35" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#io_mode" > gpio.mode()< / a > < / p >
< p > < a id = "io_write" > < / a > < / p >
< h2 id = "gpiowrite" > < a name = "user-content-gpiowrite" href = "#gpiowrite" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > gpio.write()< / h2 >
< h4 id = "description_36" > < a name = "user-content-description_36" href = "#description_36" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > set pin value.< / p >
< h4 id = "syntax_36" > < a name = "user-content-syntax_36" href = "#syntax_36" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > gpio.write(pin)< / p >
< h4 id = "parameters_36" > < a name = "user-content-parameters_36" href = "#parameters_36" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< br / > < br / >
level: gpio.HIGH or gpio.LOW< / p >
< h4 id = "returns_36" > < a name = "user-content-returns_36" href = "#returns_36" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_37" > < a name = "user-content-example_37" href = "#example_37" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_36" > < a name = "user-content-see-also_36" href = "#see-also_36" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#io_mode" > gpio.mode()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#io_read" > gpio.read()< / a > < / p >
< p > < a id = "io_trig" > < / a > < / p >
< h2 id = "gpiotrig" > < a name = "user-content-gpiotrig" href = "#gpiotrig" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > gpio.trig()< / h2 >
< h4 id = "description_37" > < a name = "user-content-description_37" href = "#description_37" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > set the interrupt callback function for pin.< / p >
< h4 id = "syntax_37" > < a name = "user-content-syntax_37" href = "#syntax_37" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > gpio.trig(pin, type, function(level))< / p >
< h4 id = "parameters_37" > < a name = "user-content-parameters_37" href = "#parameters_37" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< br / > < br / >
type: “ up” , “ down” , “ both” , “ low” , “ high” , which represent rising edge, falling edge, both edge, low level, high level trig mode separately.< br / > < br / >
function(level): callback function when triggered. The gpio level is the param. Use previous callback function if undefined here.< / p >
< h4 id = "returns_37" > < a name = "user-content-returns_37" href = "#returns_37" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_38" > < a name = "user-content-example_38" href = "#example_38" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_37" > < a name = "user-content-see-also_37" href = "#see-also_37" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#io_mode" > gpio.mode()< / a > < br / > < br / >
< strong > -< / strong > < a href = "#io_write" > gpio.write()< / a > < / p >
< h1 id = "pwm-module" > < a name = "user-content-pwm-module" href = "#pwm-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > PWM module< / h1 >
< p > < a id = "pw_setup" > < / a > < / p >
< h2 id = "pwmsetup" > < a name = "user-content-pwmsetup" href = "#pwmsetup" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.setup()< / h2 >
< h4 id = "description_38" > < a name = "user-content-description_38" href = "#description_38" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > set pin to PWM mode. Only 3 pins can be set to PWM mode at the most.< / p >
< h4 id = "syntax_38" > < a name = "user-content-syntax_38" href = "#syntax_38" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.setup(pin, clock, duty)< / p >
< h4 id = "parameters_38" > < a name = "user-content-parameters_38" href = "#parameters_38" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< br / > < br / >
clock: 1~500, pwm frequency< br / > < br / >
duty: 0~100, pwm duty cycle in percentage< / p >
< h4 id = "returns_38" > < a name = "user-content-returns_38" href = "#returns_38" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_39" > < a name = "user-content-example_39" href = "#example_39" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- set pin index 0 as pwm output, frequency is 100Hz, duty cycle is 50-50.
pwm.setup(0, 100, 50)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_38" > < a name = "user-content-see-also_38" href = "#see-also_38" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_start" > pwm.start()< / a > < / p >
< p > < a id = "pw_close" > < / a > < / p >
< h2 id = "pwmclose" > < a name = "user-content-pwmclose" href = "#pwmclose" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.close()< / h2 >
< h4 id = "description_39" > < a name = "user-content-description_39" href = "#description_39" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > quit PWM mode for specified pin.< / p >
< h4 id = "syntax_39" > < a name = "user-content-syntax_39" href = "#syntax_39" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.close(pin)< / p >
< h4 id = "parameters_39" > < a name = "user-content-parameters_39" href = "#parameters_39" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< / p >
< h4 id = "returns_39" > < a name = "user-content-returns_39" href = "#returns_39" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_40" > < a name = "user-content-example_40" href = "#example_40" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > pwm.close(0)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_39" > < a name = "user-content-see-also_39" href = "#see-also_39" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_start" > pwm.start()< / a > < / p >
< p > < a id = "pw_start" > < / a > < / p >
< h2 id = "pwmstart" > < a name = "user-content-pwmstart" href = "#pwmstart" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.start()< / h2 >
< h4 id = "description_40" > < a name = "user-content-description_40" href = "#description_40" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > pwm starts, you can detect the waveform on the gpio.< / p >
< h4 id = "syntax_40" > < a name = "user-content-syntax_40" href = "#syntax_40" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.start(pin)< / p >
< h4 id = "parameters_40" > < a name = "user-content-parameters_40" href = "#parameters_40" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< / p >
< h4 id = "returns_40" > < a name = "user-content-returns_40" href = "#returns_40" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_41" > < a name = "user-content-example_41" href = "#example_41" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > pwm.start(0)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_40" > < a name = "user-content-see-also_40" href = "#see-also_40" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_stop" > pwm.stop()< / a > < / p >
< p > < a id = "pw_stop" > < / a > < / p >
< h2 id = "pwmstop" > < a name = "user-content-pwmstop" href = "#pwmstop" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.stop()< / h2 >
< h4 id = "description_41" > < a name = "user-content-description_41" href = "#description_41" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > pause the output of PWM waveform.< / p >
< h4 id = "syntax_41" > < a name = "user-content-syntax_41" href = "#syntax_41" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.stop(pin)< / p >
< h4 id = "parameters_41" > < a name = "user-content-parameters_41" href = "#parameters_41" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< / p >
< h4 id = "returns_41" > < a name = "user-content-returns_41" href = "#returns_41" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_42" > < a name = "user-content-example_42" href = "#example_42" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > pwm.stop(0)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_41" > < a name = "user-content-see-also_41" href = "#see-also_41" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_start" > pwm.start()< / a > < / p >
< p > < a id = "pw_setclock" > < / a > < / p >
< h2 id = "pwmsetclock" > < a name = "user-content-pwmsetclock" href = "#pwmsetclock" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.setclock()< / h2 >
< h4 id = "description_42" > < a name = "user-content-description_42" href = "#description_42" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > set pwm frequency for pin.< br / > < br / >
< strong > -Note:< / strong > setup pwm frequency will synchronously change others if there are any. Only one PWM frequency can be allowed for the system.< / p >
< h4 id = "syntax_42" > < a name = "user-content-syntax_42" href = "#syntax_42" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.setclock(pin, clock)< / p >
< h4 id = "parameters_42" > < a name = "user-content-parameters_42" href = "#parameters_42" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index.< br / > < br / >
clock: 1~500, pwm frequency.< / p >
< h4 id = "returns_42" > < a name = "user-content-returns_42" href = "#returns_42" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_43" > < a name = "user-content-example_43" href = "#example_43" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > pwm.setclock(0, 100)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_42" > < a name = "user-content-see-also_42" href = "#see-also_42" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_getclock" > pwm.getclock()< / a > < / p >
< p > < a id = "pw_getclock" > < / a > < / p >
< h2 id = "pwmgetclock" > < a name = "user-content-pwmgetclock" href = "#pwmgetclock" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.getclock()< / h2 >
< h4 id = "description_43" > < a name = "user-content-description_43" href = "#description_43" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get pwm frequency of pin.< / p >
< h4 id = "syntax_43" > < a name = "user-content-syntax_43" href = "#syntax_43" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.getclock(pin)< / p >
< h4 id = "parameters_43" > < a name = "user-content-parameters_43" href = "#parameters_43" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index.< / p >
< h4 id = "returns_43" > < a name = "user-content-returns_43" href = "#returns_43" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > number:pwm frequency of pin< / p >
< h4 id = "example_44" > < a name = "user-content-example_44" href = "#example_44" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > print(pwm.getclock(0))
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_43" > < a name = "user-content-see-also_43" href = "#see-also_43" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_setclock" > pwm.setclock()< / a > < / p >
< p > < a id = "pw_setduty" > < / a > < / p >
< h2 id = "pwmsetduty" > < a name = "user-content-pwmsetduty" href = "#pwmsetduty" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.setduty()< / h2 >
< h4 id = "description_44" > < a name = "user-content-description_44" href = "#description_44" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > set duty clycle for pin.< / p >
< h4 id = "syntax_44" > < a name = "user-content-syntax_44" href = "#syntax_44" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.setduty(pin, duty)< / p >
< h4 id = "parameters_44" > < a name = "user-content-parameters_44" href = "#parameters_44" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< br / > < br / >
duty: 0~100, pwm duty cycle in percentage< / p >
< h4 id = "returns_44" > < a name = "user-content-returns_44" href = "#returns_44" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_45" > < a name = "user-content-example_45" href = "#example_45" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > pwm.setduty(0, 50)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_44" > < a name = "user-content-see-also_44" href = "#see-also_44" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_getduty" > pwm.getduty()< / a > < / p >
< p > < a id = "pw_getduty" > < / a > < / p >
< h2 id = "pwmgetduty" > < a name = "user-content-pwmgetduty" href = "#pwmgetduty" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > pwm.getduty()< / h2 >
< h4 id = "description_45" > < a name = "user-content-description_45" href = "#description_45" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get duty clycle for pin.< / p >
< h4 id = "syntax_45" > < a name = "user-content-syntax_45" href = "#syntax_45" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > pwm.getduty(pin)< / p >
< h4 id = "parameters_45" > < a name = "user-content-parameters_45" href = "#parameters_45" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > pin: 0~11, IO index< / p >
< h4 id = "returns_45" > < a name = "user-content-returns_45" href = "#returns_45" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_46" > < a name = "user-content-example_46" href = "#example_46" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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.
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_45" > < a name = "user-content-see-also_45" href = "#see-also_45" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#pw_setduty" > pwm.setduty()< / a > < / p >
< h1 id = "net-module" > < a name = "user-content-net-module" href = "#net-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > net module< / h1 >
< h2 id = "constant_2" > < a name = "user-content-constant_2" href = "#constant_2" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > CONSTANT< / h2 >
< p > net.TCP, net.UDP< / p >
< p > < a id = "nt_createServer" > < / a > < / p >
< h2 id = "netcreateserver" > < a name = "user-content-netcreateserver" href = "#netcreateserver" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > net.createServer()< / h2 >
< h4 id = "description_46" > < a name = "user-content-description_46" href = "#description_46" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > create a server.< / p >
< h4 id = "syntax_46" > < a name = "user-content-syntax_46" href = "#syntax_46" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > net.createServer(type, secure)< / p >
< h4 id = "parameters_46" > < a name = "user-content-parameters_46" href = "#parameters_46" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > type: net.TCP or net.UDP< br / > < br / >
secure: true or false, true for safe link, false for ordinary link< / p >
< h4 id = "returns_46" > < a name = "user-content-returns_46" href = "#returns_46" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > net.server sub module< / p >
< h4 id = "example_47" > < a name = "user-content-example_47" href = "#example_47" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > net.createServer(net.TCP, true)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_46" > < a name = "user-content-see-also_46" href = "#see-also_46" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nt_createConnection" > net.createConnection()< / a > < / p >
< p > < a id = "nt_createConnection" > < / a > < / p >
< h2 id = "netcreateconnection" > < a name = "user-content-netcreateconnection" href = "#netcreateconnection" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > net.createConnection()< / h2 >
< h4 id = "description_47" > < a name = "user-content-description_47" href = "#description_47" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > create a client.< / p >
< h4 id = "syntax_47" > < a name = "user-content-syntax_47" href = "#syntax_47" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > net.createConnection(type, secure)< / p >
< h4 id = "parameters_47" > < a name = "user-content-parameters_47" href = "#parameters_47" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > type: net.TCP or net.UDP< br / > < br / >
secure: true or false, true for safe link, false for ordinary link< / p >
< h4 id = "returns_47" > < a name = "user-content-returns_47" href = "#returns_47" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > net.server sub module< / p >
< h4 id = "example_48" > < a name = "user-content-example_48" href = "#example_48" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > net.createConnection(net.UDP, false)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_47" > < a name = "user-content-see-also_47" href = "#see-also_47" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nt_createServer" > net.createServer()< / a > < / p >
< h1 id = "netserver-module" > < a name = "user-content-netserver-module" href = "#netserver-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > net.server module< / h1 >
< p > < a id = "ns_listen" > < / a > < / p >
< h2 id = "listen" > < a name = "user-content-listen" href = "#listen" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > listen()< / h2 >
< h4 id = "description_48" > < a name = "user-content-description_48" href = "#description_48" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > listen on port from [ip] address.< / p >
< h4 id = "syntax_48" > < a name = "user-content-syntax_48" href = "#syntax_48" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > net.server.listen(port,[ip],function(net.socket))< / p >
< h4 id = "parameters_48" > < a name = "user-content-parameters_48" href = "#parameters_48" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > port: port number< br / > < br / >
ip:ip address string, can be omitted< br / > < br / >
function(net.socket): callback function, pass to Caller function as param if a connection is created successfully< / p >
< h4 id = "returns_48" > < a name = "user-content-returns_48" href = "#returns_48" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_49" > < a name = "user-content-example_49" href = "#example_49" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- 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)
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_48" > < a name = "user-content-see-also_48" href = "#see-also_48" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nt_createServer" > net.createServer()< / a > < / p >
< p > < a id = "ns_close" > < / a > < / p >
< h2 id = "close" > < a name = "user-content-close" href = "#close" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > close()< / h2 >
< h4 id = "description_49" > < a name = "user-content-description_49" href = "#description_49" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > close server.< / p >
< h4 id = "syntax_49" > < a name = "user-content-syntax_49" href = "#syntax_49" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > net.server.close()< / p >
< h4 id = "parameters_49" > < a name = "user-content-parameters_49" href = "#parameters_49" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_49" > < a name = "user-content-returns_49" href = "#returns_49" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_50" > < a name = "user-content-example_50" href = "#example_50" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > -- create a server
sv=net.createServer(net.TCP, false)
-- close server
sv:close()
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_49" > < a name = "user-content-see-also_49" href = "#see-also_49" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nt_createServer" > net.createServer()< / a > < / p >
< h1 id = "netsocket-module" > < a name = "user-content-netsocket-module" href = "#netsocket-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > net.socket module< / h1 >
< p > < a id = "nk_connect" > < / a > < / p >
< h2 id = "connect" > < a name = "user-content-connect" href = "#connect" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > connect()< / h2 >
< h4 id = "description_50" > < a name = "user-content-description_50" href = "#description_50" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > connect to remote.< / p >
< h4 id = "syntax_50" > < a name = "user-content-syntax_50" href = "#syntax_50" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > connect(port, ip)< / p >
< h4 id = "parameters_50" > < a name = "user-content-parameters_50" href = "#parameters_50" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > port: port number< br / > < br / >
ip: ip address in string< / p >
< h4 id = "returns_50" > < a name = "user-content-returns_50" href = "#returns_50" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_50" > < a name = "user-content-see-also_50" href = "#see-also_50" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nk_on" > net.socket:on()< / a > < / p >
< p > < a id = "nk_send" > < / a > < / p >
< h2 id = "send" > < a name = "user-content-send" href = "#send" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > send()< / h2 >
< h4 id = "description_51" > < a name = "user-content-description_51" href = "#description_51" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > send data to remote via connection.< / p >
< h4 id = "syntax_51" > < a name = "user-content-syntax_51" href = "#syntax_51" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > send(string, function(sent))< / p >
< h4 id = "parameters_51" > < a name = "user-content-parameters_51" href = "#parameters_51" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > string: data in string which will be sent to remote< br / > < br / >
function(sent): callback function for sending string< / p >
< h4 id = "returns_51" > < a name = "user-content-returns_51" href = "#returns_51" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_51" > < a name = "user-content-see-also_51" href = "#see-also_51" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nk_on" > net.socket:on()< / a > < / p >
< p > < a id = "nk_on" > < / a > < / p >
< h2 id = "on" > < a name = "user-content-on" href = "#on" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > on()< / h2 >
< h4 id = "description_52" > < a name = "user-content-description_52" href = "#description_52" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > register callback function for event.< / p >
< h4 id = "syntax_52" > < a name = "user-content-syntax_52" href = "#syntax_52" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > on(event, function cb())< / p >
< h4 id = "parameters_52" > < a name = "user-content-parameters_52" href = "#parameters_52" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > event: string, which can be: “ connection” , “ reconnection” , “ disconnection” , “ receive” , “ sent” < br / > < br / >
function cb(net.socket, [string]): callback function. The first param is the socket.< br / > < br / >
If event is” receive” , the second param is received data in string.< / p >
< h4 id = "returns_52" > < a name = "user-content-returns_52" href = "#returns_52" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_51" > < a name = "user-content-example_51" href = "#example_51" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "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" )
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_52" > < a name = "user-content-see-also_52" href = "#see-also_52" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nt_createServer" > net.createServer()< / a > < / p >
< p > < a id = "nk_close" > < / a > < / p >
< h2 id = "close_1" > < a name = "user-content-close_1" href = "#close_1" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > close()< / h2 >
< h4 id = "description_53" > < a name = "user-content-description_53" href = "#description_53" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > close socket.< / p >
< h4 id = "syntax_53" > < a name = "user-content-syntax_53" href = "#syntax_53" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > close()< / p >
< h4 id = "parameters_53" > < a name = "user-content-parameters_53" href = "#parameters_53" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > nil< / p >
< h4 id = "returns_53" > < a name = "user-content-returns_53" href = "#returns_53" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_53" > < a name = "user-content-see-also_53" href = "#see-also_53" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nt_createServer" > net.createServer()< / a > < / p >
< p > < a id = "nk_dns" > < / a > < / p >
< h2 id = "dns" > < a name = "user-content-dns" href = "#dns" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > dns()< / h2 >
< h4 id = "description_54" > < a name = "user-content-description_54" href = "#description_54" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > get domain ip< / p >
< h4 id = "syntax_54" > < a name = "user-content-syntax_54" href = "#syntax_54" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > dns(domain, function(net.socket, ip))< / p >
< h4 id = "parameters_54" > < a name = "user-content-parameters_54" href = "#parameters_54" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > domain: domain name.< br / > < br / >
function (net.socket, ip): callback function. The first param is the socket, the second param is the ip address in string.< / p >
< h4 id = "returns_54" > < a name = "user-content-returns_54" href = "#returns_54" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_54" > < a name = "user-content-see-also_54" href = "#see-also_54" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#nt_createServer" > net.createServer()< / a > < / p >
< h1 id = "i2c-module" > < a name = "user-content-i2c-module" href = "#i2c-module" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > i2c module< / h1 >
< h2 id = "constant_3" > < a name = "user-content-constant_3" href = "#constant_3" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > CONSTANT< / h2 >
< p > i2c.SLOW, i2c.TRANSMITTER, i2c. RECEIVER. FAST( 400k) is not supported for now.< / p >
< p > < a id = "ic_setup" > < / a > < / p >
< h2 id = "i2csetup" > < a name = "user-content-i2csetup" href = "#i2csetup" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > i2c.setup()< / h2 >
< h4 id = "description_55" > < a name = "user-content-description_55" href = "#description_55" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > initialize i2c.< / p >
< h4 id = "syntax_55" > < a name = "user-content-syntax_55" href = "#syntax_55" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > i2c.setup(id, pinSDA, pinSCL, speed)< / p >
< h4 id = "parameters_55" > < a name = "user-content-parameters_55" href = "#parameters_55" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > id = 0< br / > < br / >
pinSDA: 0~11, IO index< br / > < br / >
pinSCL: 0~11, IO index< br / > < br / >
speed: i2c.SLOW< / p >
< h4 id = "returns_55" > < a name = "user-content-returns_55" href = "#returns_55" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_55" > < a name = "user-content-see-also_55" href = "#see-also_55" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ic_read" > i2c.read()< / a > < / p >
< p > < a id = "ic_start" > < / a > < / p >
< h2 id = "i2cstart" > < a name = "user-content-i2cstart" href = "#i2cstart" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > i2c.start()< / h2 >
< h4 id = "description_56" > < a name = "user-content-description_56" href = "#description_56" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > start i2c transporting.< / p >
< h4 id = "syntax_56" > < a name = "user-content-syntax_56" href = "#syntax_56" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > i2c.start(id)< / p >
< h4 id = "parameters_56" > < a name = "user-content-parameters_56" href = "#parameters_56" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > id = 0< / p >
< h4 id = "returns_56" > < a name = "user-content-returns_56" href = "#returns_56" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_56" > < a name = "user-content-see-also_56" href = "#see-also_56" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ic_read" > i2c.read()< / a > < / p >
< p > < a id = "ic_stop" > < / a > < / p >
< h2 id = "i2cstop" > < a name = "user-content-i2cstop" href = "#i2cstop" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > i2c.stop()< / h2 >
< h4 id = "description_57" > < a name = "user-content-description_57" href = "#description_57" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > stop i2c transporting.< / p >
< h4 id = "syntax_57" > < a name = "user-content-syntax_57" href = "#syntax_57" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > i2c.stop(id)< / p >
< h4 id = "parameters_57" > < a name = "user-content-parameters_57" href = "#parameters_57" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > id = 0< / p >
< h4 id = "returns_57" > < a name = "user-content-returns_57" href = "#returns_57" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_57" > < a name = "user-content-see-also_57" href = "#see-also_57" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ic_read" > i2c.read()< / a > < / p >
< p > < a id = "ic_address" > < / a > < / p >
< h2 id = "i2caddress" > < a name = "user-content-i2caddress" href = "#i2caddress" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > i2c.address()< / h2 >
< h4 id = "description_58" > < a name = "user-content-description_58" href = "#description_58" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > setup i2c address and read/write mode.< / p >
< h4 id = "syntax_58" > < a name = "user-content-syntax_58" href = "#syntax_58" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > i2c.address(id, device_addr, direction)< / p >
< h4 id = "parameters_58" > < a name = "user-content-parameters_58" href = "#parameters_58" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > id=0< br / > < br / >
device_addr: device address.< br / > < br / >
direction: i2c.TRANSMITTER for writing mode , i2c. RECEIVER for reading mode< / p >
< h4 id = "returns_58" > < a name = "user-content-returns_58" href = "#returns_58" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "see-also_58" > < a name = "user-content-see-also_58" href = "#see-also_58" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ic_read" > i2c.read()< / a > < / p >
< p > < a id = "ic_write" > < / a > < / p >
< h2 id = "i2cwrite" > < a name = "user-content-i2cwrite" href = "#i2cwrite" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > i2c.write()< / h2 >
< h4 id = "description_59" > < a name = "user-content-description_59" href = "#description_59" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > write data to i2c, data can be multi numbers, string or lua table.< / p >
< h4 id = "syntax_59" > < a name = "user-content-syntax_59" href = "#syntax_59" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > i2c.write(id, data1, data2,… )< / p >
< h4 id = "parameters_59" > < a name = "user-content-parameters_59" href = "#parameters_59" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > id=0< br / > < br / >
data: data can be numbers, string or lua table.< / p >
< h4 id = "returns_59" > < a name = "user-content-returns_59" href = "#returns_59" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > nil< / p >
< h4 id = "example_52" > < a name = "user-content-example_52" href = "#example_52" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > i2c.write(0, " hello" , " world" )
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_59" > < a name = "user-content-see-also_59" href = "#see-also_59" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ic_read" > i2c.read()< / a > < / p >
< p > < a id = "ic_read" > < / a > < / p >
< h2 id = "i2cread" > < a name = "user-content-i2cread" href = "#i2cread" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > i2c.read()< / h2 >
< h4 id = "description_60" > < a name = "user-content-description_60" href = "#description_60" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Description< / h4 >
< p > read data for len bytes.< / p >
< h4 id = "syntax_60" > < a name = "user-content-syntax_60" href = "#syntax_60" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Syntax< / h4 >
< p > i2c.read(id, len)< / p >
< h4 id = "parameters_60" > < a name = "user-content-parameters_60" href = "#parameters_60" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Parameters< / h4 >
< p > id=0< br / > < br / >
len: data length< / p >
< h4 id = "returns_60" > < a name = "user-content-returns_60" href = "#returns_60" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Returns< / h4 >
< p > string:data received.< / p >
< h4 id = "example_53" > < a name = "user-content-example_53" href = "#example_53" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Example< / h4 >
2014-11-18 12:58:48 +01:00
< pre > < code class = "lua" > id=0
sda=1
scl=0
-- 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
-- get content of register 0xAA of device 0x77
reg = read_reg(0x77, 0xAA)
pirnt(string.byte(reg))
< / code > < / pre >
2014-11-17 18:24:49 +01:00
< h4 id = "see-also_60" > < a name = "user-content-see-also_60" href = "#see-also_60" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > See also< / h4 >
< p > < strong > -< / strong > < a href = "#ic_write" > i2c.write()< / a > < / p > < / article > < / body > < / html >