基于VC++的串口通信服务的开发(2)

2019-03-22 10:05

无线传感网络课程论文

第一章 引言

1.1实验目的

熟悉TI的ZStack协议栈ZStack-CC2530-2.5.1a,理解各层次功能以及使用方法。

1.2实验原理

基于标准官方发布的Zstack进行移植修改,以适应CW-ZB2530的硬件平台,使用其中的SampleApp进行修改,实现了Coordinator和Router板之间的无线通信,并进行串口互传实验。

1.3实验准备

用IAR Embedded Workbench for 8051 8.10打开Lab8-Uart2RF目录中的eww工程文件,连接好调试器和开发板,用串口数据线连接开发板的串口J9和电脑,打开串口终端软件,配置号串口,波特率115200,这里需要准备两套串口传输线,两个PC串口,两个串口终端软件。将模块上的BNC头CN1上的红色保护套摘下,旋上开发套件中的2.4GHz天线。

1.4实验内容

由于官方的ZStack-CC2530-2.5.1a所适用的硬件平台为TI的SmartRF05和CC2530EM模块。并非CW-ZB2530模块,因此如果使用官方的Stack,需要进行相应的修改移植工作才能正常运行。在Lab8中的软件已经完成了这些修改,可以直接使用。

PC机通过串口发送数据给协调器Coordinator(短地址为0000),Coordinator通过无线广播方式发送出去,路由器接收到后把数据通过串口传给PC的串口终端显示出来。反之亦然。

使用时下载协调器程序:选中CoordinatorEB

1

无线传感网络课程论文

1.5课题背景

计算机与外界的信息交换称为通信。基本的通信方式有并行通信和串行通信两种。串行通信是指一条信息额各位数据被逐位按顺序传送的通信方式。串行通信的特点是:数据位传送,按位顺序进行,最少只需要一根传输线即可完成,成本低但传送速度慢。串行通信的距离可以从几米到几千米。

1.6研究现状

串口通讯目前流行的方法大概有三种:一是利用Microsoft提供的CMSCOMM控件进行通讯,不过现在很多程序员都觉应该放弃这种方式。二是利用WINAPI函数进行编程,这种编程的难度高,要求掌握很多的API函数。三是利用现在网络上面提供的一些串口通讯控件进行编写。这三种方法都没有同Windows服务联系起来。

1.7 研究的意义

利用串口进行数据通讯在通讯领域中占有着重要的地位,串口通讯在通讯软件中有着十分广泛的应用。如电话、传真、视频和各种控制等。通过本文的研究和开发能更加方便的通过网络通信来实现串口通信,提高串口的利用率。为进一步的研究提供参考。

2

无线传感网络课程论文

第二章 相关理论基础

2.1 Windows NT 服务

有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。每个操作系统都需要有在后台执行任务的方法,无论是谁正在使用这部机器,这些任务都可以继续运行,后台任务可以处理各种重要的服务,包括系统的或者用户的。

在Windows NT中,后台的任务被称为服务。服务可在每次NT启动的时候运行,并且不管是谁登陆,都会一直运行下去。服务是一类受到操作系统优待的程序。一个服务首先是一个Win32可执行程序,通常以控制台程序的形式被编写,进入点函数是Main()而不是WinMain()。

一个Windows NT服务由三部分组成,第一部分是Service Control Manager(SCM)。每个Windows NT/2000系统都有一个SCM,SCM存在于Service.exe中,在Windows启动的时候会自动运行,伴随着操作系统的启动和关闭而产生和终止。这个进程以系统特权运行,并且提供一个统一的、安全的手段去控制服务。它其实是一个RPC Server,因此我们可以远程安装和管理服务,不过这不在本文讨论的范围之内。SCM包含一个储存着已安装的服务和驱动程序的信息的数据库,通过SCM可以统一的、安全的管理这些信息,因此一个服务程序的安装过程就是将自身的信息写入这个数据库。第二部分就是服务本身。一个服务拥有能从SCM收到信号和命令所必需的特殊代码,并且能够在处理后将它的状态回传给SCM。第三部分也就是最后一部分,是一个服务控制管理器(Service Control Dispatcher,SCP)。它是一个拥有用户界面,允许用户开始、停止、暂停、继续,并且控制一个或多个安装在计算机上服务的Win32应用程序。SCP的作用是与SCM通讯,Windows 2000管理工具中的“服务”就是一个典型的SCP。

2.2 串口通信

串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个 25 脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的

3

无线传感网络课程论文

电平加以规定。传输距离在码元畸变小于 4% 的情况下,传输电缆长度应为 50 英尺。

典型地,串口用于ASCII码字符的传输。通信使用3根线完成:地线,发送线,接收线。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其它线则用于硬件握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:

波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。

2.3 多线程及线程间通信

进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。

线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。线程不

4

无线传感网络课程论文

能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。

线程带来的主要好处是:在进程内创建、终止线程比创建、终止进程要快;同一进程内线程间的切换要比进程间的切换要快,尤其是用户级线程间的切换。另外,线程的出现还因为以下几个原因:并发程序的并发执行,在多处理环境下更为有效。一个并发程序可以建立一个进程,而这个并发程序中的若干并发程序段就可以分别建立若干线程,使这些线程在不同的处理机上执行。每个进程具有独立的地址空间,而该进程内的所有线程共享该地址空间。这样可以解决父子进程模型中,子进程必须复制父进程地址空间的问题。线程对解决客户/服务器模型非常有效。

线程之间通信的两个基本问题是互斥和同步。线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。线程互斥是指对于共享的操作系统资源(指的是广义的“资源”,而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥是一种特殊的线程同步。实际上,互斥和同步对应着线程间通信发生的两种情况:当有多个线程访问共享资源而不使资源被破坏时;当一个线程需要将某个任务已经完成的情况通知另外一个或多个线程时。在WIN32中,同步机制主要有以下几种:事件(Event);信号量(semaphore);互斥量(mutex);临界区(Critical section)。

2.4 安全队列

队列(Queue)在计算机科学中,是一种先进先出的线性表。和栈相反,它只允许在表的一端进行插入,而在表的另一端删除元素。队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端为队尾,进行删除操作的端为队头。队列中没有元素时,称为空队列。在用链式存储结构表示队列时,需要设置队列头指针和队列尾指针,以便指示队列头结点和队列尾结点。

安全队列是指高级队列的代理明确指出一个或多个数据库用户可以对队列进行操作。安全队列的拥有者可以执行所有的队列操作,而其他用户除非被配置

5


基于VC++的串口通信服务的开发(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:铅锌矿床成矿理论和找矿方法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: