嵌入式Linux---cgi实现远程控制led1

作业要求

1、移植Webserver(Web服务器)到开发板。源代码可以到相关网站下载。(编写测试程序,例:通过cgi实现远程控制(模拟控制,如控制led1灯)。)

要求:1)测试程序源代码。

      2)操作演示。

一、Boa Web服务器移植

参考博客:

http://t.csdnimg.cn/LdcFl

http://t.csdnimg.cn/suGIS

1.1解压boa-0.94.13.tar.gz

1.2 进入到boa-0.94.13目录,进入到src目录

设置启动服务器时寻找boa.conf配置文件的路径

修改Makefile

1.3生成Makefile

遇到的问题可参考博客:

http://t.csdnimg.cn/LdcFl

http://t.csdnimg.cn/suGIS

1.4执行make -j4生成boa可执行文件

1.5创建BOA服务器目录

1.6将可执行文件boa拷贝到/home/yao/boa/bin目录下

boa.conf拷贝到~/boa/目录下

1.7修改配置文件boa.conf

$vim boa.conf +48
48 User 0
49 Group 0

修改日志路径

修改DocumentRoot的目录

修改MimeTypes

修改ScriptAlias

1.8拷贝mime文件

创建log文件

1.9启动boa服务器

二、在/home/yao/boa/www/cgi-bin目录下放ctl_led可执行文件

/**Ctl_led.c**/

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <sys/ioctl.h>

#define LED_DEVICE "/dev/leds0"

int main() {
    // 设置响应头部  双换行代表响应头结束
    printf("Content-type:text/html;charset=utf-8\n\n");

    // 获取CGI的URL参数
    char *query_string = getenv("QUERY_STRING");

    // 解析URL参数
    int led_no;
    int on;
    sscanf(query_string, "led_no=%d&on=%d", &led_no, &on);

    // 打开LED设备文件
    int fd = open(LED_DEVICE, O_RDWR);
    if (fd < 0) {
        perror("open device leds");
        exit(1);
    }

    // 控制LED的亮灭状态
    if (led_no == 1) {
        ioctl(fd, on, 1);
    }

    // 关闭设备句柄
    close(fd);

    // 输出HTML页面
    printf("<html>\n");
    printf("<head><title>Control LED</title></head>\n");
    printf("<body>\n");
    printf("<h1>Control LED</h1>\n");
    printf("<p>LED %d is turned %s</p >\n", led_no, on ? "on" : "off");
    printf("</body>\n");
    printf("</html>\n");

    return 0;
}

2.1在网页上输入:<开发板对应ip地址>/cgi-bin/ctl_led?led_no=1&on=0

        led_no =1 代表led1

        on=0 关灯。on=1 开灯

        问号`?`用于分隔URL的路径和查询字符串。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成了大锦鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值