学习成本高,入手慢,这里给大家推荐一款国产的软件,体积小,运行和编译速度快。最重要的是编程语言是中文
这个软件就是E4A
本次我将向大家介绍如何使用E4A开发BLE蓝牙手机上位机APP。
当然,该软件自带了丰富的例子,也提供了一个BLE例子,大家可以借鉴。
由于没有提供各种库的说明文档和帮助文件,学这个软件可能有经过一段摸索,这里我将向大家介绍我在开发这个软件中
获得的经验。
中文编程语言:易语言,采用中文作为关键字,但是编程的语法和思想和C语言是类似的
为了方便理解,这里我结合单片机开发的思路简单介绍一下
变量要声明类型
对象 *** 作的函数称为:方法
对象可触发的中断函数称为:事件
对象可设置的参数称为:属性
-----------------------------------------------------------------------------------------
好接下来介绍 BLE蓝牙库
BLE(Bluetooth Low Energe)低功耗蓝牙设备主要用于智能穿戴和物联网。
BLE蓝牙类库,包含两种 *** 作:方法和事件
方法:
初始化
置可被发现
开始搜索
停止搜索
连接设备
断开连接
释放资源
是否可读
是否可写
是否可通知
读取数据
写入数据
事件:
创建完毕
发现设备
信号强度改变
发现服务
连接状态改变
读取数据完毕
通道数据改变
由于不存在可见的对象,因此蓝牙没有属性设置。
了解方法和事件的用法可通过左侧类库目录选中对应的条目,在下面的提示信息中查看
例如选中BLE蓝牙库的方法 初始化 条目后:
方法:初始化()为 逻辑型
分类:BLE蓝牙类库---BLE蓝牙
注释:初始化BLE蓝牙设备,成功返回真,失败返回假,BLE蓝牙需要安卓43以上系统的支持。
另外 事件类似中断函数,因此在代码中没有先后顺序,可以根据易读的排列顺序进行排版。
所有的动作均属于触发的事件,因此,方法通常在事件里面进行调用。
自己创建的函数,需要自己实现该函数的具体过程,因此函数在这里称为:过程
不过我们这里做BLE蓝牙APP可以不用到过程。
好了,基本的概念已经介绍了,我们可以开始整了。
-----------------------------------------------------------------------------------------
第一步,先根据我们的需要完成可视化的组件布局,并给添加的组件起上一个跟 *** 作相关的名字,在组件的属性对话框设置,同时可以设置组件的其他相关属性。

第二步,使用中需要完成单击响应的,我们可以在设计区直接双击组件,即可自动在代码区生成一个空的事件(类似单片机开发中的中断处理函数,用于响应单击事件),例如四个方向键的单击事件。以下代码我已经填充了单击后执行的蓝牙方法:写入数据,即发数据给连接到手机的蓝牙模块。
事件 按钮上被单击()
BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("上\n","GBK"))
结束 事件
事件 按钮下被单击()
BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("下\n","GBK"))
结束 事件
事件 按钮左被单击()
BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("左\n","GBK"))
结束 事件
事件 按钮右被单击()
BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节("右\n","GBK"))
结束 事件
第三步,完成主窗口的创建工作,因为我们要使用蓝牙库,所以我们可以在APP启动后就申请使用蓝牙的权利,并初始化一个蓝牙对象。
另外就是要实现软件退出的 *** 作,所以我们可以设置一个退出的按钮,实现结束程序。内容如下。
事件 主窗口创建完毕()
'安卓60以上的系统需要动态申请权限,否则app可能无法正常运行
如果 权限 *** 作1取系统版本号()>=23 则
权限 *** 作1申请全部权限()
结束 如果
变量 结果 为 逻辑型
结果 = BLE蓝牙1初始化()
d出提示("初始化结果:" & 结果)
结束 事件
事件 权限 *** 作1申请完毕(权限数组 为 文本型(),申请结果 为 整数型())
'可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码
结束 事件
事件 框_返回被单击()
结束程序()
结束 事件
第四步,实现蓝牙设备的搜索,从搜索到的蓝牙信号中选出我们要的那个,另外在搜索的过程中显示信号的强度
通过按钮单击实现搜索与停止搜索,并设定搜索时间为10秒,10秒后自动停止搜索。
通过发现设备事件,读取搜到的设备,并匹配名称是否为自己要找的信号。这里我内置了信号名称,也可以通过一个输入框,实现敏感信号名称的修改
如果发现的设备名称是指定名字的信号,就将名称和地址写入到列表框的项目,同时给项目做个编号和标记,方便后面取出
使用信号强度改变事件读取搜索中的信号强度,我们只读取感兴趣的那个名字的信号。
当列表中出现我们感兴趣的那个信号名称和地址时候,我们可以单击列表中的该项,触发连接设备,实现手机与蓝牙模块的连接。
同时通过颜色和文字提示是否连接上或者断开了。这可以使用BLE蓝牙对象的连接状态改变事件实现。
事件 搜索按钮被单击()
如果 搜索按钮标题 = "开始搜索" 则
位置传感器1开始监测()
BLE蓝牙1开始搜索()
时钟1时钟周期 = 101000
搜索按钮标题 = "停止搜索"
否则
BLE蓝牙1停止搜索()
时钟1时钟周期 = 0
搜索按钮标题 = "开始搜索"
结束 如果
结束 事件
事件 时钟1周期事件()
BLE蓝牙1停止搜索()
搜索按钮标题 = "开始搜索"
时钟1时钟周期 = 0
结束 事件
事件 BLE蓝牙1发现设备(名称 为 文本型,地址 为 文本型,MajorID 为 整数型,MinorID 为 整数型,配对状态 为 整数型)
如果 名称 = "BT24" 则
'屏蔽掉没有名称的蓝牙设备
d出提示("发现设备")
列表框1添加项目("名称:" & 名称 & "\n地址:" & 地址)
列表框1置项目标记(列表框1取项目数()-1,地址)
结束 如果
结束 事件
事件 BLE蓝牙1信号强度改变(名称 为 文本型,地址 为 文本型,信号强度 为 整数型)
如果 名称 = "BT24" 则
列表框1置项目内容(0,"名称:" & 名称 & "\n地址:" & 地址 & "\n信号:" & 信号强度)
结束 如果
结束 事件
事件 列表框1表项被单击(项目索引 为 整数型)
设备地址 = 列表框1取项目标记(项目索引)
BLE蓝牙1连接设备(设备地址)
'BLE蓝牙1连接设备(列表框1取项目标记(项目索引))
d出提示("正在连接")
连接状态标题 = "正在连接"
结束 事件
事件 BLE蓝牙1连接状态改变(状态 为 整数型)
如果 状态 = 1 则
连接状态标题 = "已连接"
连接状态背景颜色 = 绿色
否则
连接状态标题 = "已断开"
连接状态背景颜色 = 红色
结束 如果
结束 事件
第五步,通过服务提供的通道进行数据传输
连接上蓝牙模块后,就要建立通信的通道了,这需要通过服务来完成,因此我们要对连接的蓝牙模块索取服务的 *** 作
这称为发现服务 事件,由于蓝牙模块中有多个服务可选,我们要找到我们可以进行通信的那个,这个通常在模块的手册也给了相关的短ID
称为服务UUID,每个服务又含有若干个通道UUID。因为模块的出厂设定,只有能用的那个服务才能通信,其他的服务是不可完全可读写的
在产生BLE蓝牙的发现服务事件后,会自动获取到服务的所有信心,装载到一个名字叫:服务信息的集合里,这个集合类型你就当类似C语言结构体数组的东西。
接下来为了验证每个服务是否可读写,就要一个一个测试,这类似,从一个结构体数组先一个一个读出来数组的元素,在数组元素的结构体里取结构体成员,
这就需要用到两层的for循环了,E4A 的for循环用一对 判断循环首---判断循环尾,进行包围。为了方便记,你可以给循环的变量起名字:i,j
然后就是测试对应的服务与通道是否可读,可写,可通知。如果三者都满足,那就是我们要找的通道,实际上,在多组的服务中,只有厂家指定的那组是
满足这三个条件的。其他的一般只能满足可读这一条。
找到合适的服务与通道后,想实现数据的接收,要执行 读取数据的方法,如果直接读,那么系统没有准备好呢,会导致读失败,后面就容易卡死。
这里就像初始化完单片机,要给系统以反应时间,等待个几百毫秒,然后再进行后面的 *** 作一样。
这里就要用到定时器了,找到服务与通道后执行一个1000ms定时器的启动 *** 作,在定时器计数满了之后的事件中执行读取数据的方法,
同时接收框显示服务和通道的ID,并关闭定时器。
事件 BLE蓝牙1发现服务(服务信息 为 集合)
如果 服务信息取项目总数() < 0 则
退出
结束 如果
变量 i 为 整数型
变量 j 为 整数型
变量 信息数组 为 文本型()
i = 0
判断循环首 i < 服务信息取项目总数()
信息数组 = 服务信息取项目(i)
j = 0
判断循环首 j < 取数组成员数(信息数组)
如果 j >0 则
如果 BLE蓝牙1是否可读(信息数组(0),信息数组(j)) = 真 且 BLE蓝牙1是否可写(信息数组(0),信息数组(j)) =真 且 BLE蓝牙1是否可通知(信息数组(0),信息数组(j)) =真 则
服务UUID = 信息数组(0)
通道UUID = 信息数组(j)
'BLE蓝牙1读取数据(服务UUID,通道UUID)
'接收框内容 = 服务UUID &"\n"& 通道UUID
时钟2时钟周期 = 1000
结束 如果
结束 如果
j = j + 1
判断循环尾
i = i + 1
判断循环尾
结束 事件
事件 时钟2周期事件()
BLE蓝牙1读取数据(服务UUID,通道UUID)
接收框内容 = 服务UUID &"\n"& 通道UUID
时钟2时钟周期 = 0
结束 事件
执行完读取 *** 作后,系统会在通道内有数据发送来的时候触发通道数据改变的事件,在该事件中我们读取数据,另外也会触发读取完毕的事件
发送数据是通过单击发送按钮触发写入数据方法实现的,当完成写入后可通过写入数据完毕事件知道是否发送成功。
事件 BLE蓝牙1读取数据完毕(结果 为 整数型,服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())
如果 结果 = 1 则
d出提示("读取数据成功:" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))
否则
d出提示("读取数据失败:" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))
结束 如果
结束 事件
事件 BLE蓝牙1通道数据改变(服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())
d出提示("通道数据改变" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))
接收框加入文本(字节到文本(数据,"GBK"))
结束 事件
事件 发送按钮被单击()
BLE蓝牙1写入数据(服务UUID,通道UUID,文本到字节(发送框内容,"GBK"))
结束 事件
事件 BLE蓝牙1写入数据完毕(结果 为 整数型)
如果 结果 = 1 则
d出提示("写入数据成功")
否则
d出提示("写入数据失败")
结束 如果
结束 事件
其他的 *** 作可在以下完整代码中查看
变量 服务UUID 为 文本型
变量 通道UUID 为 文本型
变量 设备地址 为 文本型
事件 主窗口创建完毕()
'安卓60以上的系统需要动态申请权限,否则app可能无法正常运行
如果 权限 *** 作1取系统版本号()>=23 则
权限 *** 作1申请全部权限()
结束 如果
变量 结果 为 逻辑型
结果 = BLE蓝牙1初始化()
d出提示("初始化结果:" & 结果)
结束 事件
事件 权限 *** 作1申请完毕(权限数组 为 文本型(),申请结果 为 整数型())
'可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码
结束 事件
事件 框_返回被单击()
结束程序()
结束 事件
事件 搜索按钮被单击()
如果 搜索按钮标题 = "开始搜索" 则
位置传感器1开始监测()
BLE蓝牙1开始搜索()
时钟1时钟周期 = 101000
搜索按钮标题 = "停止搜索"
否则
BLE蓝牙1停止搜索()
时钟1时钟周期 = 0
搜索按钮标题 = "开始搜索"
结束 如果
结束 事件
事件 时钟1周期事件()
BLE蓝牙1停止搜索()
搜索按钮标题 = "开始搜索"
时钟1时钟周期 = 0
系统简介
水肥一体化智能控制系统通过与灌溉系统相结合,实现智能化控制。系统由物联网监控平台、气象数据采集终端、视屏监控、施肥一体机、过滤系统、阀门控制器、电磁阀、田间水管线等组成。
图为河南益民控股5G+智慧辣椒种植基地水肥一体化系统控制中心
概述
水肥一体化技术是将灌溉与施肥融为一体的农业新技术。水肥一体化是借助压力系统(或地形自然落差),将可溶性固体或液体肥料,按土壤养分含量和作物种类的需肥规律和特点,配兑成的肥液与灌溉水一起,通过可控管道系统供水、供肥,使水肥相融后,通过管道、喷q或喷头形成喷灌、均匀、定时、定量,喷洒在作物发育生长区域,使主要发育生长区域土壤始终保持疏松和适宜的含水量,同时根据不同的作物的需肥特点,土壤环境和养分含量状况,需肥规律情况进行不同生育期的需求设计,把水分、养分定时定量,按比例直接提供给作物。
系统原理图
水肥一体化系统通常包括水源工程、首部枢纽、田间输配水管网系统和灌水器等四部分,实际生产中由于供水条件和灌溉要求不同,施肥系统可能仅由部分设备组成。
水肥一体机
水肥一体机系统结构包括:控制柜、触摸屏控制系统、混肥硬件设备系统、无线采集控制系统。支持pc端以及微信端实施查看数据以及控制前端设备;水肥一体化智能灌溉系统可以帮助生产者很方便的实现自动的水肥一体化管理。系统由上位机软件系统、区域控制柜、分路控制器、变送器、数据采集终端组成。通过与供水系统有机结合,实现智能化控制。可实现智能化监测、控制灌溉中的供水时间、施肥浓度以及供水量。变送器(土壤水分变送器、流量变送器等)将实时监测的灌溉状况,当灌区土壤湿度达到预先设定的下限值时,电磁阀可以自动开启,当监测的土壤含水量及液位达到预设的灌水定额后,可以自动关闭电磁阀系统。可根据时间段调度整个灌区电磁阀的轮流工作,并手动控制灌溉和采集墒情。整个系统可协调工作实施轮灌,充分提高灌溉用水效率,实现节水、节电,减少劳动强度,降低人力投入成本。
施肥系统
水肥一体化施肥系统原理由灌溉系统和肥料溶液混合系统两部分组成。灌溉系统主要由灌溉泵、稳压阀、控制器、过滤器、田间灌溉管网以及灌溉电磁阀构成。肥料溶液混合系统由控制器、肥料灌、施肥器、电磁阀、传感器以及混合罐、混合泵组成。
41:输配水管网系统
由干管、支管、毛管组成。干管一般采用PVC管材,支管一般采用PE管材或PVC管材,管径根据流量分级配置,毛管目前多选用内镶式滴灌带或边缝迷宫式滴灌带;首部及大口径阀门多采用铁件。干管或分干管的首端进水口设闸阀,支管和辅管进水口处设球阀。
输配水管网的作用是将首部处理过的水, 按照要求输送到灌水单元和灌水器,毛管是微灌系统的最末一级管道,在滴灌系统中,即为滴灌管,在微喷系统中,毛管上安装微喷头。
42:环境数据采集器
421气象信息采集
环境数据采集器由低功耗气象传感器、低功耗气象数据采集控制器和计算机气象软件三部分组成。可同时监测大气温度、大气湿度、土壤温度、土壤湿度、雨量、风速、风向、气压、辐射、照度等诸多气象要素;具有高精度高可靠性的特点,可实现定时气象数据采集、实时时间显示、气象数据定时存储、气象数据定时上报、参数设定等功能。
422土壤墒情采集
土壤检测仪可实现对土壤不同深度的温度、湿度、EC、 PH等数据监控,通过5G信号传输至AI农大数据平台,借助于大数据平台的综合建模分析,从而给出土壤土质的综合评级,并语音播报。
43:无线阀门控制器
阀门控制器是接收由田间工作站传来的指令并实施指令的下端。阀门控制器直接与管网布置的电磁阀相连接,接收到田间工作站的指令后对电磁阀的开闭进行控制,同时也能够采集田间信息,并上传信息至田间工作站,一个阀门控制器可控制多个电磁阀。
电磁阀是控制田间灌溉的阀门,电磁阀由田间节水灌溉设计轮灌组的划分来确定安装位置及个数。
44:灌水器系统
微灌按微灌灌水流量小,一次灌水延续时间较长,灌水周期短,需要的工作压力较低,能够较精确的控制灌水量,能把水和养分直接地输送到作物根部附近的土壤中去。
系统功能
51:用水量控制管理
实现两级用水计量,通过出口流量监测作为本区域内用水总量计量,通过每个支管压力传感采集数据实时计算各支管的轮灌水量,与阀门自动控制功能结合,实现每一个阀门控制单元的用水量统计。同时水泵引入流量控制,当超过用水总量将通过远程控制,限制区域用水。
52:运行状态实时监控
通过水位和视频监控能够实时监测滴灌系统水源状况,及时发布缺水预警;
通过水泵电流和电压监测、出水口压力和流量监测、管网分干管流量和压力监测,能够及时发现滴灌系统爆管、漏水、低压运行等不合理灌溉事件,及时通知系统维护人员,保障滴灌系统高效。
53:阀门自动控制功能
通过对农田土壤墒情信息、小气候信息和作物长势信息的实时监测,采用无线或有线技术,实现阀门的遥控启闭和定时轮灌启闭。根据采集到的信息,结合当地作物的需水和灌溉轮灌情况制定自动开启水泵、阀门,实现无人职守自动灌溉,分片控制,预防人为误 *** 作。
54:PC展示平台
通过物联网水肥一体化智能监测平台,能够为用户提供传感器数据、远程、采集、传输、储存、处理及报警信息发送等服务。该平台以集中式分区化的方式为用户提供便捷、经济、有效的远程监控整体解决方案。通过物联网智能监测平台,用户可以不受时间、地点限制对监控目标进行实时监控、管理、观看和接收报警信息。
55:移动终端
建立手机系统,客户直接采用微信客户端就可以控制和查看实时数据,手机端具有手动启动、关闭电磁阀,水泵等设备功能。
56:运维管理功能
包括系统维护、状态监测和系统运行的现场管理;实现区域用水量计量管理、旱情和灌溉预报专家决策、信息发布等功能的远程决策管理;以及对用水、耗电、灌水量、维护、材料消耗等进行统计和成本核算,对灌溉设施设备生成定期维护计划,记录维护情况,实现灌溉工程的精细化维护运行管理。
节水灌溉自动化控制系统能够充分发挥现有的节水设备作用,优化调度,提高效益,通过自动控制技术的应用,更加节水节能,降低灌溉成本,提高灌溉质量,将使灌溉更加科学、方便,提高管理水平。
农业物联网技术在蔬菜、温室大棚的应用“农业物联网”就是物联网技术在农业生产、经营、管理和服务中的具体应用。按照物联网技术架构,农业物联网仍然通过“感知—传输—应用”的途径来实现对农业的应用。“感知”就是运用各类传感器,如温湿度传感器、光照强度传感器、PH值传感器、CO2传感器等设备,实时地采集大田种植、设施园艺、畜禽养殖、水产养殖和农产品运输等环境中的温度、湿度、PH值、光照强度、土壤养分、CO2浓度等物理量参数信息;“传输”就是建立数据传输和转换方法,通过局部的无线网络、互联网、移动通信网等各种通信网络交互传递,实现农业生产环境信息的有效传输;“应用”就是将获取的大量农业信息进行融合、处理,使技术人员对多个大棚的环境进行监测控制和智能管理,保证农作物有一个良好的、适宜的生长环境,达到增产、改善品质、调节生长周期、提高经济效益的目的,进而实现农业生产集约、高产、优质、高效、生态和安全的目标。
蔬菜大棚、温室大棚主要用于不适合蔬菜生长的季节,模拟蔬菜生长的自然条件,提供蔬菜适合生长的环境,而这个环境的实现不能凭感觉,需要引入农业物联网温室环境监控技术解决蔬菜生长环境的可控性,达到提高蔬菜生产效益的目的。
一、蔬菜温室大棚控制系统构建:
一个完整的蔬菜温室大棚自动控制系统包括数据采集、数据传输、数据分析和生产 *** 作系统等部分,每个部分在蔬菜生产中具有不同的功能,这些功能组合起来完成蔬菜生产的全过程。
二、蔬菜温室大棚物联网环境自动控制系统主要包括以下几个分系统部分:
1数据采集系统:
数据采集系统由无线传感器、供电电源或者蓄电池等组成;现场的监测元件包括温湿度、CO2浓度、土壤温湿度、土壤养分等监测元件。数据采集系统主要负责温室大棚内部的光照、温度、湿度和土壤含水量以及视频等数据的采集和控制。
2数据传输系统:
数据传输系统由数据采集传感器,包括温度传感器、湿度传感器、光照强度传感器、光合有效辐射传感器、土壤温湿度传感器、CO2传感器、风向传感器等组成。传输方式:外部网络以基于IP网络技术和GPRS通信网络为基础进行传输;内部网络则采用短距离、低功率的ZigBee无线通信技术。基于ZigBee的无线传输模式中,传感器采集的数据通过ZigBee发送模块传送到中心节点上,同时,用户终端和一体化控制器间传送的控制指令也传送到中心节点上,中心节点再经过边缘网关将传感器数据、控制指令发送到上位机的业务平台。技术人员可以通过有线网络/无线网络访问上位机系统业务平台,实时监测大棚现场的传感器参数,控制大棚现场的相关设备。
3数据分析系统:
数据分析及显示部分包括电脑、软件、无线接收模块、报警系统,依据不同的环境、作物、生长期,实施不同的控制方案。
4实地环境 *** 控系统:
该分系统包括的灌溉控制系统可进行滴浇灌和微喷雾系统的控制,实现远程自动灌溉;土壤环境监测系统则利用土壤水分传感器、土壤湿度传感器等来实时获取土壤水分、湿度等数据,为灌溉控制系统和温湿度控制系统提供环境信息;温湿度监控系统可利用高精度传感器来采集农作物的生长环境信息,设定环境指标参数,当环境指标超出参数范围时,可自动启动风机降温系统、水暖加温系统、空气内循环系统等,以进行环境温湿度的调节。
利用农贸行业物联网建设的蔬菜温室大棚,能为温室大棚种植提供有效的控制蔬菜的生长环境的先进技术,使蔬菜获得适宜的生长环境,增加产量,以实现跨季节的蔬菜培育。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)