⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgi_8c-source.html

📁 针对AVR单片机开发的嵌入式操作系统
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00360 00361     fputs_P(thdr, stream);00362 00363     <a class="code" href="group__xg_c_g_i.html#ga7">HtmlInOutPortRow</a>(stream, <span class="charliteral">'B'</span>, inb(PINB), inb(PORTB), inb(DDRB), 0xFF);00364     <a class="code" href="group__xg_c_g_i.html#ga6">HtmlSeparatorRow</a>(stream, 10, 5);00365     <a class="code" href="group__xg_c_g_i.html#ga7">HtmlInOutPortRow</a>(stream, <span class="charliteral">'D'</span>, inb(PIND), inb(PORTD), inb(DDRD), 0xFF);00366     <a class="code" href="group__xg_c_g_i.html#ga6">HtmlSeparatorRow</a>(stream, 10, 5);00367     <a class="code" href="group__xg_c_g_i.html#ga7">HtmlInOutPortRow</a>(stream, <span class="charliteral">'E'</span>, inb(PINE), inb(PORTE), inb(DDRE), 0xDC);00368     <a class="code" href="group__xg_c_g_i.html#ga6">HtmlSeparatorRow</a>(stream, 10, 5);00369 00370     fputs(<span class="stringliteral">"&lt;tr&gt;&lt;th&gt;F&lt;/th&gt;&lt;td&gt;Status&lt;/td&gt;"</span>, stream);00371     <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINF), inb(PINF), 0);00372     fputs(<span class="stringliteral">"&lt;/tr&gt;\r\n"</span>, stream);00373 00374     fputs_P(foot, stream);00375     fflush(stream);00376     <span class="keywordflow">return</span> 0;00377 }00378 00379 <span class="comment"></span>00380 <span class="comment">/*!</span>00381 <span class="comment"> * \brief CGI callback function to display the status of the CPU ports.</span>00382 <span class="comment"> *</span>00383 <span class="comment"> * Creates HTML code to show the status of CPU ports B, D, E and F.</span>00384 <span class="comment"> * The page will be automatically refreshed every 5 seconds.</span>00385 <span class="comment"> *</span>00386 <span class="comment"> * \image html sport.gif</span>00387 <span class="comment"> *</span>00388 <span class="comment"> *</span>00389 <span class="comment"> *</span>00390 <span class="comment"> * This function is called by the HTTP module when a browser requests</span>00391 <span class="comment"> * a CGI function, for which this routine has been registered via</span>00392 <span class="comment"> * NutRegisterCgi().</span>00393 <span class="comment"> *</span>00394 <span class="comment"> * \param stream Stream device of the HTTP connection.</span>00395 <span class="comment"> * \param req    Pointer to the CGI REQUEST structure. Detailed information</span>00396 <span class="comment"> *               is available in the Nut/OS API documentation.</span>00397 <span class="comment"> *</span>00398 <span class="comment"> * \return 0 on success or -1 in case of any failure.</span>00399 <span class="comment"> */</span><a name="l00400"></a><a class="code" href="group__xg_c_g_i.html#ga11">00400</a> <span class="keywordtype">int</span> <a class="code" href="group__xg_c_g_i.html#ga11">CpuPortStatus</a>(FILE * stream, REQUEST * req)00401 {00402     <span class="keyword">static</span> prog_char head[] =   <span class="comment">/* */</span>00403         <span class="stringliteral">"&lt;html&gt;"</span>                <span class="comment">/* */</span>00404         <span class="stringliteral">"&lt;head&gt;"</span>                <span class="comment">/* */</span>00405         <span class="stringliteral">"&lt;meta http-equiv=\"refresh\" content=\"5; URL="</span> <a class="code" href="group__xg_w_p_defs.html#ga9">PORT_STATUS_CGI</a> <span class="stringliteral">"\"&gt;"</span>  <span class="comment">/* */</span>00406         <span class="stringliteral">"&lt;title&gt;Ethernut CPU Port Status&lt;/title&gt;"</span>       <span class="comment">/* */</span>00407         <span class="stringliteral">"&lt;/head&gt;"</span>               <span class="comment">/* */</span>00408         <span class="stringliteral">"&lt;body bgcolor=\"#C7D0D9\"&gt;&lt;a href=\"/\"&gt;"</span>      <span class="comment">/* */</span>00409         <span class="stringliteral">"&lt;img src=\"/enmini.gif\" border=\"0\" width=\"70\" height=\"17\"&gt;"</span>     <span class="comment">/* */</span>00410         <span class="stringliteral">"&lt;/a&gt;&lt;div align=\"center\"&gt;"</span>    <span class="comment">/* */</span>00411         <span class="stringliteral">"&lt;table border=\"1\" cellspacing=\"0\"&gt;\r\n"</span>    <span class="comment">/* */</span>00412         <span class="stringliteral">"&lt;thead&gt;&lt;tr&gt;&lt;th rowspan=\"2\"&gt; PORT &lt;/th&gt;"</span>      <span class="comment">/* */</span>00413         <span class="stringliteral">"&lt;th colspan=\"8\"&gt;Bit&lt;/th&gt;&lt;/tr&gt;"</span>       <span class="comment">/* */</span>00414         <span class="stringliteral">"&lt;tr&gt;&lt;th&gt;7&lt;/th&gt;&lt;th&gt;6&lt;/th&gt;&lt;th&gt;5&lt;/th&gt;&lt;th&gt;4&lt;/th&gt;&lt;th&gt;3&lt;/th&gt;"</span>        <span class="comment">/* */</span>00415         <span class="stringliteral">"&lt;th&gt;2&lt;/th&gt;&lt;th&gt;1&lt;/th&gt;&lt;th&gt;0&lt;/th&gt;&lt;/tr&gt;"</span>   <span class="comment">/* */</span>00416         <span class="stringliteral">"&lt;/thead&gt;&lt;tfoot&gt;\r\n"</span>;00417 00418     NutHttpSendHeaderTop(stream, req, 200, <span class="stringliteral">"Ok"</span>);00419     NutHttpSendHeaderBot(stream, <span class="stringliteral">"text/html"</span>, -1);00420 00421     fputs_P(head, stream);00422 00423     fputs(<span class="stringliteral">"&lt;tr&gt;&lt;th&gt;B&lt;/th&gt;"</span>, stream);00424     <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINB), inb(PORTB), inb(DDRB));00425     fputs(<span class="stringliteral">"&lt;/tr&gt;\r\n"</span>, stream);00426 00427     fputs(<span class="stringliteral">"&lt;tr&gt;&lt;th&gt;D&lt;/th&gt;"</span>, stream);00428     <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PIND), inb(PORTD), inb(DDRD));00429     fputs(<span class="stringliteral">"&lt;/tr&gt;\r\n"</span>, stream);00430 00431     fputs(<span class="stringliteral">"&lt;tr&gt;&lt;th&gt;E&lt;/th&gt;"</span>, stream);00432     <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINE), inb(PORTE), inb(DDRE));00433     fputs(<span class="stringliteral">"&lt;/tr&gt;\r\n"</span>, stream);00434 00435     fputs(<span class="stringliteral">"&lt;tr&gt;&lt;th&gt;F&lt;/th&gt;"</span>, stream);00436     <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, 8, 1, inb(PINF), inb(PINF), 0);00437     fputs(<span class="stringliteral">"&lt;/tr&gt;\r\n"</span>, stream);00438 00439     fputs(<span class="stringliteral">"&lt;/tfoot&gt;&lt;/table&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;\r\n&lt;/html&gt;"</span>, stream);00440     fflush(stream);00441     <span class="keywordflow">return</span> 0;00442 }00443 00444 <span class="comment"></span>00445 <span class="comment">/*!</span>00446 <span class="comment"> * \brief CGI callback function to control a shift register output board.</span>00447 <span class="comment"> *</span>00448 <span class="comment"> * Creates HTML code to show the status of any attached shift register</span>00449 <span class="comment"> * output board plus a HTML form to modify the current relay status</span>00450 <span class="comment"> * via checkboxes.</span>00451 <span class="comment"> *</span>00452 <span class="comment"> * The resulting HTML code is send back to the browser. If the submit</span>00453 <span class="comment"> * button is clicked on this page, this function will be called again</span>00454 <span class="comment"> * to process the checkboxes and display the updated status.</span>00455 <span class="comment"> *</span>00456 <span class="comment"> * \image html relay.gif</span>00457 <span class="comment"> *</span>00458 <span class="comment"> *</span>00459 <span class="comment"> *</span>00460 <span class="comment"> * This function is called by the HTTP module when a browser requests</span>00461 <span class="comment"> * a CGI function, for which this routine has been registered via</span>00462 <span class="comment"> * NutRegisterCgi().</span>00463 <span class="comment"> *</span>00464 <span class="comment"> * \param stream Stream device of the HTTP connection.</span>00465 <span class="comment"> * \param req    Pointer to the CGI REQUEST structure. Detailed information</span>00466 <span class="comment"> *               is available in the Nut/OS API documentation.</span>00467 <span class="comment"> *</span>00468 <span class="comment"> * \return 0 on success or -1 in case of any failure.</span>00469 <span class="comment"> */</span><a name="l00470"></a><a class="code" href="group__xg_c_g_i.html#ga12">00470</a> <span class="keywordtype">int</span> <a class="code" href="group__xg_c_g_i.html#ga12">SpiRelayControl</a>(FILE * stream, REQUEST * req)00471 {00472     u_char i;00473     <span class="keyword">static</span> prog_char head[] = <span class="stringliteral">"&lt;html&gt;"</span>  <span class="comment">/* */</span>00474         <span class="stringliteral">"&lt;head&gt;"</span>                <span class="comment">/* */</span>00475         <span class="stringliteral">"&lt;meta http-equiv=\"expires\" content=\"0\"&gt;"</span>   <span class="comment">/* */</span>00476         <span class="stringliteral">"&lt;title&gt;Ethernut Shift Register Output&lt;/title&gt;"</span> <span class="comment">/* */</span>00477         <span class="stringliteral">"&lt;/head&gt;"</span>               <span class="comment">/* */</span>00478         <span class="stringliteral">"&lt;body bgcolor=\"#C7D0D9\"&gt;&lt;a href=\"/\"&gt;"</span>      <span class="comment">/* */</span>00479         <span class="stringliteral">"&lt;img src=\"/enmini.gif\" border=\"0\" width=\"70\" height=\"17\"&gt;"</span>     <span class="comment">/* */</span>00480         <span class="stringliteral">"&lt;/a&gt;&lt;div align=\"center\"&gt;"</span>;00481     <span class="keyword">static</span> prog_char foot[] = <span class="stringliteral">"&lt;/tfoot&gt;&lt;/table&gt;&lt;br&gt;"</span>    <span class="comment">/* */</span>00482         <span class="stringliteral">" &lt;input type=\"submit\" value=\" Set \"&gt; "</span>     <span class="comment">/* */</span>00483         <span class="stringliteral">" &lt;input type=\"reset\" value=\" Cancel \"&gt; "</span>   <span class="comment">/* */</span>00484         <span class="stringliteral">"&lt;/form&gt;\r\n"</span>;00485 00486     <span class="keywordflow">if</span> (<a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a> == 255)00487         SpiDigitalInit(&amp;<a class="code" href="group__xg_c_g_i.html#ga0">spi_ni</a>, &amp;<a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>);00488 00489     NutHttpSendHeaderTop(stream, req, 200, <span class="stringliteral">"Ok"</span>);00490     NutHttpSendHeaderBot(stream, <span class="stringliteral">"text/html"</span>, -1);00491 00492     fputs_P(head, stream);00493 00494     <span class="keywordflow">if</span> (<a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>) {00495         <span class="keywordflow">if</span> (req-&gt;req_query)00496             <a class="code" href="group__xg_c_g_i.html#ga9">ProcessCgiRelayRequest</a>(req-&gt;req_query);00497 00498         fputs(<span class="stringliteral">"&lt;form action=\""</span> <a class="code" href="group__xg_w_p_defs.html#ga10">RELAY_CONTROL_CGI</a> <span class="stringliteral">"\" enctype=\"text/plain\"&gt;"</span>  <span class="comment">/* */</span>00499               <span class="stringliteral">"&lt;table border=\"1\" cellspacing=\"0\"&gt;\r\n"</span>      <span class="comment">/* */</span>00500               <span class="stringliteral">"&lt;thead&gt;&lt;tr&gt;&lt;th&gt; &lt;/th&gt;&lt;th colspan=\""</span>, stream);00501         fprintf(stream, <span class="stringliteral">"%u"</span>, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>);00502         fputs(<span class="stringliteral">"\"&gt;Relay&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;/td&gt;"</span>, stream);00503         <span class="keywordflow">for</span> (i = 1; i &lt;= <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>; i++)00504             fprintf(stream, <span class="stringliteral">"&lt;th&gt;%u&lt;/th&gt;"</span>, i);00505         fputs(<span class="stringliteral">"&lt;/tr&gt;&lt;/thead&gt;&lt;tfoot&gt;\r\n"</span>, stream);00506 00507         fputs(<span class="stringliteral">"&lt;tr&gt;&lt;td&gt; &lt;/td&gt;"</span>, stream);00508         <span class="keywordflow">if</span> (<a class="code" href="group__xg_c_g_i.html#ga3">relay_known</a>)00509             <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>, 0, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, 0xFFFFFFFF);00510         <span class="keywordflow">else</span>00511             <a class="code" href="group__xg_c_g_i.html#ga4">HtmlLedRow</a>(stream, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>, 0, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, ~<a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, 0xFFFFFFFF);00512         fputs(<span class="stringliteral">"&lt;/tr&gt;\r\n"</span>, stream);00513 00514         fputs(<span class="stringliteral">"&lt;tr&gt;&lt;td&gt;On&lt;/td&gt;"</span>, stream);00515         <a class="code" href="group__xg_c_g_i.html#ga5">HtmlCheckboxRow</a>(stream, <a class="code" href="group__xg_c_g_i.html#ga1">spi_no</a>, 0, <span class="stringliteral">"S"</span>, <a class="code" href="group__xg_c_g_i.html#ga2">relay_status</a>, 0xFFFFFFFF);00516         fputs(<span class="stringliteral">"&lt;/tr&gt;\r\n"</span>, stream);00517 00518         fputs_P(foot, stream);00519     } <span class="keywordflow">else</span>00520         fputs(<span class="stringliteral">"No Outputs"</span>, stream);00521     fputs(<span class="stringliteral">"&lt;/div&gt;&lt;/body&gt;\r\n&lt;/html&gt;"</span>, stream);00522     fflush(stream);00523     <span class="keywordflow">return</span> 0;00524 }00525 <span class="comment"></span>00526 <span class="comment">/*!</span>00527 <span class="comment"> * \brief CGI callback function to query a shift register input board.</span>00528 <span class="comment"> *</span>00529 <span class="comment"> * This function is called by the HTTP helper routines when a browser requests</span>00530 <span class="comment"> * a CGI function, for which this routine has been registered via</span>00531 <span class="comment"> * NutRegisterCgi().</span>00532 <span class="comment"> *</span>00533 <span class="comment"> * \image html opto.gif</span>00534 <span class="comment"> *</span>00535 <span class="comment"> *</span>00536 <span class="comment"> *</span>00537 <span class="comment"> * Creates HTML code to show the status of the optically isolated inputs</span>00538 <span class="comment"> * of an attached input shift register board. The page will be automatically </span>00539 <span class="comment"> * refreshed every 5 seconds.</span>00540 <span class="comment"> *</span>00541 <span class="comment"> * \param stream Stream device of the HTTP connection.</span>00542 <span class="comment"> * \param req    Pointer to the CGI REQUEST structure. Detailed information</span>00543 <span class="comment"> *               is available in the Nut/OS API documentation.</span>00544 <span class="comment"> *</span>00545 <span class="comment"> * \return 0 on success or -1 in case of any failure.</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -