【物联网中间件平台-06】RFID刷卡拍照

简介: RFID刷卡拍照,如果是传统意义上的开发,我们一般需要先知道是什么型号的RFID刷卡器,自己动手编写一套读写RFID的代码,用来读取RFID标签。

RFID刷卡拍照,如果是传统意义上的开发,我们一般需要先知道是什么型号的RFID刷卡器,自己动手编写一套读写RFID的代码,用来读取RFID标签。摄像头驱动开发也是这样的,先要知道摄像头驱动的协议,然后自己编写读取图像并显示的代码。

如果是windows平台,一般厂家还会提供dll等调用库,这样只需调用相关接口函数就能实现相关的功能,不过如果是嵌入式平台,就相对比较麻烦一些了,一般都需要根据通信协议自行开发相关驱动程序。

无论采用何种办法,我们实现了该功能。但是过了一段时间,RFID设备换了,摄像头设备也换了,那么我们的大部分代码一般都要作废了,需要重新进行相关驱动的开发,如果这是已经安装到现场的项目,临时更换相关传感器设备,那对开发厂家来说,真是一场梦魇。

而基于物联网中间件平台进行这类程序开发,就会很好的规避这类问题。

(1)、平台自带相关驱动(也可以自己开发,后续复用)。

(2)、远程配置,远程部署,随时更换驱动。

(3)、驱动和业务逻辑完全解耦合。

下面就以RFID刷卡拍照为例,介绍基于YFIOs物联网中间件平台,如何进行相关程序的开发。

RFID和摄像头的驱动如何开发,我们本篇文章就不作介绍了,我们直接使用已经开发好的驱动(对驱动开发比较感兴趣的网友,可以参见这篇文章:《YFIOs驱动开发指南》)。

RFID驱动配置

我们选用的易火眼的串口RFID驱动,只需如下配置即可。

(1)、新建用户设备,选择YHY632的RFID读卡器的驱动。


(2)、配置设备参数,选择设备所接的串口,及配置串口参数。


(3)、其它参数都是默认,勾选变量自动添加,这样用户变量就不需要手动创建了。




变量自动添加(设备名字:关键字) 

摄像头驱动配置


选择对应型号的驱动,设定串口号和串口参数,勾选变量自动添加选项。

    该驱动的扫描周期需要设置为0,表示该驱动不会自动运行。

业务逻辑编程(策略开发)

业务逻辑相对简单:先判断是否刷了RFID卡,如果刷了,则进行拍照。

根据这种业务逻辑,为了降低资源的使用,我们采用事件方式触发该策略的执行。也就是驱动执行一次完毕后,调用一次该策略,并向该策略传递驱动程序运行的结果。

public int OnRun(IOperate op, StrategyModemode, object arg)

    {

        int val = (int)arg;

        if (val == 0)

        {

           Bitmap bmp = null;

           //调用摄像头驱动,设备名称需要和配置的一致

           int ret = op.DriverRun("CameraDriver", null);           

           if (ret == 0)

           {

               int hander = op.IOBC_Create(op.IORead("CameraDriver:BlockName"), 0);

               if (hander >= 0)

               {

                    intCount = op.IOBC_GetLength(hander);

                    byte[]dataSrc = new byte[Count];

                    op.IOBC_Read(hander,dataSrc, 0, Count);

                    op.IOBC_Close(hander);

                    bmp = new Bitmap(dataSrc,Bitmap.BitmapImageType.Jpeg);

bmp.Flush();

               }

            }

           return 0;

      }

以上代码相对简单,有几个地方需要说明一下:

(1)、object arg参数跟调用的机制相关,和驱动绑定的事件中,会传递驱动执行的结果,如果是策略调用策略,相关的值根据实际需要进行传递。在本应用中,arg是一个整型数,为0表示驱动执行成功。

(2)、根据设备驱动的名称调用驱动。

(3)、大块数据的交互,通过YFIOBC数据块完成。

策略编写完毕后,需要进行加载:



执行模式为事件模式,和RFID驱动绑定。在驱动的OnRun函数执行完毕后调用该策略,并把执行结果以参数的方式传递给策略。

策略相关开发的博文请参见《YFIOs策略开发指南》。

部署运行

 

 

设备更换

 物联网中间平台的最大优势体现在设备更换上,如果我们需要更换摄像头,则不需要更改任何代码,直接更换摄像头驱动即可。


 

--------------------------------------------------------------------------------------------------------------------

MF简介:http://blog.csdn.net/yefanqiu/article/details/5711770

MF资料:http://www.sky-walker.com.cn/News.asp?Id=25

技术论坛: http://www.yfiot.net


相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
10天前
|
编解码 Java 关系型数据库
SpringBoot 集成阿里云直播 + 点播全实战:推流、拉流、转码、回放一站式落地
本文详解阿里云直播与点播的集成实践,涵盖核心原理(推流/拉流链路、录制转点播联动)、环境配置、SpringBoot项目搭建(Maven依赖、数据库设计、鉴权工具)、全模块代码实现(直播流管理、点播上传播放、事件回调处理)及常见问题排查,助力快速构建稳定音视频应用。
452 6
|
8月前
|
弹性计算 运维 分布式计算
阿里云服务器付费模式选择:节省计划、预留实例券、抢占式实例详解
在我们选购阿里云服务器的时候,有多种计费方式可选,其中包年包月和按量付费是用户最熟悉也是选择最多的计费方式,除了这两种方式之外,阿里云还提供了抢占式实例、节省计划、预留实例券三种更为灵活且经济的付费模式,旨在满足不同业务场景下的长周期低成本与短周期高弹性需求,有的新手用户朋友不清楚这三种计费方式是什么,本文将为大家解析这三种付费模式的内在机制、优势对比及适用场景,以供您选择参考。
|
11月前
|
监控 区块链 数据中心
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统
382 0
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统
|
JSON API 数据格式
淘系等商品评论Json数据格式参考,API接口测试
通过以上示例和说明,你可以了解淘系商品评论的JSON数据结构和如何使用相关API接口获取评论数据。在实际操作中,你需要参考具体的API接口文档和开放平台的相关说明进行配置和调用。
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
450 3
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
C# C语言 Android开发
一个超酷的开源uHand2.0机械手掌项目
一个超酷的开源uHand2.0机械手掌项目
578 1
|
小程序 JavaScript 前端开发
微信小程序框架介绍
微信小程序框架介绍
|
存储
MATLAB实战 | 不同形式的三维曲面图
通常,MATLAB中绘制三维曲面图,先要生成网格数据,再调用mesh函数和surf函数绘制三维曲面。若曲面用含两个自变量的参数方程定义,则还可以调用fmesh函数和fsurf函数绘图。若曲面用隐函数定义,则可以调用fimplicit3函数绘图。
1618 0
|
JSON JavaScript 前端开发
如何处理跨域请求:JSONP、CORS 和代理服务器
处理跨域请求是前端开发中的常见挑战,因为浏览器的同源策略限制了在不同域名、协议或端口之间进行直接通信。为了解决跨域请求的问题,可以使用以下三种常见的方法:JSONP、CORS和代理服务器。
902 0
下一篇
开通oss服务