AD远程数据采集试验.doc

上传人:时光煮雨 文档编号:14122299 上传时间:2022-02-02 格式:DOC 页数:14 大小:127.54KB
返回 下载 相关 举报
AD远程数据采集试验.doc_第1页
第1页 / 共14页
AD远程数据采集试验.doc_第2页
第2页 / 共14页
AD远程数据采集试验.doc_第3页
第3页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《AD远程数据采集试验.doc》由会员分享,可在线阅读,更多相关《AD远程数据采集试验.doc(14页珍藏版)》请在三一文库上搜索。

1、 . . . . linux嵌入式系统期末作业选题: AD远程数据采集试验学号:姓名:班级:邮箱:成绩: 2011年11月29日目录1、源代码22、程序完成的主要功能83、必要的操作步骤84、执行程序的结果115、本门课程体会与建议121、 源代码index.html文件解析:AD远程采集实验 /第一页网页标题/设置网页背景颜色AD远程采集实验2008-12-11/*提交表单后跳转到192.168.1.133/cgi-bin/run.cgi 页面*/ /*设置按钮并且居中*/adc.html文件解析:var XMLdoc;function loadXML()if(window.ActiveXO

2、bject) /判断浏览器是否支持activeX控件XMLdoc = new ActiveXObject(Microsoft.XMLDOM);/*生成一个xml dom对象*/XMLdoc.async = false; /设置对象属性,是否同步XMLdoc.load(adc.xml);/使oDom对象指向adc.xml中的容getmessage();setTimeout(loadXML(), 1000); /每1000毫秒刷新一次function getmessage()document.getElementById(ch_0).innerHTML = XMLdoc.getElementsBy

3、TagName(ch_0)0.childNodes0.nodeValue; /*获取ch_0的HTML代码*/document.getElementById(ch_1).innerHTML = XMLdoc.getElementsByTagName(ch_1)0.childNodes0.nodeValue; /*获取ch_1的HTML代码*/document.getElementById(ch_2).innerHTML = XMLdoc.getElementsByTagName(ch_2)0.childNodes0.nodeValue; /*获取ch_2的HTML代码*/生成第二个页面AD远程

4、测试实验AD远程测试实验通道0V通道1V通道2VAdc.xml文件代码解析:0.01.03.0Arun.c文件代码解析:/服务器后台程序对AD进行采样的程序#include /调用函数库中的标准输入输出#include /浮点数处理#include #include #include void getdata(char *buff, int adcfd, int ret)/*读取并且转换三个通道中的AD值*/int temp;int i=0, j;for(j=0; j3; j+)/控制三个通道的循环ioctl(adcfd, j, 0);/操作I/O通道read(adcfd, &temp, si

5、zeof(int);temp += 16;temp = temp/31;for(; iret; i+)if(buffi = ) & (buffi+1 = c) & (buffi+2 = h)break;buffi+6 = (temp/10) + 48; /将得到的值做数值转换buffi+8 = (temp%10) + 48;i+;void lock_set(int fd, int type)struct flock lock;lock.l_whence = SEEK_SET;lock.l_start = 0;lock.l_len = 0;lock.l_type = type;while(1)i

6、f(fcntl(fd, F_SETLK, &lock) = 0)return;int main(void)pid_t pc;int adcfd, xmlfd, ret;unsigned char buff150;int i;pc = fork();/*用于打印一些HTML代码,使页面跳转到ADC.HTML,打印完后退出 */if(pc0)/*打印Html文档*/printf(Content-type:text/htmlnn);printf(n);printf();printf();exit(0);elsesetsid();/脱离父进程chdir(/);/改变当前目录umask(0); /重设文

7、件权限掩码for(i=0;i65535;i+) /关闭设备文件描述符close(i);adcfd = open(/dev/adc, O_RDWR);if(adcfd 0)printf(Cannot open adc device!n);return adcfd;while(1)while(1)xmlfd = open(/var/adc.xml, O_RDWR); /打开标志文件if(xmlfd0)continue;elselock_set(xmlfd, F_WRLCK);/*给文件上锁,避免其他进程对该文件进行写操作*/break;ret = read(xmlfd, buff, 150);fo

8、r(i=0; iret; i+)if(buffi = $)/*如果用户按下“停止采集”键,则退出程序*/buffi = A;lseek(xmlfd, 0, SEEK_SET); /移动文件指针write(xmlfd, buff, ret);/写入修改后的值lock_set(xmlfd, F_UNLCK);/给文件上锁,防止被删除close(xmlfd);close(adcfd);return 0;getdata(buff, adcfd, ret);lseek(xmlfd, 0, SEEK_SET);write(xmlfd, buff, ret);lock_set(xmlfd, F_UNLCK)

9、;close(xmlfd);sleep(1);close(xmlfd);close(adcfd);return 0;stop.c文件代码解析:/*这段代码是控制整个程序完毕的代码,当程序检测到“$”时,程序完毕*/#include #include #include #include void lock_set(int fd, int type)struct flock lock;lock.l_whence = SEEK_SET;lock.l_start = 0;lock.l_len = 0;lock.l_type = type;while(1)if(fcntl(fd, F_SETLK, &l

10、ock) = 0)return;int main(void)int fd, ret;char buff150;int i;/*打印HTML页面*/printf(Content-type:text/htmlnn);printf(n);printf(n);printf();/隔1秒钟后刷新while(1)fd = open(./adc.xml, O_RDWR); /打开标志文件if(fd0)continue;elselock_set(fd, F_WRLCK);/*给文件上锁,避免其他进程对该文件进行写操作*/break;ret = read(fd, buff, 150);for(i=0; iret

11、; i+)if(buffi = s) & (buffi+1 = t) & (buffi+2 = o) & (buffi+3 = p)break;buffi+5 = $; /i+5插入一个$lseek(fd, 0, SEEK_SET); write(fd, buff, ret);/*写文件,改变文件容,以便视频采集程序能检测到该变化*/lock_set(fd, F_UNLCK);close(fd); / 关闭设备文件描述符return 0;2、 程序完成的主要功能:这个程序是在点击第一个页面(index.html)上的“查看”按钮后,程序会创建两个线程:一个主线程,用于打印一些HTML代码,使页

12、面跳转到adc.html页面去,打印完HTML信息后该线程就退出;另一个子线程执行真正的AD数据采集,它读取三个通道的AD值,并对读出来的值进行转换,并将读取的结果写入adc.xml文件中,供用户检索。同时,这个线程还会检查adc.xml的标签中的容,如果为$,则说明用户按下了“停止采集”按钮,那么就完毕程序,否则继续执行。3、 必要的操作步骤:一、 解压ar zxvf boa-0.94.13.tar.gzyqliu29up-tech:/app/web$ tar zxvf boa-0.94.13.tar.gz二、 然后进入源代码目录:yqliu29up-tech:/app/web$ cd bo

13、a-0.94.13/src/三、 修改文件compat.h的第120行:yqliu29up-tech:/app/web/boa-0.94.13/src$ vi compat.h四、 修改后,第120行的容如下:#define TIMEZONE_OFFSET(foo) foo-tm_gmtoff五、 即只是去掉了该行的两个#字符。然后修改boa.c:yqliu29up-tech:/app/web/boa-0.94.13/src$ vi boa.c六、 找到该文件的225227行,注释掉这几行,不然运行的时候会出错。源文件的修改就完成了,现在开始编译。首先,运行configure程序对源文件进行配

14、置:yqliu29up-tech:/app/web/boa-0.94.13/src$ ./configure七、 配置完成后,修改Makefile:yqliu29up-tech:/app/web/boa-0.94.13/src$ vi Makefile八、 修改第31行和32行如下:CC = arm-linux-gccCPP = arm-linux-gcc -E九、 修改完成后,保存文件,运行Make进行编译:yqliu29up-tech:/app/web/boa-0.94.13/src$ make十、 编译完成后,会在该目录下生成我们需要的可执行文件boa。然后,编译我们的CGI程序。CGI

15、程序供两个,一个是run.c,另一个是stop.c,分别运行如下命令进行编译:yqliu29up-tech:/app/web$ arm-linux-gcc -o run.cgi run.cyqliu29up-tech:/app/web$ arm-linux-gcc -o stop.cgi stop.c编译完成后,会在目录下生成run.cgi和stop.cgi两个应用程序。Boa运行时需要在/etc/boa目录下有一个boa.conf文件,该文件的全部容如下:Port 80#Listen 192.68.0.5User root Group 0 ErrorLog /var/log/boa/erro

16、r_logAccessLog /dev/nullServerName .your.org.hereDocumentRoot /var/DirectoryIndex index.htmlKeepAliveMax 1000KeepAliveTimeout 10MimeTypes /etc/mime.typesDefaultType text/plainCGIPath /bin:/usr/bin:/usr/local/binAddType application/x- d-cgi cgiScriptAlias /cgi-bin/ /var/cgi-bin/另外,在/etc目录下还需要一个mime.t

17、ypes文件,可以直接从主机上的/etc目录拷贝过来。运行时需要的目录如下:/var/这个是我们的html文件存放的目录/var/cgi-bin这个是CGI程序存放的目录/var/log/boa/error_log这个是boa服务器存放错误日志的地方因此,把我们上面提到的index.html、adc.html和adc.xml三个文件拷贝到开发板的/var/www目录下;把刚才编译得到的run.cgi和stop.cgi拷贝到/var/sgi-bin目录下;还要在/var/log/boa目录下建立一个error_log文件,命令如下:rootup-tech /var/log/boapwd/var/log/boarootup-tech /var/log/boatouch error_log这样,服务器的配置就完成了,把刚才编译得到的boa可执行文件拷贝到/bin目录下,然后执行boa命令,就可以启动boa服务器了:rootup-tech /var/log/boaboa启动后,在PC机的IE浏览器中输入开发板的IP地址,打开页面。4、 执行程序的结果(效果图):图一:图二:5、 本门课程体会与建议:13 / 14

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1