zoukankan      html  css  js  c++  java
  • CGIC库之get与post请求二 多路温度

    原文链接:https://blog.csdn.net/cumtzdlxm/article/details/78155470

    html.h

    #include<stdio.h>
     
    void html_begin(void);
    void html_body(void);
    void html_body_noimg(void);
    void html_end(void);
    void html_refresh(char* second, char* url);
     
     
    /*---------html begin tag-------------*/
    void html_begin(void)
    {
            printf("Content-type:text/html
    
    ");
            printf("<html>");
            printf("<title>TC90000多路温度采集控制系统</title>");
            //printf("<link href="/noneline.css" rel="stylesheet" type="text/css">");
            printf("<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>");
     
     
     
    }
     
    /*---------html refresh tag-------------*/
    void html_refresh(char* second, char* url)
    {
            printf("<META HTTP-EQUIV="REFRESH" CONTENT="%s;URL=%s">", 
            second, url);
     
    }
     
    /*---------html body tag-------------*/
    void html_body(void)
    {
            printf("<body background="/bg_black.gif">");
            printf("<div align="center">");
    }
     
    /*---------html body tag-------------*/
    void html_body_noimg(void)
    {
            printf("<body><div align="center">");
    }
     
    /*---------html end tag-------------*/
    void html_end(void)
    {
            printf("</div></body></html>");
    }

    show.c

    #include <unistd.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>
    #include <sys/shm.h>
    #include "html.h"
     
    #define DEF_MAX_CHANNEL 4       //采集的路数
    //消息队列接收时索引值
    #define TEMP_SMG_INDEX_BASE 10
    #define WEB_SMG_INDEX 2
    #define WEB_UPDATE_SMG_INDEX 3
    #define UPDATE_TIME_SMG_INDEX 4
     
     
    //系统总体数据结构
    struct st_sys{
        int temp_max[DEF_MAX_CHANNEL];      //设置每路温度报警最大值
        float temp_data[DEF_MAX_CHANNEL];   //每路温度
        char status[DEF_MAX_CHANNEL];       //每路状态
        char update_time;                   //网页刷新秒数
    };
     
     
    struct st_sys g_dev[1];
     
    //消息队列数据结构
    struct st_msg_req{
        long int index;
        char req;       
    };
     
    int msg_send(int msgid)
    {
        struct st_msg_req cmd;
        cmd.index = WEB_UPDATE_SMG_INDEX;
        cmd.req = 0x1;
        if(msgsnd(msgid,(void*)&cmd,1,0)==-1)
            return -1;
        return 0;
    }
     
     
    int get_msgid(void)
    {
        int id = -1;
        id = msgget((key_t)1234,0666|IPC_CREAT);
        if(id == -1){
            printf("msgget error
    ");
            exit(1);
        }
        return id;
    }
     
    void* set_web_shm(void)
    {
        int shmid;
        void* shmaddr=(void*)0;
     
        if((shmid=shmget((key_t)2345,sizeof(struct st_sys),0666|IPC_CREAT))<0){
            return NULL;
        }else{  
            if((shmaddr=shmat(shmid,(void*)0,0))==(char *)-1){
                return NULL;
            }
        }
     
        printf("set shm ok...
    ");
        return shmaddr;
    }
     
     
    char area_name[4][16]={"锅炉区","螺栓区...","电缆区...","汽电区..."};
     
    //在网页上显示四路温度数据 
    void show_temp_table()
    {
        int i;
        printf("<table width="1024" border="0"><tr>");
        for(i=0;i<4;i++){
            printf("<td><table width="250" border="0"><tr><td colspan="2" bgcolor=#CCFFFF>");
            printf("<div align=center>第%d路</div></td></tr>",i+1);
            printf("<tr><td width="82" bgcolor=#33CCFF>监控区域:</td>");
            printf("<td width="158" bgcolor=#33CCFF>%s</td></tr>",area_name[i]);                
            printf("<tr><td bgcolor=#33CCFF>连接状态:</td>");
            if(g_dev->status[i]==1)
                printf("<td bgcolor=#33CCFF>%s</td></tr>","连通");
            else
                printf("<td bgcolor=#33CCFF>%s</td></tr>","断开");                
     
            printf("<tr><td bgcolor="#33CCFF">当前温度:</td>");
            printf("<td bgcolor="#33CCFF">%4.2f</td></tr>",g_dev->temp_data[i]);   
            printf("<tr><td bgcolor="#33CCFF">报警上限:</td>");
            printf("<td bgcolor="#33CCFF">%d</td></tr></table></td>",g_dev->temp_max[i]);
        }       
        printf("</tr></table>");
    }
     
    void show_sys_area(void)
    {
        printf("<TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD COLSPAN=5>");
        printf("<IMG SRC="temp_1.jpg" WIDTH=1024 HEIGHT=94></TD><TD>");
        printf("<IMG SRC="space.jpg" WIDTH=1 HEIGHT=94></TD></TR><TR>");
     
        if(g_dev->temp_data[0] <= (float)g_dev->temp_max[0])
            printf("<TD COLSPAN=2><IMG SRC="temp_21.jpg" WIDTH=400 HEIGHT=108></TD>");
        else
            printf("<TD COLSPAN=2><IMG SRC="temp_22.jpg" WIDTH=400 HEIGHT=108></TD>");
     
        if(g_dev->temp_data[1] <= (float)g_dev->temp_max[1])    
            printf("<TD COLSPAN=2 ROWSPAN=2><IMG SRC="temp_31.jpg" WIDTH=381 HEIGHT=133></TD>");
        else
            printf("<TD COLSPAN=2 ROWSPAN=2><IMG SRC="temp_32.jpg" WIDTH=381 HEIGHT=133></TD>");  
     
        printf("<TD ROWSPAN=4><IMG SRC="temp_4.jpg" WIDTH=243 HEIGHT=409></TD>");
        printf("<TD><IMG SRC="space.jpg" WIDTH=1 HEIGHT=108></TD></TR><TR>");
        
        if(g_dev->status[2]==1){
            if(g_dev->temp_data[2] <= (float)g_dev->temp_max[2])
                printf("<TD ROWSPAN=3><IMG SRC="temp_51.jpg" WIDTH=193 HEIGHT=301></TD>");
            else
                printf("<TD ROWSPAN=3><IMG SRC="temp_52.jpg" WIDTH=193 HEIGHT=301></TD>");
        }else{
            printf("<TD ROWSPAN=3><IMG SRC="temp_5.jpg" WIDTH=193 HEIGHT=301></TD>");
        }
     
        if(g_dev->status[3]==1){    
            if(g_dev->temp_data[3] <= (float)g_dev->temp_max[3])
                printf("<TD ROWSPAN=3><IMG SRC="temp_61.jpg" WIDTH=207 HEIGHT=301></TD>");
            else
                printf("<TD ROWSPAN=3><IMG SRC="temp_62.jpg" WIDTH=207 HEIGHT=301></TD>");
        }else{
            printf("<TD ROWSPAN=3><IMG SRC="temp_6.jpg" WIDTH=207 HEIGHT=301></TD>");     
        }   
     
        printf("<TD><IMG SRC="space.jpg" WIDTH=1 HEIGHT=25></TD></TR><TR>");
        printf("<TD COLSPAN=2 ROWSPAN=2> <IMG SRC="temp_7.jpg" WIDTH=381 HEIGHT=276></TD>");
        printf("<TD><IMG SRC="space.jpg" WIDTH=1 HEIGHT=276></TD></TR></TABLE>");
        
    }
     
     
    int main(int argc, char *argv[])
    {
        int i,msgid;
        char update_time[4];
        struct st_sys* shm_dev;
     
        if((msgid=get_msgid()) < 0){
            printf("msg_web id error
    ");  
        }       
     
        if(msg_send(msgid)==0){
            if((shm_dev=(struct st_sys*)set_web_shm())==NULL){
                printf("shm_web error
    ");  
                exit(1);
            }else{
                for(i=0;i<DEF_MAX_CHANNEL;i++){
     
                    g_dev->temp_max[i] = shm_dev->temp_max[i];
                    g_dev->temp_data[i] = shm_dev->temp_data[i];
                    g_dev->status[i] = shm_dev->status[i] ;
                }
     
                g_dev->update_time = shm_dev->update_time;
            }
        }
     
        html_begin();
        bzero(update_time,4);
        sprintf(update_time,"%d",g_dev->update_time);
        //html_refresh(update_time,"show.cgi");  //页面秒自动刷新
        html_refresh("20","show.cgi");  //页面秒自动刷新
     
     
     
        html_body_noimg();
     
     
        show_sys_area();//显示系统监控区域图片
        show_temp_table();//显示多路数据表格
     
        printf("<form method="get" action="show.cgi">");
        printf("<input type="submit" value="刷新状态"></form>");
     
        html_end(); 
        return 0;
    }

    新建文件夹   gcc show.c -o show.cgi 

    浏览器输入 http://ip地址/show.cgi的路径

  • 相关阅读:
    Appium环境搭建+cordova
    Appium简单测试用例
    appium常用方法整理
    JAVA+Maven+TestNG搭建接口测试框架及实例
    stm32填坑之旅一
    再度分(tu)析(cao)Egret这个年轻人
    Egret的若干局限
    egret随笔-egret浅入浅出
    一步一步实现AS3拖放组件
    react-native学习笔记——ViewStack组件
  • 原文地址:https://www.cnblogs.com/wddx5/p/13232466.html
Copyright © 2011-2022 走看看