通过文件IO控制硬件设备的方法
文章目錄
- 1 通過(guò)文件IO控制硬件設(shè)備的方法
- 1.1 原理介紹
- 1.2 LED燈程序
1 通過(guò)文件IO控制硬件設(shè)備的方法
1.1 原理介紹
驅(qū)動(dòng)程序:
本質(zhì):是硬件設(shè)備創(chuàng)建相應(yīng)的設(shè)備節(jié)點(diǎn)文件。創(chuàng)建設(shè)備文件時(shí),規(guī)定好設(shè)備文件的使用方式。
應(yīng)用程序:
根據(jù)驅(qū)動(dòng)程序規(guī)定的設(shè)備文件使用方式去控制硬件。
控制硬件設(shè)備步驟:
1、找出硬件設(shè)備所對(duì)應(yīng)的設(shè)備節(jié)點(diǎn)文件
兩個(gè)地方:
-
/dev目錄下
對(duì)驅(qū)動(dòng)程序熟悉的工程師可以使用,一個(gè)設(shè)備節(jié)點(diǎn)文件控制硬件全部特性。
-
/sys目錄下
業(yè)余工程師使用,一個(gè)設(shè)備節(jié)點(diǎn)文件只控制硬件的一個(gè)特性。嚴(yán)格來(lái)說(shuō),它下面的文件是Linux內(nèi)核導(dǎo)出到用戶空間的硬件操作接口。
2、找出驅(qū)動(dòng)程序規(guī)定的設(shè)備文件使用方式。
1.2 LED燈程序
設(shè)備節(jié)點(diǎn)文件:/sys/class/leds
往brightness文件寫入一個(gè)數(shù)值,就能控制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"/* 循環(huán)點(diǎn)燈 */ int led_ctrl(void) {int red_fd, blue_fd, green_fd;// 獲取紅燈設(shè)備文件描述符red_fd = open(RED_DEV_PATH, O_WRONLY);if (red_fd < 0){printf("get red led fd error !\n");return -1;}// 獲取藍(lán)燈設(shè)備文件描述符blue_fd = open(BLUE_DEV_PATH, O_WRONLY);if (blue_fd < 0){printf("get red led fd error !\n");close(red_fd);return -1;}// 獲取綠燈設(shè)備文件描述符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;}// 循環(huán)點(diǎn)燈while (1){// 紅燈亮write(red_fd, "255", 1);sleep(1);write(red_fd, "0", 1);// 藍(lán)燈亮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; }參考資料:
總結(jié)
以上是生活随笔為你收集整理的通过文件IO控制硬件设备的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: yoga2怎么进入u盘启动 Yoga2如
- 下一篇: socket函数介绍