<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//ZH">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=gb2312">
 <META NAME="GENERATOR" CONTENT="lfparser_2.27">
 <META NAME="LFCATEGORY" CONTENT="Hardware">
 <TITLE>lf236, Hardware: A LCD control panel for your Linux server</TITLE>
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-familiy:monospace,Courier }
 p.cl { color:#EE9500 }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; 
           border-style:none; border-width:medium; border-color:#FFD700; 
           padding:0.5cm;  text-align:center }
 p.code { width:80%; alignment:center; background-color:#aedbe8; 
          border-style:none; border-width:medium; border-color:#aedbe8; 
          padding:0.1cm;  text-align:left }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; 
          border-width:medium; border-color:#AAAAAA; padding:0.5cm ; 
          margin-top:0.1cm; margin-right:1cm; margin-left:1cm; 
          text-align:center }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- this is used by a number of tools:
 =LF=AUTHOR: Guido Socher
 =LF=CAT___: Hardware
 =LF=TITLE_: A LCD control panel for your Linux server
 =LF=NUMBER: 236
 =LF=ANAME_: article236.shtml
 -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar -->
 <!-- top navegation bar -->
 <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif"
           alt="[LinuxFocus-icon]" width="319" height="45" align="left" 
           border="0"></TD>

           <TD class="top">
             <TABLE summary="topbar_1_links" width="100%">
               <TR align="right">
                 <TD class="top"><A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="2">首页</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="2">站点地图</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="2">索引</FONT></A> &nbsp;|&nbsp; <A class="nodec" href="../Search/index.shtml"><FONT color=
                 "#DDDDDD" size="2">搜索</FONT></A> </TD>
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color=
           "#FFFFFF">新闻</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Archives/"><FONT color=
           "#FFFFFF">过往期刊</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Links/index.shtml"><FONT color=
           "#FFFFFF">链接</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">关于LF</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.5 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">This document is available in: <A href="../../English/May2002/article236.shtml">English</a> &nbsp;<A href="../../Castellano/May2002/article236.shtml">Castellano</a> &nbsp;<A href="../../ChineseGB/May2002/article236.shtml">ChineseGB</a> &nbsp;<A href="../../Deutsch/May2002/article236.shtml">Deutsch</a> &nbsp;<A href="../../Francais/May2002/article236.shtml">Francais</a> &nbsp;<A href="../../Italiano/May2002/article236.shtml">Italiano</a> &nbsp;<A href="../../Nederlands/May2002/article236.shtml">Nederlands</a> &nbsp;<A href="../../Russian/May2002/article236.shtml">Russian</a> &nbsp;<A href="../../Turkce/May2002/article236.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0  WIDTH="190" >
<TR>
<TD>

<IMG height=164
  alt="[Photo of the Author]" src="../../common/images/Guido-S.gif" width=173>
<BR>by  Guido Socher <a href="http://linuxfocus.org/~guido/"><font size="1">(homepage)</font></a>
<BR><BR>
<I>关于作者:</I><BR>
<P>Guido喜欢Linux,不仅因为通过Linux可以发掘系统的潜力,而且还在于每个人都能参与其中。</P>
<!-- TRANSLATED TO gb -->
<!-- TRANSLATED TO STOP -->
<BR><i>目录</i>:
<UL>
  <LI><A HREF="#236lfindex0">简介</A></LI>
  <LI><A HREF="#236lfindex1">你需要啥?</A></LI>
  <LI><A HREF="#236lfindex2">电路原理图和pcb图</A></LI>
  <LI><A HREF="#236lfindex3">电路原理</A></LI>
  <LI><A HREF="#236lfindex4">如何制作印制板</A></LI>
  <LI><A HREF="#236lfindex5">单片机端软件</A></LI>
  <LI><A HREF="#236lfindex6">检验LCD控制面板</A></LI>
  <LI><A HREF="#236lfindex7">连接看门狗</A></LI>
  <LI><A HREF="#236lfindex8">怎么使用看门狗?</A></LI>
  <LI><A HREF="#236lfindex9">服务器上的脚本</A></LI>
  <LI><A HREF="#236lfindex10">Log files</A></LI>
  <LI><A HREF="#236lfindex11">控制面板的操作</A></LI>
  <LI><A HREF="#236lfindex12">结论</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=236&amp;lang=en">对这篇文章发表评论</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<br>&nbsp;
<H2>A LCD control panel for your Linux server</H2>
 <IMG height=108 alt=[Illustration] hspace=10
  src="../../common/images/article236/pic03_finalpanel_th.jpg" width=129>
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>摘要</i>:
<P>

  在这个设计里,我们将设计一个控制面板。它主要由东芝公司的型号HD44780
  的LCD显示和ATMEL公司的AT90S4433单片机(一种8位RISC的单片机)组成。二
  种器件都价钱便宜,很容易得到。控制面板包括一个监控计算机的看门狗和两
  个按键。通过按键和LCD显示,可以设置ip地址,ip掩码,网关,关机,读一
  些统计数据,或者你想得到的任何东西。因为它们其中大多数的逻辑都可以使
  用perl实现,很容易更改。

  <BR><BR>在这个设计里,你至少需要部分的安装linux avr开发环境。关于如何建立这个环境,在
  <A href="http://main.linuxfocus.org/English/March2002/article231.shtml">
  Programming the AVR Microcontroller with GCC</A>中有描述。

  
<br><br><!-- HR divider --><table width="300" align="center" border="0">
<tr>
  <td bgcolor="#8282e0"><IMG src="../../common/images/transpix.gif" width="1" height="2" alt=""></td>
</tr>
</table>
<!-- BODY OF THE ARTICLE -->


  <A NAME="236lfindex0">&nbsp;</A>
<H2>简介</H2>
这个装置的硬件基本功能已经在前面的文章中实现:
  <UL>
     <LI><A
     href="http://main.linuxfocus.org/English/July2000/article165.shtml">Using
     Serial Line LCD displays under Linux</A>(在Linux环境下使用串口的LCD的显示)
     <LI><A
     href="http://main.linuxfocus.org/English/January2001/article186.shtml">A
     serial line computer shutdown button and LED</A>(一个使用串口的电脑关机按键和LED)
    </LI>
  </UL>
  在我们的设计中,我们会走的更远。它增加了按键以便和用户交互,还包括一个监控
  服务器的硬件的看门狗。在硬件设计中,还预留了一个模拟输入端。在这里我们没有
  使用它,但是你可以链接一个比如象温度传感器之类的东西。

  <BR><BR>这个设计需要一点电子爱好者的技巧。整个的花费不是很多,不到40欧元的样子。

  <BR><BR>这个设计的意义在于在没有键盘和显示器的情况下,你能设置服务器。Linux是一
  个运行可靠的服务器的操作系统,很容易进行远程控制。问题在于你第一次把Linux连接到
  网络时,你必须设置它的ip地址,ip掩码和网关。这个Lcd控制面板会帮你做这些事情的。
  如果你在服务器旁边,你还可以通过它把服务器关机。

  <A NAME="236lfindex1">&nbsp;</A>
<H2>你需要啥?</H2>

  下面是建立这个系统所需物品的清单:
  <P class=code>1 个 Atmel At90S4433 单片机<BR>
  1 个28脚 7.25 mm IC 插座<BR>
  1 个 16脚 IC 插座<BR>
  1 个 MAX232<BR>
  1 个 小的 5V 继电器<BR>
  1 个4MHz 晶振<BR>
  2 个 LED (绿色和红色个一)<BR>
  1 个 BC547 NPN 三极管<BR>
  1 个BC557 PNP 三极管<BR>
  4 个1uF 电容 (普通或电解)<BR>
  2 个 27pF陶瓷电容<BR>
  1 个 10nF电容<BR>
  1 个100nF电容<BR>
  3 个 电阻 4k7<BR>
  2 个 电阻 2k2<BR>
  1 个 电阻 10K<BR>
  1 个 电阻 3k3<BR>
  2 个 电阻 100 欧姆<BR>
  3 个 电阻 470 欧姆<BR>
  3 个 电阻 1k<BR>
  1 个 电阻 220 Ohm<BR>
  1 个 4K7 变阻器(越小越好)<BR>
  1 个 4.3V稳压管<BR>
  2 个 小的触摸按键<BR>
  1 个 小封装的标准的二极管 (比如 1N4148,或者其他便宜的二极管)<BR>
  1 个 2 行 ×20 字符的带有 HD44780 兼容接口的 LCD 液晶模块
  <BR><BR>
  我所见过的HD44780兼容的LCD一般是14线或16线接口。如果你是用3线或4线接口,
  你需要改动软件的相应部分。</P>
  另外你还应该有为电源和RS232口准备的连线和插头。
  如果你有2个显示线,你可以把它安装在薄铝片上,然后固定到服务器的5.25英寸的槽上。

  <A NAME="236lfindex2">&nbsp;</A>
<H2>电路原理图和pcb图</H2>

  我使用angle软件在linux系统下制作的原理图和pcb图。它是一个很棒的软件,但是如果你不
  会使用的话,需要花一点时间学习它。 你可以在 <A href="http://www.cadsoftusa.com/">
  cadsoftusa.com</A>得到一个免费的版本。
  <BR>
    <BR>原理图(点击可以得到一个大的图片):
  <BR><A href="http://main.linuxfocus.org/common/images/article236/linuxlcdpanel_schematic_big.gif">
  <IMG height=267 alt=[Schematic] src="../../common/images/article236/linuxlcdpanel_board_small.gif" width=448></A>

  <BR><BR>印制板 (点击可以得到一个大的图片):
  <BR><A href="http://main.linuxfocus.org/common/images/article236/linuxlcdpanel_board.gif">
  <IMG height=395 alt=[board] src="../../common/images/article236/pic02_boardready_th.jpg"
  width=442></A>
  <BR><BR><BR>
  如果你想打印的话,这里由白色背景的PCB图:
  <A href="http://main.linuxfocus.org/common/images/article236/linuxlcdpanel_board_white.gif">
  白色背景的印制板</A>
  <SMALL>(注意:这个不是你做PCB板所需的文件)</SMALL>
  <BR><BR>
  angle文件如下:(gzip压缩,注意有些浏阅器在下载的同时已经解压的情况)
  <UL>
    <LI><A
    href="http://main.linuxfocus.org/common/src/article236/linuxlcdpanel.brd.gz">linuxlcdpanel.brd.gz</A>

    <LI><A
    href="http://main.linuxfocus.org/common/src/article236/linuxlcdpanel.sch.gz">linuxlcdpanel.sch.gz</A>
    </LI></UL>

  <A NAME="236lfindex3">&nbsp;</A>
<H2>电路原理</H2>

  我简单介绍一下电路的工作原理。单片机AT90S4433有3个部分:PB,PC和PD。PC可以用做数字或模拟输入。所有的端口
  线可以用作数字输入或数字输出。输入还是输出由软件通过设置DDR(数据方向寄存器)来实现。我们把除23脚以外的端
  口线都用作数字输入或输出。Max232是一个电平转换器。RS232接口使用正负10V,Max232把它转换为0~5V。在1脚
 (RESET脚)你可以看到持续低电平(brownout)电路。这个电路在电源不足的情况下保持RESET脚低电平有效,防止单
  片机误操作。这会在启动和关机的几毫秒内会发生。这会保证系统会正常启动。
  <BR><BR>
  你也许会奇怪和继电器线圈端并行的二极管,从极性上看来好像它不会起任何作用。不,它很重要!当你接通继电器线
  圈的时候,它会产生和接通方向相反的高压。没有二极管把高压导通,高压会损坏电路的。这个二极管很重要,虽然它很普通。

  <A NAME="236lfindex4">&nbsp;</A>
<H2>如何制作印制板</H2>

  为了蚀刻电路印制板,你首先需要在一个透明的绝缘体上打印这个postscript
  文件<A href="http://main.linuxfocus.org/common/src/article236/linuxlcdpanel.ps.gz"> (linuxlcdpanel.ps.gz)</A>。
  在商店里你可以找到一种叫做Sinolit的半透明塑料。它是由Regulus生产,一般用来打印后处理(offset printing)。
  另一种替代品是60g的纸加透明的喷头(比如来自Kontakt Chemie的 pausklar 21)。

  <BR>我已经把postscript格式的文件转换成了 <A
  href="http://main.linuxfocus.org/common/src/article236/linuxlcdpanel1.pdf">PDF</A>
  这是为了你没有postscript 打印系统的话。不过质量很差劲。
  <BR>
  <BR>铜箔板曝光的时间依赖于光源。在正常的室内条件下,应该在1到2分钟之间。当然你可以在室外不过你一定
  避免直接的日光曝晒(光太强了)。你可以在真正使用的板子之前用一块小角反复试验一下,来得到最佳的曝光
  时间。

  <TABLE width=200 align=right border=1>
     <TBODY>
       <TR>
         <TD><A
           href="../../common/images/article236/pic01_beforeetching.jpg"><IMG
           height=160 alt="[before etching]"
           src="../../common/images/article236/pic01_beforeetching_th.jpg"
           width=188></A>
        </TD>
      </TR>
      <TR>
        <TD>曝光的在蚀刻之前的板子</TD>
      </TR>
    </TBODY>
  </TABLE>

  <BR><BR>
  接下来板子需要在NaOH液体里浸泡几分钟。然后仔细检查一下,通过780黑色油漆标记校准一下。我总是
  把孔做的大一点,因为我发现ANGEL软件的焊盘的孔对于制作敷铜电路板来说太小了。

  <TABLE width=160 align=left border=1>
    <TBODY>
      <TR>
        <TD><A
        href="../../common/images/article236/pic02_boardready.jpg"><IMG
        height=132 alt="[after etching]"
        src="../../common/images/article236/pic02_boardready_th.jpg" width=149></A>
        </TD>
      </TR>
     <TR>
      <TD>未打孔的已经制作完成的板子</TD>
     </TR>
    </TBODY>
  </TABLE>

  <BR><BR>
  注意:不知怎地,继电器厂家在封装上没有达成一致。我使用5v的由Matsushita生产的继电器。
  你的继电器也许和我的不一样因此你需要把你的电路板改动一下。
  <BR><BR>
  如果你想得到很好的结果,你可以使用氯化铁(FeCl3)。氯化铁在室温条件下,蚀刻的成功率
  是很高的,它很好掌握很适于室内操作。你如果把你的板子直立放置在一个高的容器里,你会得到最
  好的效果。铜离子比铁离子重,如果你把氯化铁倒入一个小平底桶里面,铜离子会聚集到桶底,你的板
  子就放在那儿。
  <BR><BR>
  在板子好了之后,你使用 松节油把板子清洗。它当你焊接的时候,会蒸发掉,这保护铜箔。

  <A NAME="236lfindex5">&nbsp;</A>
<H2>单片机端软件</H2>

  单片机端软件组织成以下几个文件:
  <UL>
  <LI><A href="http://main.linuxfocus.org/common/src/article236/c/">lcd.c,
  lcd.h, lcd_hw.h</A>:
  这是在avr上lcd显示的库文件。它以Peter Fleury (http://jump.tofleury/)的工作为基础。
  这个版本做了一些改动使它更灵活。你可以把LCD的引脚连接到单片机的任一脚,你只要在
  lcd_hw.h中做相应的定义。

  <LI><A href="http://main.linuxfocus.org/common/src/article236/c/">avr-util.c,
  avr-util.h</A>:
  各种延时的函数。

  <LI><A href="http://main.linuxfocus.org/common/src/article236/c/">uart.c,
  uart.h</A>: 这是RS232的接口库函数。它使用了硬件中断。每次单片机接受到一个字节,
  它就会执行SIGNAL(SIG_UART_RECV),接受的字节会拷贝到一个字符串缓存区。Lcd命令用
  一个换行符表示一个命令的结束。如果发现一个换行符,uart_rx_linecomplete就会设置成1,
  表示一个命令传输完毕。每次命令传输完毕后,服务器不是立即发下一命令,而是等待一段
  时间,单片机会返回命令成功(OK),或命令失败(ERR)等状态。(服务器端)PERL根据返回
  状态发送下一条命令。

  <LI><A href="http://main.linuxfocus.org/common/src/article236/c/">analog.c,
  analog.h</A>: 模拟到数字的转换函数。它也使用了中断。一个数模转换启动后,程序等待
  SIG_ADC中断处理程序读出ADC寄存器的值。

  <LI><A
  href="http://main.linuxfocus.org/common/src/article236/c/">hardwarewd.c,
  hardwarewd.h</A>:这是看门狗函数。我们使用内部分频(除以1024)的时钟刻度,计时器
  使用16位寄存器当溢出时变成8位的变量。按4M的晶振计算,大约每次溢出花费16秒。PERL
  程序为了表现计算机正常运行就必须周期的发送ascii命令给单片机,把控制溢出的变量设
  置成近可能大的值。否则,就表明计算机当机了,这个值越来越小,当它变成0,它就通过
  继电器重新硬件启动计算机。

  <LI><A
  href="http://main.linuxfocus.org/common/src/article236/c/">linuxlcdpanel.c</A>:
  这是主程序。它不断的检查串口命令和按键的发生。
  </LI>
  </UL>

  如果你想详细的了解软件,我推荐你读一下单片机的说明文档(datasheet)。在文章的
  附录部分你可以看到它,或者直接到<A
  href="http://www.atmel.com"> http://www.atmel.com/</A> 查找。

  <BR>如果你只是想使用它,你可以从(<A
  href="http://main.linuxfocus.org/common/src/article236/">download page</A>)
  下载linuxlcdpanel-0.7.tar.gz,然后解压到一个目录,输入如下命令:

  <P class=code>
  make<BR>make
  load<BR>
  </P>
  或者直接使用已经编译的软件在命令行上执行它。很容易的。

  你可以在这个网页的第一篇文章里看到AVR如何编程
  <A
  href="http://main.linuxfocus.org/English/March2002/article231.shtml">Programming
  the AVR Microcontroller with GCC</A>.

  <A NAME="236lfindex6">&nbsp;</A>
<H2>检验LCD控制面板</H2>

  LCD控制面板使用计算机的内部的5V电源。但是LCD控制面板第一次联机时,不能使用
  计算机电源。因为你会在焊接和安装的过程中会犯一些小错误。因为计算机的电源功
  率强劲,你要是真犯了在联机时你会看到电路和计算机黑烟腾起。第一步是使用外部
  电源测试它的电气的稳定性,然后下载软件到EPROM中。之后你会在LCD上看到"linux
  .org"图标。在下来,连接串口:

  <P class=code>
  MAX232 pin 14 to CTS (DB-9 pin 8)<BR>
  MAX232 pin 7 to RXD (DB-9 pin 2)<BR>
  MAX232 pin 13 to TXD (DB-9 pin 3)<BR>
  你也要把 DTR,DSR 和 CD连接到相应的 (DB-9 pin 4, 6 and 1)。
  </P>这可以参见原理图。

  <BR><BR><A
  href="http://main.linuxfocus.org/common/images/article236/test_with_cat.gif"><IMG
  height=194 alt="[talking to the LCD panel over the serial line]" hspace=5
  src="../../common/images/article236/test_with_cat.gif" width=235 align=right></A>

  在使用串口之前必须初始化它。linuxlcdpanel-0.7.tar.gz的归档目录有一个ttydevinit,
  做的就是这件事。如果你的控制面板连接到串口2。你需要键入以下命令:

  <P class=code>./ttydevinit /dev/ttyS1</P>

  这样你的串口驱动初始化为9600bps,你可以同你的控制面板"对话"了。打开2个XTERM的
  窗口,在其中一个键入"cat /dev/ttyS1",另一个"cat >/dev/ttyS1"。现在你可以键入
  命令比如,l=11 (打开 LED 1)或者 l=10 (关闭LED 1)。你在一个XTERM窗口中看到返回
  的状态信息"OK"。<BR>所有的命令在 <A
  href="http://main.linuxfocus.org/common/src/article236/c/">README.commands</A>
  中有解释。

  <BR><BR>在源代码的目录中,有一个文件名为ttytest.pl的PEAL程序,它只是每隔一段
  时间就打开和关闭LED1。它只是一个演示如何控制LCD控制面板的例子程序。你可以以
  它为基础编写你自己的程序。看一下它的源程序,它学要一些PEAL的基础知识,不过它
  很短。

  <A NAME="236lfindex7">&nbsp;</A>
<H2>连接看门狗</H2>


  看门狗缺省设置是关闭的。你可以使用命令w=1激活它或使用命令s=x(x=0,1,2,。。,
  255)设置溢出时间。比如s=10表示计数器溢出的时间是16×10秒。服务器端程序需要周期
  的设置s以免看门狗溢出重启服务器。我知道Linux服务器很少当机的。但是如果当机而且
  附近没有人按RESER键,或者没有知道它在那里,因为它已经2年没有问题,这时看门狗的
  作用就会发挥了。

  <BR><BR>看门狗的重启只动作一次。这避免了在启动中系统检查文件系统时被再次重启的
  错误。启动后你的服务器端的程序应该激活它。

  <BR><BR>在连线上,你需要把连接重启(RESET)按键的2根连线旁边再并2根连线,另一
  端接到控制面板的看门狗驱动的继电器端。

  <A NAME="236lfindex8">&nbsp;</A>
<H2>怎么使用看门狗?</H2>


  看门狗保证系统能够执行程序,不能保证一个服务器或数据库在运行或做出响应。如果你
  想检查这类事情你应该运行crontab entry或类似的程序。你很肯定crontab一般不会出问
  题,看门狗则假定软件会正常运行。

  <BR><BR>你可以设计一个脚本,每隔15分钟下载自己服务器的一个页面。不过你要小心,
  如果你的服务器访问量很大,很可能你的请求会的不到应答。这样你要估计一下,比如
  最后的10次请求没有得到应答,你就重启机器或者标准重启(重启核心)(区别于"硬件重启")。


  <BR><BR>除此之外的应用就是监视磁盘使用空间。
  下面的shell命令在你的硬盘使用达到80%的时候会返回某些数据:

  <P class=code>df | egrep ' (8.%|9.%|100%) ' </P>
  这个也可以和crontab entry联合起来使用。

  <A NAME="236lfindex9">&nbsp;</A>
<H2>服务器上的脚本</H2>

  实现LCD控制面板的逻辑由PEAL实现,它的文件名是llp.pl。拷贝这个程序到/usr/sbin/。
  下一步拷贝ttydevinit到/usr/bin,拷贝ifconfig_llp.txt(在源代码归档目录的etc目录下)
  到/etc中,编辑ifconfig_llp.txt把地址改成你需要的:

  <P class=code>
  NETMASK=255.255.255.0<BR>
  IPADDR=10.0.0.4<BR>
  GATEWAY=10.0.0.2</P>

  把/etc/rc.d/init.d/network做备份,拷贝源代码归档目录下的etc/network到
  /etc/rc.d/init.d/network。这个脚本和目录名称只在RedHat和Mandrake中有效。
  etc/network_all_distributions是一个更基本的脚本,可以工作在任何的发布
  的版本中。但是你必须指出init-rc在你的linux发布版本中的位置。这一点在
  各个发布版本有些许的差异。

  <BR><BR>编辑/etc/rc.d/init.d/network文件把下面一行改成
  <P class=code>/usr/sbin/llp.pl /dev/ttyS1&amp;</P>如果你没有使用串口2的话。

  <BR><BR>现在你可以运行
  <P class=code>/etc/rc.d/init.d/network start</P>

  观察一下LCD的反应。注意:它保存后会发挥作用而且会改变网络设置,但这些变化
  只有在下次重启中发挥作用。你可以改回从前的设置或者编辑/etc/ifconfig_llp.txt
  撤销你的改变。



  <A NAME="236lfindex10">&nbsp;</A>
<H2>Log files</H2>

  在llp.pl脚本中,写了一个LOG文件到/var/log/llp.log。这个LOG文件生长的很慢。
  基本上不用使用翻转(rotate)的方法。如果你要使用的话,你自己可以编写相应
  的程序。后翻转(post rotate)这里也没有涉及到。翻转文件的配置文件如下的样子:

  <P class=code>
  /var/log/llp.log {<BR>nocompress<BR>monthly<BR>}<BR></P>

  手动关机,改变网络地址(ip,网管,掩码),还有硬件看门狗的触发重启动
  这些动作都会被LOG文件登记下来。当然,当系统当机的时候,你肯定不能登记
  看门狗的触发动作不过你可以在下次启动时把它登记下来。

  <A NAME="236lfindex11">&nbsp;</A>
<H2>控制面板的操作</H2>


  这里有一些LCD操作的截屏,不是全部的,你可以自己来试试。

  <BR><BR>主屏幕。显示一些名字(这里是"LINUXFOCUS"),时间,负载。这会周期的更新的。

  <BR><IMG height=137 alt=[main]
  src="../../common/images/article236/display_inaction1.jpg" width=395>
  <BR><BR>IP设置菜单<BR>
  <IMG height=127 alt="[IP configuration menu]"
  src="../../common/images/article236/display_inaction2.jpg" width=395> <BR>
  <BR>IP地址正在修改的例子<BR>
  <IMG height=124
  alt="[change IP]" src="../../common/images/article236/display_inaction3.jpg" width=395>

  <BR><BR>如何改变网关地址(缺省的路由)<BR>
  <IMG height=128
  alt=[GW] src="../../common/images/article236/display_inaction5.jpg" width=395>

  <A NAME="236lfindex12">&nbsp;</A>
<H2>结论</H2>

  <IMG height=275 alt="[the final panel]"
  src="../../common/images/article236/linuxlcdpanelfinal.jpg" width=386 align=right>
  设计LCD控制面板需要一点电子爱好者的技术,但是电路是简单的。我们的LCD控制面板
  是我所见过的功能最强大的并且很通用和廉价。
  焊接愉快 :-)
  <BR clear=all>

<H2参考</H2>
<UL>
  <LI>uisp AVR 编程器软件: <A
  href="http://www.amelek.gda.pl/avr/">www.amelek.gda.pl/avr/</A>

  <LI>本文的源代码  <A
  href="http://main.linuxfocus.org/common/src/article236/linuxlcdpanel-0.7.tar.gz">linuxlcdpanel-0.7.tar.gz</A>
  ,包括电路原理图, Eagle 文件,截屏。

  <LI>所有本文提到的软件 <A
  href="http://main.linuxfocus.org/common/src/article236/">mentioned in this
  article</A>

  <LI>MAX232用户手册 <A
  href="http://main.linuxfocus.org/common/src/article236/MAX220-MAX249.pdf">MAX220-MAX249.pdf
  448K</A>

  <LI> ST232用户手册, MAX232廉价的替代品<A
  href="http://main.linuxfocus.org/common/src/article236/st232.pdf">st232.pdf
  100K</A>

  <LI>AT90S4433用户手册 <A
  href="http://main.linuxfocus.org/common/src/article231/avr4433.pdf">avr4433.pdf
  2356K</A>
  <LI>atmel 公司网站: <A href="http://www.atmel.com/">www.atmel.com/</A>
  <LI>Linux环境下的angle软件 <A href="http://www.cadsoftusa.com/">cadsoftusa.com</A>
  </LI></UL><!-- vim: set sw=2 ts=2 et tw=80: -->

<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>对这篇文章发表评论</h2>
每篇文章都有各自的反馈页面。在这个页面里,您可以提交评论,也可以查看其他读者的评论:
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=236&amp;lang=en"><b>&nbsp;反馈页面&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%">
<TR><TD ALIGN=CENTER BGCOLOR="#9999AA" WIDTH="50%">
<A HREF="../../common/lfteam.html">主页由LinuxFocus编辑组维护</A>
<BR><FONT COLOR="#FFFFFF">&copy; Guido Socher, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
<BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=gb&amp;article=article236.shtml" target="_TOP">点击这里向LinuxFocus报告错误或提出意见</A><BR></TD>
<TD BGCOLOR="#9999AA">
<!-- TRANSLATION INFO -->
<font size=2>翻译信息:</font>
<TABLE>
  <tr><td><font size="2">en --&gt; -- : Guido Socher (<a href="http://linuxfocus.org/~guido/"><font size="1">homepage</font></a>)</font></td></tr>
  <tr><td><font size="2">en --&gt; zh: Zhangcz &lt;zczxyz(at)sina.com&gt;</font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2002-03-22, generated by lfparser version 2.27</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>