基于Virtools 和串口通信的界面交互性的设计与实现_第1页
基于Virtools 和串口通信的界面交互性的设计与实现_第2页
基于Virtools 和串口通信的界面交互性的设计与实现_第3页
基于Virtools 和串口通信的界面交互性的设计与实现_第4页
基于Virtools 和串口通信的界面交互性的设计与实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、引言用户界面设计是屏幕产品的重要组成部分,它为人机交互构建了一个沟通环境。其中交互性设计是用户界面设计中的重要内容之一。交互设计的目的是让用户能够简单方便地使用产品,任何产品功能的实现都是通过人机交互完成的。现以单片机为核心的嵌入式应用中界面交互性设计为例具体介绍其实现方法。总体设计方案总体设计方案如图1所示串口通信设计与实现串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通信方式。这种通信方式使用的数据线少。本文的串口通信设计包括下位机端的串口通信模块和上位机端的串口通信模块。3.1下位机的串口通信模块下位机的串口通信模块通过串口完成与上位机的通信,在接到上

2、位机数据请求后将采集的数据信息发送给上位机。在设计中首先设定定时器T1为串口波特率发生器,设定波特率为19200bps;上位机发送数据请求后触发下位机串口中断,为了能够快速的响应上位机的请求,减少上位机的等待,将串口中断的优先级设置为最高;下位机会优先调用通信模块响应该中断,通信模块首先判断请求消息是否正确,在确定是正确的请求消息后,从缓冲区中取出数据,封装成一条消息M消息码R(如M01R),通过串口发送给上位机。通信模块具备一定过滤及容错能力。下面重点介绍一下串口通信模块的处理方式。串口通信模块采用中断处理方式,每完整地接收到一个字符或发送完一个字符都会触发该中断,进入到相应的中断处理函数中

3、。中断处理函数涉及到接收和发送两个部分,因此在中断处理函数开始的部分就判断是接收引发的中断,还是发送引发的中断。如果是接收中断,在接收中断中每接收一个字符都要判断,确定是否为上位机发送过来的请求消息,如果不是放弃当前接收到的内容,从头开始接收;如果是,则响应上位机的数据请求将接收态改为发送态,然后向上位机发送通信缓冲区中的第一个字符,每发送一个字符会产生中断,在下次中断中再发送下一字符,按此过程直到发送完毕。上位机的串口通信模块上位机的串口通信模块通过串口向下位机发送请求信息,处理下位机返回的数据信息,并将其发送给处理这些信息的行为模组。这一过程是循环执行的。该程序是与下位机协同工作的唯一接口

4、,是联系界面和下位机的桥梁。它的处理流程如图2所示。图2上位机串口通信模块处理流程图上位机的串口通信程序是通过调用Windows提供的有关串口操作的API函数完成的。首先创建了基础串口类_base_com,在其中实现基本信息配置、打开、关闭串口等基础功能。为了实现异步发送和异步接收,在_base_com类的基础上派生出异步串口通信类_sync_com完成异步的数据传输。基类_base_com的声明如下。class_base_com/虚基类基本串口接口protected:volaTIleint_PORT;串口号volatileHANDLE_com_handle;/串口句柄DCB_dcb;/波特率

5、,停止位,等int_in_buf,_out_buf;/缓冲区COMMTIMEOUTS_co;/超时时间虚函数,用于不同方式的串口打开virtualboolopen_PORT()=0;voidinit();/初始化public:_base_com()init();virtual_base_com();/*基本参数设置*/设置串口参数:波特率,停止位,等inlineboolset_para();/支持设置字符串9600,8,n,1boolset_dcb(char*set_STr);设置内置结构串口参数:波特率,停止位boolset_dcb(intBaudRate,intByteSize=8,int

6、Parity=NOPARITY,intStopBits=ONESTOPBIT);设置缓冲区大小inlineboolset_buf(intin_buf,intout_buf);/打开串口缺省9600,8,n,1inlineboolopen(intPORT);打开串口缺省baud_rate,8,n,1inlineboolopen(intPORT,intbaud_rate);打开串口inlineboolopen(intPORT,char*set_str);关闭串口inlinevirtualvoidclose();/判断串口是或打开inlineboolis_open();/获得串口句炳HANDLEge

7、t_handle();异步串口通信类_sync_com的声明如下。class_sync_com:public_base_comprotected:/打开串口virtualboolopen_PORT();public:_sync_com();/同步读intread(char*buf,intbuf_len);/同步写intwrite(char*buf,intbuf_len)/同步写inlineintwrite(char*buf)assert(buf);returnwrite(buf,strlen(buf);Virtools中行为模组的设计与实现下位机通过串口传输的数据,经过上位机串口通信程序转换成

8、Virtools可以识别的消息,然后交由Virtools中的行为模组进行处理,从而达到利用外部采集数据控制界面显示的目的。4.1Virtools消息发送行为模组Virtools消息发送行为模组对串口通信模块处理得到的数据信息进行重新封装,然后发送给消息解释执行行为模组。消息发送行为模组是使用Virtools提供的开发工具包中相关类的方法实现对信息的重新封装。具体实现如下:CKBeObject*beo=beh-GetTarget();/获取消息发送目标if(!beo)returnCKBR_OWNERERROR;int*tab=(int*)beh-GetLocalParameterReadData

9、Ptr(0);/获得本地变量操作句柄CKMessageManager*mm=BehContext.MessageManager;/消息管理对象inttemp=GetMessage(BehContext)-0;/调用串口通信模块读取串口消息mm-SendMessageSingle(tabtemp,beo);/调用消息发送函数发送已经封装好的动作消息activeOutput_0=TRUE;消息解释执行行为模组消息解释执行行为模组首先从当前的消息列表中获取消息类型,根据消息类型属性中指定的特定消息类型来判断当前到达的消息是否为该特定消息,并根据判断结果调用不同的处理模块。具体的处理流程如图3所示。N

10、Y給朿足否包含亞处理的信息进行柿应处理接收消恳列衣幵始图3消息解释执行行为模组流程图利用Virtools中行为模组的回调机制,循环调用该行为模组。在界面切换时检测一下消息,判断是否与属性中设定的动作消息一致。如果一致,则向动作控制行为模组发送激活消息。动作控制行为模组动作控制行为模组主要使用Virtools自带的行为模组,像按键响应行为模组、脚本的控制行为模组等。另外为了控制外部媒体文件的播放,还利用了Virtools中加载资源文件、播放资源文件的行为模组。动作控制行为模组接收到消息解释执行行为模组发送的激活信息,就会调用相应的行为模组完成界面的输出。结论本文从工程应用的角度,给出了基于Virtools和串

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论