基于virtools和串口通信的界面交互性的设计与实现.docVIP

基于virtools和串口通信的界面交互性的设计与实现.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Virtools和串口通信的界面交互性的设计与实现 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 1 引言   用户界面设计是屏幕产品的重要组成局部,它为人机交互构建了一个沟通环境。其中交互性设 计是用户界面设计中的重要内容之一。交互设计的目的是让用户能够简单方便地使用产品,任何产 品功能的实现都是通过人机交互完成的。现以 单片机为核心的嵌入式应用中界面交互性设计为例具 体介绍其实现方法。 2 总体设计方案 总体设计方案如图 1 所示 3 串口通信设计与实现   串口通信是指外设和计算机间,通过数据 信号线、地线、控制线等,按位进展传输数据的一种 通信方式。这种通信方式使用的 数据线少。本文的串口通信设计包括下位机端的串口 通信模块和上 位机端的串口通信模块。   3.1 下位机的串口通信模块   下位机的串口通信模块通过串口完成与上位机的通信,在接到上位机数据请求后将采集的数据 信息发送给上位机。 在设计中首先设定 定时器 T1 为串口波特率 发生器,设定波特率为19200bps;上位机发送数据 请求后触发下位机串口中断,为了能够快速的响应上位机的请求,减少上位机的等待,将串口中断 的优先级设置为最高;下位时机优先调用通信模块响应该中断,通信模块首先判断请求消息是否正 确,在确定是正确的请求消息后,从缓冲区中取出数据,封装成一条消息M 消息码R〔如M01R〕, 通过串口发送给上位机。通信模块具备一定过滤及容错能力。   下面重点介绍一下串口通信模块的处理方式。   串口通信模块采用中断处理方式,每完整地接收到一个字符或发送完一个字符都会触发该中断, 进入到相应的中断处理函数中。中断处理函数涉及到接收和发送两个局部,因此在中断处理函数开 始的局部就判断是接收引发的中断,还是发送引发的中断。如果是接收中断,在接收中断中每接收 一个字符都要判断,确定是否为上位机发送过来的请求消息,如果不是放弃当前接收到的内容,从 头开场接收;如果是,那么响应上位机的数据请求,将接收态改为发送态,然后向上位机发送通信缓 冲区中的第一个字符,每发送一个字符会产生中断,在下次中断中再发送下一字符,按此过程直到 发送完毕。   3.2 上位机的串口通信模块   上位机的串口通信模块通过串口向下位机发送请求信息,处理下位机返回的数据信息,并将其 发送给处理这些信息的行为模组。这一过程是循环执行的。该程序是与下位机协同工作的唯一 接口, 是联系界面和下位机的桥梁。它的处理流程如图2 所示。 图 2 上位机串口通信模块处理流程图    上位机的串口通信程序是通过调用 Windows 提供的有关串口操作的API 函数完成的。首先创立 了根底串口类_base_com,在其中实现根本信息配置、翻开、关闭串口等根底功能。为了实现异步发 送和异步接收,在_base_com 类的根底上派生出异步串口通信类_sync_com 完成异步的数据传输。   基类_base_com 的声明如下。   class _base_com //虚基类根本串口接口   {   protected:   vola TIle int _ \o PORT PORT; //串口号   volatile HANDLE _com_handle;//串口句柄   DCB _dcb; //波特率,停顿位,等   int _in_buf, _out_buf; // 缓冲区   COM MTIMEOUTS _co; // 超时时间   //虚函数,用于不同方式的串口翻开   virtual bool open_ \o PORT PORT() = 0;   void init(); //初始化   public:   _base_com()   {   init();   }   virtual ~_base_com();   /*根本参数设置*/   //设置串口参数:波特率,停顿位,等   inline bool set_para();   //支持设置字符串 9600, 8, n, 1   bool set_dcb(char *set_ STr);   //设置内置构造串口参数:波特率,停顿位   bool set_dcb(int BaudRate, int ByteSize = 8, int Parity = NOPARITY, int StopBits =    ONESTOPBIT);   //设置缓冲区大小   inline bool set_buf(int in_buf, int out_buf);   //翻开串口缺省 9600, 8, n

您可能关注的文档

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档