通过文件IO控制硬件设备的方法
生活随笔
收集整理的這篇文章主要介紹了
通过文件IO控制硬件设备的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 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; }參考資料:
總結
以上是生活随笔為你收集整理的通过文件IO控制硬件设备的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: yoga2怎么进入u盘启动 Yoga2如
- 下一篇: socket函数介绍