如何整合散乱数据
对于一个系统的输入端,可能会有多种输入形式。比如单片机要检测按键、传感器、串口接收数据等等。这些输入信号都是独立的,不好管理。因此利用结构体将它整合起来,方便后面以分层的方法进行编程。
我们所需两种结构体:
- 输入数据结构体
- 输入设备结构体
输入数据结构体将全部的数据进行打包,方便后续调用采集到的数据。输入设备结构体主要是拿到源数据,它与底层的硬件驱动链接在一起。
具体的结构如下:
数据结构体
结构体所需的信息如下:
- 类型:用于确定这个结构体是谁的数据
- 数据:用于存放硬件产生的相应信息
具体的结构体声明如下:
/* 输入数据抽象层 */
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{
嵌入式系统数据整合

最低0.47元/天 解锁文章
1141

被折叠的 条评论
为什么被折叠?



