教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

基于ZigBee技术的无线数据采集系统 - 图文(16)

来源:网络收集 时间:2026-10-05
导读: 江 苏 大 学 硕 士 学 位 论 文 按键采用ADC采样和直接读取电平两种方式,直接采集方式直接连接CC2430的I/O口,可以有很快的响应速度;而ADC采样可以节省I/O口的资源,通过几个电阻分压,可以判断按键值。其中halAd

江 苏 大 学 硕 士 学 位 论 文

按键采用ADC采样和直接读取电平两种方式,直接采集方式直接连接CC2430的I/O口,可以有很快的响应速度;而ADC采样可以节省I/O口的资源,通过几个电阻分压,可以判断按键值。其中halAdcSampleSingle(ADC_REF_AVDD, ADC_8_BIT, ADC_INPUT_JOYSTICK)为ADC采样函数。键盘扫描程序的实现代码详见附录。 4.3.3 液晶驱动程序

在完成系统的初始化之后,首先要改写OLED控制寄存器及地址寄存器,设置OLED的参数,配置Buffer的起始地址和Buffer大小等一些参数,然后清屏,最后是显示。与OLED相关的函数如下表4.2所示,函数的具体实现详见附录。

表4.2 OLED相关的函数 Tab.4.2 OLED relevant functions

函数名

void Lcdwritecom(int8u com) void Lcdwritedata(int8u dat) void InitLcd(void) void ClearScreen(void)

输入 com指令 dat数据 无 无

输出 无 无 无 无 无

功能描述 Oled写指令 Oled写数据 Oled初始化 清屏

显示6*8字符串

void Print6(INT8U xx, INT8U yy, xx ,yy 坐标,ch1待显示的INT8U ch1[], INT8U yn)

字符串,yn是否反黑

4.4 本章小结

根据本设计的要求,选择了星型网络拓扑作为应用的底层网络。本章首先介绍了星型网络的组建过程及其具体实现,接着详细介绍了ZigBee终端节点以及ZigBee协调器节点的软件的具体实现。

41

江 苏 大 学 硕 士 学 位 论 文

第五章 上位机应用软件的实现

5.1 软件的总体设计

考虑到软件的通用性及可操作性,软件是采用方便快捷的C++Builder语言编写的管理程序。Windows的通用图形界面的出现,使得计算机用户不必通过专门的学习就可以得心应手的使用各种Windows应用软件。但是众所周知,使用C或C++进行Microsoft Windows编程非常复杂,使人望而生畏。C++Builder编程语言的产生,使这一问题迎刃而解,它能让程序员集中精力在解决编程任务的方法和算法上,而不是集中在计算机硬件所需的建立上,其迅速为广大程序员所接受,成为极其高效的Windows开发系统,并被广泛用来制作测控软件的界面。

同时考虑到对于实时采集系统,通常会涉及到复杂的实时数据融合以及大量的历史数据处理。特别是系统经过长期运行后,所形成的数据量将更加庞大。因此采用何种技术手段,来组织和管理这些数据,将直接影响整个系统的性能。本系统利用Borland C++ Builder的数据库管理功能来实现对采集到的数据的管理,即以数据库的格式保存所采集的数据,这样大大提高了系统处理数据的效率。

上位机主要实现以下功能:(1)通过RS232串口通信完成与外设的通信;(2)数据实时显示;(3)数据库功能的实现。在本系统的应用程序中至少存在着数据采集和数据显示两个需要同时执行的任务。为了使界面操作不受数据采集的影响,程序至少需要两个线程——界面主线程和数据采集后台辅助线程。

5.2 多线程的实现

5.2.1 多线程概念

线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源[37, 38]。

多线程是一种机制,它允许在程序中并发执行多个线程。对于单个CPU的

42

江 苏 大 学 硕 士 学 位 论 文

计算机,多个线程并不是真正同时运行,而是基于时间片轮转的方式一个一个的执行,由于时间片非常短,所以从宏观上看,多个线程是同时运行的。

线程的优点主要体现在系统管理开销小、线程间的切换快、并行程度高,以及通信上易实现。一个进程中的多个线程共享进程内的公共资源,同一进程的所有线程共享同样的虚拟地址空间、全局变量。因此,启动一个线程花费的空间远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需的时间。所以采用多线程技术能实现更高的效率。 5.2.2线程的创建

图5.1 创建一个多线程 Fig.5.1 Create a new thread

一个进程的主线程是由操作系统自动创建的,如果要让一个主线程创建额外的线程,首先,在C++Bulider中创建线程对象,其操作是在C++Builder IDE环境下选择菜单File|New,在New栏中选中Thread Object,如图5.1所示,按OK,接下来弹出输入框,输入TThread对象子类的名字Read232,这样C++Builder自动为创建了一个名为Tread232的TThread子类。同时编辑器中多了一个名为Unit2.cpp的单元,这就是创建的Tread232子类的原码。在Unit2.cpp中有个Execute函数区,这个区域是线程主要执行的地方,当线程被启动后,就

43

江 苏 大 学 硕 士 学 位 论 文

是执行这一区的程序代码。需要注意的是,每次执行时,都应该检查线程的Terminated属性,只有在此属性不为True时才执行程序代码。 5.2.3 线程的挂起和唤醒

当线程处于挂起状态时,CPU不会为其分配时间片,线程停止在挂起命令发出时的代码处,直到被允许执行。使用线程对象的Suspended方法可以控制线程的挂起,另外,也可以设置线程对象的Suspended属性为True。利用线程对象的Resume方法,可以唤醒挂起的线程。同样,也可以设置线程对象的Suspended属性为False。 5.2.4 线程的终止

当线程执行完Execute方法时,线程终止,触发OnTerminate事件,从而清除线程对象。也可以在线程运行过程中,由其它线程控制该线程的退出,这时需要调用线程对象的Terminate方法,并设置该线程对象的Terminate属性为True。要终止一个线程,也可以直接调用API函数TerminateThread。 5.2.5 线程的同步

C++Builder编程是建立在VCL类库的基础上的。但是VCL类库并不保证其中对象的属性和方法是线程访问安全的(Thread safe),访问VCL对象的属性或调用其方法可能会访问到不被别的线程所保护的内存区域而产生错误。因此,TThread对象提供了一个Synchronize方法,当需要在线程中访问VCL对象属性或调用方法时,通过Synchronize方法来访问属性或调用方法就能避免冲突,使各个线程之间协调而不会产生意外的错误。它的声明如下:

Void __fast call Synchronize (TThreadMethod &Method);

5.3 系统界面部分

系统界面直接面向用户,是系统控制软件的最上层。本系统具有良好的人机界面,一方面,对必须操作者完成的动作适时提示,同时还显示当前的工作状态、数据曲线显示等,以便用户可以通过界面选择所需内容来完成各种功能,

44

江 苏 大 学 硕 士 学 位 论 文

如串口的打开、设置,数据的实时显示,实时曲线显示,历史曲线显示等。

图5.2为上位机应用软件的界面图,其中用到的组件如表5.1所示:

图5.2 上位机应用软件的主界面图

Fig.5.2 Main interface graph of upper computer software

表5.1 上位机应用软件中用到的组件 Tab.5.1 Components used in upper computer software

组件 MainMenu

名称 MainMenu1

数目 作用 1 1 1

创建菜单

获取当前时间、日期 定时显示数据以及更新数据库

Chart Image DBGrid

Chart1

1

显示实时曲线 显示实时数据 显示数据库中的数据

DateTimePicker DateTimePicker1 Timer < …… 此处隐藏:2064字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于ZigBee技术的无线数据采集系统 - 图文(16).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/612130.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)