嵌入式划水项目plus

起因:划水失败,只能升级plus了,哭了哭了。在原来的基础上增加了视频播放,蜂鸣器控制,温度时间实时显示,LED花式控制,还有歌单获取的一些功能。。
1.项目
家庭智能影音系统,起了一个高大上的名字。。哈哈哈

2.环境
①.macOS
②.win7 --用来使用串口调试开发板
③.Ubuntu --16.04用来交叉编译
④.开发板FriendlyARM mini2440
3.大致流程图和展示图
框图
show

4.led控制模块部分

1.管道监控代码

#!/bin/sh

type=0
period=1

case $QUERY_STRING in
	*ping*)
		type=0
		;;
	*counter*)
		type=1
		;;
	*stop*)
		type=2
		;;
esac

case $QUERY_STRING in
	*slow*)
		period=0.25
		;;
	*normal*)
		period=0.125
		;;
	*fast*)
		period=0.0625
		;;
esac

/bin/echo $type $period > /tmp/led-control

echo "Content-type: text/html; charset=gb2312"
echo
/bin/cat led-result.template

exit 0

2.led控制程序
此处省略哈哈哈,因为一个神秘原因

5.温度时间实时显示模块

1.定时器加ajax进行实时数据交互

/*
 *创建异步访问对象
 */

function createXHR() 
{
    var xhr;


    try 
    {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) 
    {
        try 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(E) 
        {
            xhr = false;
        }
    }

    if (!xhr && typeof XMLHttpRequest != 'undefined') 
    {
        xhr = new XMLHttpRequest();
    }

    return xhr;
}

/*
 *异步访问提交处理
 */
function sender() 
{
    xhr = createXHR();

    if(xhr)
    {
        xhr.onreadystatechange=callbackFunction;
    

        //test.cgi后面跟个cur_time参数是为了防止Ajax页面缓存
        xhr.open("GET", "cgi-bin/test.cgi?cur_time=" + new Date().getTime());
    
        xhr.send(null);
    }
    else
    {
        //XMLHttpRequest对象创建失败
        alert("浏览器不支持,请更换浏览器!");
    }
}

/*
 *异步回调函数处理
 */
function callbackFunction()
{
    if (xhr.readyState == 4) 
    {
        if (xhr.status == 200) 
        {
            var returnValue = xhr.responseText;

            if(returnValue != null && returnValue.length > 0)
            {
                document.getElementById("current_time").innerHTML = returnValue;
            }
            else
            {
                alert("结果为空!");
            }
        } 
        else 
        {
            // alert("页面出现异常!");
        }
    }
}
setInterval(sender,1000);

2.系统打印时间和温度代码

#include 
#include 
#include 
    
    int main(void)
    {
        time_t current;
        struct tm *timeinfo;

        time(&current);
        timeinfo = localtime(&current);
        srand((unsigned)time(NULL));
        int a = rand() % 3 + 35;
       
        
        //这一句一定要加,否则异步访问会出现页面异常
        printf("Content type: text/html\n\n");
        
        printf("%d度  \n",a);
        printf("%s", asctime(timeinfo));
        return 0;
    }

6.蜂鸣器模块

1.开启蜂鸣器

#include 
#include 
#include 
#include <sys/types.h>
#include <sys/stat.h>
#include 
#include <linux/ioctl.h>

#define PWM_IOCTL_SET_FREQ		1
#define PWM_IOCTL_STOP			0

    int main(void)
    {
        int dev_fd ;
	    int open_ctl = 0;
	    int value = 1;

	dev_fd = open("/dev/pwm",O_RDWR | O_NONBLOCK);
	if ( dev_fd == -1 ) {
		printf("open dev/pwm fail=%d\n",dev_fd);
		return -1;
	}

       
        
        //这一句一定要加,否则异步访问会出现页面异常
        printf("Content type: text/html\n\n");
        
        printf("蜂鸣器已打开\n");
        
        while(1)
	{
		ioctl(dev_fd, 1, 5);
  	}
        return 0;
    }

2.关闭蜂鸣器

#!/bin/sh
#index.cgi
kill -9 $(pgrep -f beep.cgi)
 

echo "Content-Type:text/html;charset=utf-8"
echo 


点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注