多路温度采集控制系统(8)网页界面
来源:互联网 发布:什么叫访客网络 编辑:程序博客网 时间:2024/05/16 05:33
嵌入式项目实践–多路温度采集控制系统(8)网页界面
嵌入式开发培训(阶段1)基础应用开发视频地址
多路温度采集系统视频地址
网页界面
网页界面html源码
<TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD COLSPAN=5><IMG SRC="/images/temp_1.jpg" WIDTH=1024 HEIGHT=92></TD><TD><IMG SRC="/images/spacer.gif" WIDTH=1 HEIGHT=92></TD></TR><TR><TD COLSPAN=2><IMG SRC="/images/temp_21.jpg" WIDTH=400 HEIGHT=108></TD>...</TABLE>
网页界面CGI程序源码
printf("<TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD COLSPAN=5>"); printf("<IMG SRC=\"/images/temp_1.jpg\" WIDTH=1024 HEIGHT=92></TD><TD>"); printf("<IMG SRC=\"/images/spacer.gif\" WIDTH=1 HEIGHT=92></TD></TR><TR>"); if(g_dev->temp_data[0] <= (float)g_dev->temp_max[0]) printf("<TD COLSPAN=2><IMG SRC=\"/images/temp_21.jpg\" WIDTH=400 HEIGHT=108></TD>"); else printf("<TD COLSPAN=2><IMG SRC=\"/images/temp_22.jpg\" WIDTH=400 HEIGHT=108></TD>");...
网页同主控通信
首先通过消息队列发送更新数据请求,主控程序更新共享内存,然后读取共享内存数据在网页上显示。
if(msg_send(msgid)==0){ if((shm_dev=(struct st_sys*)set_web_shm())==NULL){ printf("shm_web error\n"); 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函数头文件
#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\r\n\r\n"); printf("<html>"); printf("<title>TC90000多路温度采集控制系统</title>"); printf("<link href=\"/noneline.css\" rel=\"stylesheet\" type=\"text/css\">");}/*---------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>");}
网页CGI程序
#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\n"); 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...\n"); 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=\"/images/temp_1.jpg\" WIDTH=1024 HEIGHT=92></TD><TD>"); printf("<IMG SRC=\"/images/spacer.gif\" WIDTH=1 HEIGHT=92></TD></TR><TR>"); if(g_dev->temp_data[0] <= (float)g_dev->temp_max[0]) printf("<TD COLSPAN=2><IMG SRC=\"/images/temp_21.jpg\" WIDTH=400 HEIGHT=108></TD>"); else printf("<TD COLSPAN=2><IMG SRC=\"/images/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=\"/images/temp_31.jpg\" WIDTH=381 HEIGHT=133></TD>"); else printf("<TD COLSPAN=2 ROWSPAN=2><IMG SRC=\"/images/temp_32.jpg\" WIDTH=381 HEIGHT=133></TD>"); printf("<TD ROWSPAN=4><IMG SRC=\"/images/temp_4.jpg\" WIDTH=243 HEIGHT=409></TD>"); printf("<TD><IMG SRC=\"/images/spacer.gif\" 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=\"/images/temp_51.jpg\" WIDTH=193 HEIGHT=301></TD>"); else printf("<TD ROWSPAN=3><IMG SRC=\"/images/temp_52.jpg\" WIDTH=193 HEIGHT=301></TD>"); }else{ printf("<TD ROWSPAN=3><IMG SRC=\"/images/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=\"/images/temp_61.jpg\" WIDTH=207 HEIGHT=301></TD>"); else printf("<TD ROWSPAN=3><IMG SRC=\"/images/temp_62.jpg\" WIDTH=207 HEIGHT=301></TD>"); }else{ printf("<TD ROWSPAN=3><IMG SRC=\"/images/temp_6.jpg\" WIDTH=207 HEIGHT=301></TD>"); } printf("<TD><IMG SRC=\"/images/spacer.gif\" WIDTH=1 HEIGHT=25></TD></TR><TR>"); printf("<TD COLSPAN=2><IMG SRC=\"/images/temp_7.jpg\" WIDTH=381 HEIGHT=141></TD>"); printf("<TD><IMG SRC=\"/images/spacer.gif\" WIDTH=1 HEIGHT=141></TD></TR><TR>"); printf("<TD><IMG SRC=\"/images/temp_8.jpg\" WIDTH=178 HEIGHT=135></TD><TD>"); printf("<IMG SRC=\"/images/temp_9.jpg\" WIDTH=203 HEIGHT=135></TD><TD>"); printf("<IMG SRC=\"/images/spacer.gif\" WIDTH=1 HEIGHT=135></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\n"); } if(msg_send(msgid)==0){ if((shm_dev=(struct st_sys*)set_web_shm())==NULL){ printf("shm_web error\n"); 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,"/cgi-bin/show.cgi"); //页面秒自动刷新 html_body_noimg(); show_sys_area();//显示系统监控区域图片 show_temp_table();//显示多路数据表格 printf("<form method=\"get\" action=\"/cgi-bin/show.cgi\">"); printf("<input type=\"submit\" value=\"刷新状态\"></form>"); html_end(); return 0;}
0 0
- 多路温度采集控制系统(8)网页界面
- 多路温度采集控制系统(4)菜单界面
- 多路温度采集控制系统(6)串口采集
- 多路温度采集控制系统(7)网络采集
- 多路温度采集控制系统(1)项目介绍
- 多路温度采集控制系统(2)需求分析
- 多路温度采集控制系统(3)配置文件
- 多路温度采集控制系统(5)进程通信
- 基于QT4的智能温度采集控制系统
- 基于DS18B20和LabVIEW的多路温度采集系统
- 多路温度采集的实现(原理图+程序源代码)
- 温度采集
- VHDL温度控制系统设计
- 实时温度控制系统 2007.12
- 单片机温度控制系统DS18B20
- 温度采集报警器(条件结构)
- 电阻炉温度微机控制系统-20151128
- 基于51单片机多路温度采集系统 采用读取ds18b20的序列号进行测量
- 关于android-Ultra-Pull-To-Refresh的下拉刷新和上拉加载更多
- html滚动字基础知识及字体设置
- 菜鸟教程 Ubuntu 11.0下搭建Web服务器
- 探讨自己永远是人一生的事情
- 特权级3(调用门)
- 多路温度采集控制系统(8)网页界面
- ubuntu 中文改英文
- 控制台屏蔽键盘消息事件
- 关于android6.0权限的问题
- NodeJS安装web框架模块 express报错处理
- 算法学习 - 快速排序相关
- 你是溪边杨柳
- C语言基础学习基本数据类型-浮点型
- WINDOSW编程学习笔记 - 关机