html+js+cgi


<!DOCTYPE HTML>
<html>
<head>
 <title>统计分析</title>
  <script type="text/javascript"src="tongjifenxi.js"></script>

 <script type="text/javascript">
  function altRows(id){
    if(document.getElementsByTagName){  

        var table = document.getElementById(id);  
        var rows = table.getElementsByTagName("tr"); 

        for(i = 0; i < rows.length; i++){          
            if(i % 2 == 0){
                rows[i].className = "evenrowcolor";
            }else{
                rows[i].className = "oddrowcolor";
            }      
        }
    }
}
 window.onload=function(){

     altRows('alternatecolor');


var counts;
counts=0;
arr = new Array("全部波形","三相电压","三相电流","A相电压","B相电压","C相电压","N相电压","A相电流","B相电流","C相电流","N相电流");    
counts=arr.length;
  var i;
  for (i=0;i < counts; i++)
      {
        document.form1.sel.options[i] = new Option(arr[i],i);
      }



}
</script>

<link rel="stylesheet" type="text/css" href="layout.css">

<style type="text/css">
#workingArea {
  position:absolute; 
  margin-left:10px;
  /* top:160px; */
  top:10px;
  bottom:5px; 
  left:0; 
  overflow:auto; 
  background-color:white;
  width:740px;
  border-right:1px solid #000040;
  border-collapse: collapse;

 }
</style>

<style type="text/css">
table.altrowstable {
    font-family: verdana,arial,sans-serif;
    font-size:11px;
    color:#333333;
    border-width: 1px;
    border-color: #a9c6c9;
    border-collapse: collapse;
}
table.altrowstable th {
    border-width: 1px;
    padding: 4px;
    border-style: solid;
    border-color: #a9c6c9;
}
table.altrowstable td {
    border-width: 1px;
    padding: 4px;
    border-style: solid;
    border-color: #a9c6c9;
}
.oddrowcolor{
    background-color:#d4e3e5;
}
.evenrowcolor{
    background-color:#c3dde0;
}
</style>

</head>
<body>
<img src="logo.gif" alt="" style="position:absolute;margin-top:0px;margin-left:0px;">
    <div id="main">
        <div id="title">
            <font id="title_text">&nbsp;EFM9000系列后台管理程序</font>
        </div>
        <div id="head">

            <span class="goto">
                <a href="rtd.html">实时数据</a>
            </span>

            <span class="goto">
                <a href="elec_real.html">电能监测</a>
            </span>

            <span class="goto">
                <a href="Har_data.html">谐波数据</a>
            </span>

            <span class="goto">
                <a href="flicker.html">波动与闪变</a>
            </span>

              <span class="goto">                                 
               <a href="unbalance.html">三相不平衡</a> 
               </span>  

             <span class="goto">                                 
               <a href="vol_wave.html">波形显示</a> 
               </span>  

           <span class="goto" >
                <a href="DIO.html">开入开出</a>
            </span>

           <span class="goto"style="background-color:#33cc33;" >
                <a href="set.html">系统设置</a>
            </span>

            <span class="goto" >
                <a href="historydb.html">分析数据</a>
            </span>

        </div>

        <div style="position:relative;width:930px; height:420px; background-color:#33cc33; left:0px;top:100px; border:5px  #33cc33; "> 
          <div id="head2">
               <span class="goto2">
                  <a href="set.html">测量设置</a>
              </span>
              <span class="goto2">
                  <a href="sysset.html">通信设置</a>
              </span>
               <span class="goto2">
                  <a href="multirate.html">复费率设置</a>
              </span>
              <span class="goto2">
                  <a href="clear_power.html">电度清零</a>
              </span>    

              <span class="goto2">
                  <a href="applyset.html">统计与录波</a>
              </span>

              <span class="goto2">
                  <a href="pqmdb.html">事件记录</a>
              </span>

              <span class="goto2"style="background-color:#33cc33;" >
                  <a href="tongjifenxi.html">统计分析</a>
              </span>          
          </div>           
        </div>

        <div style="position:absolute;clear:both;width:770px;top:135px;height:440px;background:white;left:20px;border-radius:10px;">
            <div id='workingArea'>        
                <table border='2' class="altrowstable" id="alternatecolor">
                 <tr>
                <th colspan='1'> No. </th>
                <th colspan='1'> Type </th>
                <th colspan='1'> Avr </th>
                <th colspan='1'> Max </th>
                <th colspan='1'> Min </th>
                </tr>

                <tr>
                <td style='width:50px;'  align='center'>1</td>
                <td style='width:150px;' align='center'>A相频率</td>
                <td style='width:150px;' id="avr1" align='center'></td>
                <td style='width:150px;' id="max1" align='center'></td>
                <td style='width:150px;' id="min1" align='center'></td>
                </tr>

                <tr>
                <td  align='center'>2</td>
                <td  align='center'>B相频率</td>
                <td  id="avr2" align='center'></td>
                <td  id="max2" align='center'></td>
                <td  id="min2" align='center'></td>
                </tr>

                <tr>
                <td  align='center'>3</td>
                <td  align='center'>C相频率</td>
                <td  id="avr3" align='center'></td>
                <td  id="max3" align='center'></td>
                <td  id="min3" align='center'></td>
                </tr>

                <tr>
                <td  align='center'>4</td>
                <td  align='center'>半波有效值a1</td>
                <td  id="avr4" align='center'></td>
                <td  id="max4" align='center'></td>
                <td  id="min4" align='center'></td>
                </tr>

                <tr>
                <td   align='center'>5</td>
                <td   align='center'>半波有效值a2</td>
                <td   id="avr5" align='center'></td>
                <td   id="max5" align='center'></td>
                <td   id="min5" align='center'></td>
                </tr> 
             <tr>
             <td><form name="form1"></td>
             <td>
                <select name="sel" id="sel"onchange="tjfx_change()"style="position:relative;width:80px;height:20px;left:20px;top:5px;border:0px;background-color:white;color:black;"> 
               <option value="0"selected>— — —</option>
               <option value="1">1日</option>
               <option value="2">2日</option>
               <option value="3">3日</option>
               <option value="4">4日</option>
               <option value="5">5日</option>
               <option value="6">6日</option>
               <option value="7">7日</option> 
               <option value="8">8日</option>
               <option value="9">9日</option>
               <option value="10">10日</option>
               <option value="11">11日</option>
               <option value="12">12日</option>
               <option value="13">13日</option>
               <option value="14">14日</option>
               <option value="15">15日</option>
               <option value="16">16日</option>
               <option value="17">17日</option> 
               <option value="18">18日</option>
               <option value="19">19日</option>
               <option value="20">20日</option>
               <option value="21">21日</option>
               <option value="22">22日</option>
               <option value="23">23日</option>
               <option value="24">24日</option>
               <option value="25">25日</option>
               <option value="26">26日</option>
               <option value="27">27日</option> 
               <option value="28">28日</option>
               <option value="29">29日</option>
               <option value="30">30日</option>
               <option value="31">31日</option>
               <option value="32"></option>
               <option value="33"></option>      
               </select>

             </td>
             </tr>

            </div>
            <div style="position:absolute;clear:both;width:160px;top:10px;height:40px;background:black ;left:800px; border-radius:0px;">

            </div>
        </div>
    </body>
</html>
/***CGI***/
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/in.h>
#include <linux/un.h>
#include <string.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <sys/time.h>
#include "addr.h"
#define db_max 1000
#define port 60001
int socket_fd;
char modbus_buf[256];
float host_to_client(short in,short gene)
{
float out;
float muti;
muti=32768/gene;
out=in/muti;
return out;
}

short client_to_host(float in,short gene)
{short out;
float muti;
muti=32768/gene;
out=in*muti;
return out;
}

int modbus_tcp_transfer(char *buf)
{int nwrite, nreads, ret;
char sendbuf[12];
struct sockaddr_in server_addr;
fd_set readfd;
struct timeval timeout;
sendbuf[0]=0;
sendbuf[1]=0;
sendbuf[2]=0;
sendbuf[3]=0;
sendbuf[4]=0;
sendbuf[5]=6;
sendbuf[6]=buf[0];
sendbuf[7]=buf[1];
sendbuf[8]=buf[2];
sendbuf[9]=buf[3];
sendbuf[10]=buf[4];
sendbuf[11]=buf[5];
if((socket_fd=socket(AF_INET,SOCK_STREAM,0))==-1){
close(socket_fd);
return -1;}
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(port);
server_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
if(connect(socket_fd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
{close(socket_fd);
return -1;}
timeout.tv_sec=1;
timeout.tv_usec=0;
FD_ZERO(&readfd);
FD_SET(socket_fd,&readfd);
if((nwrite=write(socket_fd,sendbuf,12))==-1){
close(socket_fd);
return -1;}
ret=select(socket_fd+1,&readfd,NULL,NULL,&timeout);
switch(ret){
case -1:
close(socket_fd);
return -1;
break;
case 0:
close(socket_fd);
return -1;
break;
default:
if(FD_ISSET(socket_fd,&readfd)){
if((nreads=read(socket_fd,buf,256))==-1){
close(socket_fd);
return -1;}
close(socket_fd);
return 0;}
break;
}
}

void create_modbus(char a1,char a2,char a3,char a4,char a5,char a6)
{modbus_buf[0]=a1;
modbus_buf[1]=a2;
modbus_buf[2]=a3;
modbus_buf[3]=a4;
modbus_buf[4]=a5;
modbus_buf[5]=a6;}

int main(int argc,char *argv[])
{
  int ret=0;
  unsigned char float4char[4];
  int i,k;
  char *data;
  float f_tmp[66];
  int page1,page2,page3;
  char str1[5],str2[5],str3[5];
  data=getenv("QUERY_STRING");
  if(sscanf(data,"page1=%[^&]&page2=%[^&]&page3=%[^&]&", str1,str2,str3)!=3) {
  exit(EXIT_FAILURE);
  }
  page1=atoi(str1);
  page2=atoi(str3);
  page3=atoi(str3);
  create_modbus(1,3,ModbusAddrInfo[page1].BaseAddr>>8,ModbusAddrInfo[page1].BaseAddr&0xff,0,44);
  if((ret=modbus_tcp_transfer(modbus_buf))==-1)
   exit(EXIT_FAILURE);
  k=0;
  for(i=0;i<22;i++)
  {
      float4char[3]=modbus_buf[k+9]; //9
    float4char[2]=modbus_buf[k+10];  //10
    float4char[1]=modbus_buf[k+11];  //11
    float4char[0]=modbus_buf[k+12];  //12
    f_tmp[i]=*((float *)float4char);       //save
    k=k+4;
  }
  create_modbus(1,3,ModbusAddrInfo[page2].BaseAddr>>8,ModbusAddrInfo[page2].BaseAddr&0xff,0,44);
  if((ret=modbus_tcp_transfer(modbus_buf))==-1)
   exit(EXIT_FAILURE);
  k=0;
  for(i=0;i<22;i++)
  {
      float4char[3]=modbus_buf[k+9]; //9
    float4char[2]=modbus_buf[k+10];  //10
    float4char[1]=modbus_buf[k+11];  //11
    float4char[0]=modbus_buf[k+12];  //12
    f_tmp[i+22]=*((float *)float4char);       //save
    k=k+4;
  }
  create_modbus(1,3,ModbusAddrInfo[page3].BaseAddr>>8,ModbusAddrInfo[page3].BaseAddr&0xff,0,44);
  if((ret=modbus_tcp_transfer(modbus_buf))==-1)
   exit(EXIT_FAILURE);
  k=0;
  for(i=0;i<22;i++)
  {
      float4char[3]=modbus_buf[k+9]; //9
    float4char[2]=modbus_buf[k+10];  //10
    float4char[1]=modbus_buf[k+11];  //11
    float4char[0]=modbus_buf[k+12];  //12
    f_tmp[i+44]=*((float *)float4char);       //save
    k=k+4;
  }

  printf("Content-Type:text/html\n\n");
  printf("%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f|%.2f",
      f_tmp[21],f_tmp[0],f_tmp[1],f_tmp[2],f_tmp[3],f_tmp[4],f_tmp[5],f_tmp[6],f_tmp[7],f_tmp[8],f_tmp[9],f_tmp[10],
      f_tmp[11],f_tmp[12],f_tmp[13],f_tmp[14],f_tmp[15],f_tmp[16],f_tmp[17],f_tmp[18],f_tmp[19],f_tmp[20],
      f_tmp[43],f_tmp[22],f_tmp[23],f_tmp[24],f_tmp[25],f_tmp[26],f_tmp[27],f_tmp[28],f_tmp[29],f_tmp[30],
      f_tmp[31],f_tmp[32],f_tmp[33],f_tmp[34],f_tmp[35],f_tmp[36],f_tmp[37],f_tmp[38],f_tmp[39],f_tmp[40],
      f_tmp[41],f_tmp[42],f_tmp[65],f_tmp[44],f_tmp[45],f_tmp[46],f_tmp[47],f_tmp[48],f_tmp[49],f_tmp[50],
      f_tmp[51],f_tmp[52],f_tmp[53],f_tmp[54],f_tmp[55],f_tmp[56],f_tmp[57],f_tmp[58],f_tmp[59],f_tmp[60],
      f_tmp[61],f_tmp[62],f_tmp[63],f_tmp[64]);
  return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值