文章目录

  • 1 通过文件IO控制硬件设备的方法
    • 1.1 原理介绍
    • 1.2 LED灯程序

1 通过文件IO控制硬件设备的方法

1.1 原理介绍

驱动程序:

本质:是硬件设备创建相应的设备节点文件。创建设备文件时,规定好设备文件的使用方式。

应用程序:

根据驱动程序规定的设备文件使用方式去控制硬件。

控制硬件设备步骤:

1、找出硬件设备所对应的设备节点文件

两个地方:

  • /dev目录下

    对驱动程序熟悉的工程师可以使用,一个设备节点文件控制硬件全部特性。

  • /sys目录下

    业余工程师使用,一个设备节点文件只控制硬件的一个特性。严格来说,它下面的文件是Linux内核导出到用户空间的硬件操作接口。

2、找出驱动程序规定的设备文件使用方式。

1.2 LED灯程序

设备节点文件:/sys/class/leds

往brightness文件写入一个数值,就能控制led灯的亮度,led亮度值:0~255。

示例代码如下:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>#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;
}

参考资料:

  1. [野火]i.MX Linux开发实战指南

通过文件IO控制硬件设备的方法相关推荐

  1. Android APP如何简单快速实现控制硬件设备并实现APP签名

    Android APP如何简单快速实现控制硬件设备 driver(C)层 硬件控制 节点的创建 APP(java)层 native(C/C++)层 接下来上干货,重点说说实现流程 Android st ...

  2. stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备

    stm8/stm32如何通过ESP8266连接天猫精灵和小爱同学,实现(AT指令)语音助手控制硬件设备 博主还是菜鸟,只是这段时间DIY弄了这些东西,让同样喜欢动手的朋友有个参考,我这个开发超级简单, ...

  3. 计算机控制闪光灯,控制闪光灯设备的方法,其中执行一次预闪光

    本申请要求韩国专利申请No.2002-80032的优先权,该优先申请于2002年12月14日提交韩国知识产权局,其所公开的内容完全并入本申请中作为参考. 技术领域 本发明涉及一种控制闪光灯设备的方法, ...

  4. ymodem android,【安卓相关】蓝牙基于Ymodem协议发送bin文件,对硬件设备进行升级。...

    最近做的一个安卓项目是使用蓝牙基于Ymodem协议传输bin文件,实现对硬件设备进行升级. 做的过程中遇到了不少困难,用我这半吊子的语文水平,记录一下吧 怎么办,平时对各种文件传输协议真的是知之甚少啊 ...

  5. 微信硬件平台结合机智云,实现微信控制硬件设备

    随着微信公众号及微信小程序的崛起,手机app的缺点开始凸显出来,尤其像一些功能不多,画面也不用很绚的app,完全是可以用微信公众号或者小程序替代的.因此公司也打算往微信公众号这块发展,此篇文章将实现一 ...

  6. (键盘)代码 19:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备 解决方法...

    天大的巧合,VMware删除后,键盘无法使用的问题.在设备管理器里面就是看到键盘驱动上一个感叹号.信息提示为:由于其配置信息(注册表中的)不完整或已损坏... 经过网上查找,发现如下解决方案,感谢作者 ...

  7. java io 缓存读取_Java 文件IO写入读取四种方法

    第一种:字节流 FileInputStream  FileOutputStream 1.1 读取操作 //先创建一个和硬盘连接的流(打通硬盘和内存的通道) FileInputStream fis = ...

  8. python无法初始化设备_【无法初始化这个硬件设备驱动程序】无法初始化这个硬件的设备驱动_无法初始化d3d...

    2017-08-25 16:30:37 在安装驱动的过程中也会出现很多问题,有的win7用户在安装驱动失败后,在设备管理器中有个硬件前有感叹号,打开属性一看,显示"Windows无法初始化这 ...

  9. linux设备usb节点和硬件接口,所谓设备驱动即驱使硬件设备行动,带你深入理解linux的设备驱动......

    原标题:所谓设备驱动即驱使硬件设备行动,带你深入理解linux的设备驱动... 设备驱动最通俗的解释就是"驱使硬件设备行动".操作系统是通过各种驱动程序来驾驭硬件设备的,它为用户屏 ...

最新文章

  1. 64位系統修復dll
  2. jsp分割字符串并遍历
  3. linux系统python的版本怎么升级,python---linux下升级python的版本
  4. Java Web学习总结(41)——Java EE 8 新功能展望
  5. 控制工程基础Chapter2 Mathematical models of systems
  6. 原生JavaScript如何解决父元素查找指定类名的子元素的问题
  7. PIL Error, TypeError: Cannot handle this data type:(1, 1), <i8
  8. stella forum 知识库---一些错误的修补
  9. VS2015编译VS2013工程文件出错
  10. Python Selenium打开谷歌浏览器
  11. 物联网通信-期末复习
  12. ONLYOFFICE 如何连接集成到 Wordpress 上
  13. 用matlab画树叶,matlab画漂亮的树叶
  14. 已经开源的阿里云播放器的播放内核
  15. pdf文件如何进行翻译?pdf文件翻译方法分享。
  16. Image2Lcd图片取模软件
  17. 线代9讲_特征值与特征向量相似理论
  18. UniPro签约中国集成电路设计领域“IC独角兽”,助力研发管理
  19. PCL学习:随机采样一致性算法(RANSAC)
  20. 文件共享总结上篇-Windows之间文件共享

热门文章

  1. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第9章-时滞系统的分析和综合
  2. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第3章-具有扩散作用的多智能体系统领导-跟随一致性
  3. PyTorch 实现经典模型3:VGG
  4. 玩转Mixly – 3、Arduino AVR编程 之 控制
  5. STM32 电机教程 12 - BLDC 闭环电流控制
  6. 【童心制物】一篇很硬的标新立异级别的体验测评——聊新版造物编程盒
  7. 【任务脚本】0601更新autojs客户端,回顾之前战绩,注意事项淘宝618活动领喵币autojs脚本,向大神致敬...
  8. 关于热插拔usb hotplug /proc/sys/kernel mdev udev busybox
  9. Javascript各种事件汇总
  10. Elasticsearch Query DSL基础介绍