电子量产工具:输入系统-输入管理器框架

软件总框架

输入管理:

读取多个设备的数据

 

在工程目录input文件夹下增加input_manager.c,完成输入管理器框架

#include "input_manager.h"
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <semaphore.h>
#include <string.h>

static PInputDevice g_InputDevs = NULL;

void RegisterInputDevice(PInputDevice ptInputDev)
{
    ptInputDev->ptNext = g_InputDevs;
    g_InputDevs = ptInputDev;
}


void InputInit(void)
{
    /* register touchscreen */
    extern void TouchscreenRegister(void);
    TouchscreenRegister();

    /* register netinput */
    extern void NetInputRegister(void);
    NetInputRegister();
}

static void *input_recv_thread_func(void *data)
{
    PInputDevice tInputDev = (PInputDevice)data;
    InputEvent tEvent;
    int ret;

    while (1)
    {
        /* 读数据 */
        ret = tInputDev->GetInputEvent(&tEvent);
        if (!ret)
        {
            /* 保存数据 */

            /* 唤醒等待数据的线程 */

            pthread_mutex_lock(&g_tMutex);
            pthread_cond_wait(&g_tConVar, &g_tMutex);

            pthread_mutex_unlock(&g_tMutex);
        }
    }
}

void InputDeviceInit(void)
{
    int ret;
    pthread_t tid;
    /* for each device ,init,pthread_create */
    PInputDevice ptTmp = g_InputDevs;
    while (ptTmp)
    {
        ret = ptTmp->DeviceInit();
        if (!ret)
        {

            ret = pthread_create(&tid, NULL, input_recv_thread_func, ptTmp);
        }

        ptTmp = ptTmp->ptNext;
    }
}

int GetInputEvent(PInputEvent ptInputEvent)
{
    /* 无数据则休眠 */

    /* 返回数据 */
}

总结:

本节完成以下工作

  1. InputInit():注册各个输入设备,比如触摸屏设备和网络输入设备。
  2. InputDeviceInit():使用ptTmp->DeviceInit()初始化所有输入设备,使用pthread_create(&tid, NULL, input_recv_thread_func, ptTmp)创建所有输入设备线程。比如初始化创建触摸屏设备和网络输入设备,创建触摸屏设备线程和网络输入设备线程。 
  3. GetInputEvent():上层APP获得输入数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值