分层设计的编程方法——输入系统(未落实完成)

嵌入式系统数据整合

如何整合散乱数据

对于一个系统的输入端,可能会有多种输入形式。比如单片机要检测按键、传感器、串口接收数据等等。这些输入信号都是独立的,不好管理。因此利用结构体将它整合起来,方便后面以分层的方法进行编程。

我们所需两种结构体:

  • 输入数据结构体
  • 输入设备结构体

输入数据结构体将全部的数据进行打包,方便后续调用采集到的数据。输入设备结构体主要是拿到源数据,它与底层的硬件驱动链接在一起。

具体的结构如下:

数据结构体

结构体所需的信息如下:

  • 类型:用于确定这个结构体是谁的数据
  • 数据:用于存放硬件产生的相应信息

具体的结构体声明如下:

/* 输入数据抽象层 */
typedef struct InputEvent{
	
	INPUT_EVENT_TYPE eType;	//类型,用于分辨是哪一种输入
	
	TIME_T time;	//按键时间
	int iKEY;		//哪一个按键
	int iPressure;  //按键状态
	
	char str[INPUT_BUF_LEN];//用于存储串口数据
	
}InputEvent,*PInputEvent;

在这个声明中,数据有两组:按键数据、串口接收数据。如果想继续扩展的话,只需要在这个结构体后面继续加入数据组即可。

在这个声明中,类型eType采用的是枚举类型,time采用的是宏定义的类型,其他变量使用的是int、char而非uint8_t这种类型。下面将说明为什么要使用这样的定义方法。

枚举声明类型

对于eType,含义是指定当前结构体是谁的数据,它是一个固定值。比如可以规定按键数据就是1,串口数据就是2...等等。这样我们可以使用枚举类型来实现类型的定义。

具体枚举声明如下:

typedef enum{
	
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值