智能家居实训(华清远见)第五天

(1)今天进行了代码练习,ADC模块,温度获取
(2)练习将代码整合形成头文件,减少代码编程,形成一个主函数进行编译运行。
代码:
按键控制
main.c主函数:


/*==========================================
=====================
*   Copyright (C) 2020 
All rights reserved.
*   
*   文件名称:
main.c
*   创 建 者:wang
*   创建日期:2020年
10月15日
*   描    述:
*
*   更新日志:
*
============================================
====================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include "dev.h"

int 
main()
{
	//1.打开设备文件   led   pwm   key	
openDevice();	
	keyProcess();
	
return 0;
}
Dev.h文件
/*===============================================================
*   Copyright (C) 2020 All rights reserved.
*   
*   文件名称:dev.h
*   创 建 者:wang
*   创建日期:2020年10月15日
*   描    述:
*
*   更新日志:
*
===============================================================*/
#ifndef _DEV_H_
#define _DEV_H_
//1.头文件引入
//2.结构体  共同体  枚举类型定义
//3.宏定义
//4.取别名
//5.函数声明
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>

typedef enum flag
{
	FALSE,
	TRUE,
}BOOL;

int ledFd,pwmFd,keyFd;


#define LED_MAGIC 'h'
#define CMD_ON 1
#define CMD_OFF 2
#define LED_ON _IOW(LED_MAGIC,CMD_ON,int)
#define LED_OFF _IOW(LED_MAGIC,CMD_OFF,int)

#define PWM_MAGIC 'P'
#define PWM_ON _IO(PWM_MAGIC,CMD_ON)
#define PWM_OFF _IO(PWM_MAGIC,CMD_OFF)


void openDevice();
void keyProcess();
void pwmProcess();
void ledProcess(int ledNum);
#endif

Pwm.c文件
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include "ledapp.h"
#define PWM_MAGIC 'P'
#define CMD_ON 1
#define CMD_OFF 2

#define PWM_ON _IO(PWM_MAGIC,CMD_ON)
//#define PWM_OFF _IO(PWM_MAGIC,PWM_OFF)
int main()
{
	int pwmFd= open("/dev/pwm0",O_RDWR);
	if(pwmFd<0)
	{
		perror("pwm");
		return -1;
	}
	ioctl(pwmFd,PWM_ON);
	close(pwmFd);
}



Ledapp.h文件
#ifndef _LEDAPP_H_
#define _LEDAPP_H_

 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<strings.h>
#include<signal.h>
#include<sys/ioctl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
int keyID,btnFd;

void sig_handler();
void led1();
void led2();
void led3();
void led4();

#endif
Ledapp.c文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include "ledapp.h"
#define LED_MAGIC 'h'
#define CMD_ON 1
#define CMD_OFF 2

#define LED_ON _IOW(LED_MAGIC,CMD_ON,int)
int keyID,btnFd;

//0 1 2 3
void sig_handler(int signo)
{
	if(signo==SIGIO)
	{
		read(btnFd,&keyID,sizeof(keyID));
		printf("key%d press!\n",keyID);
		if(keyID==2)
		{
			led1();
			perror("led1");
		}
		else if(keyID==3)
		{
			led2();
			perror("led2");
		}
		else
		{
			led3();
			perror("led3");
		}

		
	}
}
void led1()
{
	int ledFd = open("/dev/led",O_RDWR);
	if(ledFd < 0)
	{
		perror("led\n");
	//	return -1;
	}
	ioctl(ledFd,LED_ON,0);

	close(ledFd);
}

void led2()
{
	int ledFd = open("/dev/led",O_RDWR);
	if(ledFd < 0)
	{
		perror("led\n");
	//	return -1;
	}
	ioctl(ledFd,LED_ON,1);

	close(ledFd);
}
void led3()
{
	int ledFd = open("/dev/led",O_RDWR);
	if(ledFd < 0)
	{
		perror("led\n");
	//	return -1;
	}
	ioctl(ledFd,LED_ON,2);

	close(ledFd);
}
void led4()
{
	int ledFd = open("/dev/led",O_RDWR);
	if(ledFd < 0)
	{
		perror("led\n");
	//	return -1;
	}
	ioctl(ledFd,LED_ON,3);

	close(ledFd);
}
/*void off()
{
	int ledFd = open("/dev/led",O_RDWR);
	if(ledFd < 0)
	{
		perror("led\n");
	//	return -1;
	}
	ioctl(ledFd,LED_ON,1);

	close(ledFd);
}*/
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值