搜索
bottom↓
回复: 6

Linux入门程序:LED测试程序

[复制链接]

出0入0汤圆

发表于 2012-8-27 17:23:37 | 显示全部楼层 |阅读模式
友善之臂提供的最小的测试程序之一就是LED测试程序,代码如下
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
int main(int argc, char **argv)
{
int on;
int led_no;
int fd;
/* 检查led 控制的两个参数,如果没有参数输入则退出。*/
if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 ||
on < 0 || on > 1 || led_no < 0 || led_no > 3) {
fprintf(stderr, "Usage: leds led_no 0|1\n");
exit(1);
}
/*打开/dev/leds 设备文件*/
fd = open("/dev/leds0", 0);
if (fd < 0) {
fd = open("/dev/leds", 0);
}
if (fd < 0) {perror("open device leds");
exit(1);
}
/*通过系统调用ioctl 和输入的参数控制led*/
ioctl(fd, on, led_no);
/*关闭设备句柄*/
close(fd);
return 0;
}


编译下载到开发板之后,很多人都是直接运行./leds,结果就出现错误提示:Usage: leds led_no 0|1
来看代码,
if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 ||
on < 0 || on > 1 || led_no < 0 || led_no > 3)
argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
* argv: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串

因此,正确的执行方式应该是
./leds 1 1意思是第一个灯亮
./leds 1 0第一个灯灭
其他两个灯也是类似

出0入0汤圆

发表于 2012-9-7 02:18:10 来自手机 | 显示全部楼层
顶,之前也一直没搞懂

出90入372汤圆

发表于 2012-9-7 09:42:25 | 显示全部楼层
if (fd < 0) {
fd = open("/dev/leds", 0);
}

这样能打开设备??

出90入372汤圆

发表于 2012-9-7 09:45:56 | 显示全部楼层
第一次打开设备失败后退出就可以了,为什么还要从新打开一遍呢?

出0入0汤圆

发表于 2014-1-22 20:52:21 | 显示全部楼层
楼主的代码是在那里找到的?

出0入0汤圆

发表于 2014-1-22 22:01:25 | 显示全部楼层
keshipt 发表于 2012-9-7 09:45
第一次打开设备失败后退出就可以了,为什么还要从新打开一遍呢?

是啊 ,前面打开fd < 0  可以直接退出了,为什么当检测到fd<0后还调用打开呢?直接print错误

出0入0汤圆

发表于 2014-4-28 11:35:14 | 显示全部楼层
路过路过 顺便看看  顶
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 17:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表