基于串口通信的智能烹饪软件系统研究

2019-06-25 01:25
数字通信世界 2019年5期
关键词:轮询管理器调用

姜 浩

(宁波职业技术学院,宁波 315800)

1 总体设计思路

随着家电智能化的普及和安卓系统的飞速发展,集成化程度高的、拥有类似智能手机触摸交互方式的一体机厨房电器已经受到越来越多消费者的喜爱,但目前厨房电器普遍功能单一,操作方式也是传统的按钮式的,这成为触发笔者研究智能烹饪软件系统实现方式的背景。该智能烹饪系统主要分三部分:主控机、执行模块和串口;主控机上部署安卓系统,是智能烹饪系统的核心,管理着所有烹饪任务的执行状态;执行模块由多个单一的烹饪单元组成,来执行烹饪任务;串口是主控机和执行模块之间进行通信单元,系统框架见图1。本文主要研究该系统软件部分的实现。

图1 智能烹饪系统框架

2 串口通信设计

2.1 串口通信方案选定

安卓系统在较早的版本已经提供了串口通信的实现接口,比如4.4版本,但该接口是@hide 隐藏的,不对外开放,只有系统级才能调用。智能烹饪模块为应用层级的软件系统,因此无法实现接口的直接调用。虽然也可以通过反射机制绕过这一限制,但反射调用会影响软件系统运行的性能,为了让整套系统能更高效地运行,再三思考后决定选用Github 上开源的android-serialportapi 项目作为串口通信的方案。

2.2 串口通信接口实现

android-serialport-api 项目是native 层的实现,因此我们需要在Android Studio 开发环境中添加NDK 环境,在应用工程的build.gradle 脚本中增加cmake 编译语句,把它编译成*.so 格式的本地库,集成到安卓应用中,供应用层Java 代码调用来实现串口的打开、关闭、设置波特率等接口。脚本修改部分见图2。

图2 build.gradle脚本修改

利用JNI 开发技术,实现Java 层对android-serialport-api 项目中提供的native 接口的调用和封装,供安卓应用层访问串口设备使用。Java 层串口访问接口见图3。

图3 串口通信的Java层接口

3 智能烹饪系统设计

智能烹饪模块是该软件系统的核心,它包括人机交互界面、智能烹饪管理器和串口服务。其中智能烹饪管理器负责管理所有的烹饪任务,支持预约、暂停、继续、停止以及报警等烹饪功能。串口服务是智能烹饪模块的核心,它负责监听串口数据的变化,获得执行模块的各单元的工作状态,从而更新状态给人机交互界面和智能烹饪管理器,它是一个安卓后台服务,它管理着一个轮询读取串口数据的线程,每200毫秒会读取串口中最新的数据。为什么采用轮询方式呢?因为执行模块在执行单元状态发生变化时,会把最新的状态写入到串口设备中,但是它无法主动通知到智能烹饪模块,因此在智能烹饪模块侧只能通过轮询监听方式来获取状态更新。串口服务的软件流程见图4。

图4 串口服务软件流程图

4 结束语

本文介绍了基于串口通信的智能烹饪软件系统的设计实现,基于该方案设计原型系统,对系统功能、性能进行测试与分析,结果显示,该方案完全能适用并满足于厨房电器一体化智能控制中心系统的要求。

猜你喜欢
轮询管理器调用
启动Windows11任务管理器的几种方法
应急状态启动磁盘管理器
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
基于等概率的ASON业务授权设计∗
Windows文件缓冲处理技术概述
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
利用RFC技术实现SAP系统接口通信
数据链轮询多网优化设计方法研究*