通过文件IO控制硬件设备的方法
发布日期:2021-07-01 04:29:01
浏览次数:2
分类:技术文章
本文共 1718 字,大约阅读时间需要 5 分钟。
文章目录
1 通过文件IO控制硬件设备的方法
1.1 原理介绍
驱动程序:
本质:是硬件设备创建相应的设备节点文件。创建设备文件时,规定好设备文件的使用方式。
应用程序:
根据驱动程序规定的设备文件使用方式去控制硬件。
控制硬件设备步骤:
1、找出硬件设备所对应的设备节点文件
两个地方:
-
/dev目录下
对驱动程序熟悉的工程师可以使用,一个设备节点文件控制硬件全部特性。
-
/sys目录下
业余工程师使用,一个设备节点文件只控制硬件的一个特性。严格来说,它下面的文件是Linux内核导出到用户空间的硬件操作接口。
2、找出驱动程序规定的设备文件使用方式。
1.2 LED灯程序
设备节点文件:/sys/class/leds
往brightness文件写入一个数值,就能控制led灯的亮度,led亮度值:0~255。
示例代码如下:
#include#include #include #include #include #define RED_DEV_PATH "/sys/class/leds/red/brightness"#define BLUE_DEV_PATH "/sys/class/leds/blue/brightness"#define GREEN_DEV_PATH "/sys/class/leds/green/brightness"/* 循环点灯 */int led_ctrl(void){ int red_fd, blue_fd, green_fd; // 获取红灯设备文件描述符 red_fd = open(RED_DEV_PATH, O_WRONLY); if (red_fd < 0) { printf("get red led fd error !\n"); return -1; } // 获取蓝灯设备文件描述符 blue_fd = open(BLUE_DEV_PATH, O_WRONLY); if (blue_fd < 0) { printf("get red led fd error !\n"); close(red_fd); return -1; } // 获取绿灯设备文件描述符 green_fd = open(GREEN_DEV_PATH, O_WRONLY); if (green_fd < 0) { printf("get red led fd error !\n"); close(red_fd); close(blue_fd); return -1; } // 循环点灯 while (1) { // 红灯亮 write(red_fd, "255", 1); sleep(1); write(red_fd, "0", 1); // 蓝灯亮 write(blue_fd, "255", 1); sleep(1); write(blue_fd, "0", 1); // 绿灯亮 write(green_fd, "255", 1); sleep(1); write(green_fd, "0", 1); } close(red_fd); close(blue_fd); close(green_fd);}int main(int argc, char* argv[]){ led_ctrl(); return 0;}
参考资料:
转载地址:https://muzimin.blog.csdn.net/article/details/107687119 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月09日 17时58分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Proftpd MySQL [Step by Step]
2019-05-02
EFI Shell 命令参考
2019-05-02
HP-UX oracle RAC 双机实践
2019-05-02
解决SHELL脚本中的export无法生效的问题【转】
2019-05-02
linux中的sh脚本语法【转】
2019-05-02
区别数据结构中的堆栈与内存中的堆栈的个人总结【转】
2019-05-02
c++中冒号(:)和双冒号(::)的用法【转】
2019-05-02
python中各种下划线的含义
2019-05-02
《计算机视觉-一种现代方法(第2版)》读书笔记三:早期视觉(一幅图像)
2019-05-02
《计算机视觉-一种现代方法(第2版)》读书笔记六:应用之图像搜索和检索
2019-05-02
如何撰写高水平的学术论文
2019-05-02
谭浩强《C++面向对象程序设计》知识点总结
2019-05-02
分享一个关于介绍TextCNN和TextRNN的文章
2019-05-02
关于CNN中感受野的理解和计算方法
2019-05-02
java基础----RandomAccessFile
2019-05-02
__attribute__((packed))
2019-05-02
Android深入浅出之Binder机制
2019-05-02
linux查看硬件信息
2019-05-02
linux支持大于4G内存
2019-05-02