基于QT/Embedded的可变情报板应用程序开发

[09-12 18:29:23]   来源:http://www.88dzw.com  EDA/PLD   阅读:8213

文章摘要:朱艳荺,殷廷瑞(西安电子科技大学信息与控制工程研究所,陕西 西安 710071)0引言QT是奇趣科技推出的一种多平台的C++图形用户界面应用程序框架。它包括QT开发库QT Library、快速开发工具QT Designer、国际化工具QTLinguist以及开发助手QT Assistant,由于其可移植性好,而且完全面向对象,很容易扩展,因此,QT已成为众多嵌人式厂家选择的热点工具。1 操作系统选择本文主要讨论的是一个可变情报板控制器的图形界面系统。该系统需要用串口和以太网口两路来和主控PC和LED情报板通讯,所以,硬件上选择的是一款采用SAMSUNGS 3C2440A高性能处理器的开发

基于QT/Embedded的可变情报板应用程序开发,标签:eda技术,eda技术实用教程,http://www.88dzw.com

  朱艳荺,殷廷瑞(西安电子科技大学信息与控制工程研究所,陕西  西安  710071)

  0引言

  QT是奇趣科技推出的一种多平台的C++图形用户界面应用程序框架。它包括QT开发库QT Library、快速开发工具QT Designer、国际化工具QTLinguist以及开发助手QT Assistant,由于其可移植性好,而且完全面向对象,很容易扩展,因此,QT已成为众多嵌人式厂家选择的热点工具。

  1  操作系统选择

  本文主要讨论的是一个可变情报板控制器的图形界面系统。该系统需要用串口和以太网口两路来和主控PC和LED情报板通讯,所以,硬件上选择的是一款采用SAMSUNGS 3C2440A高性能处理器的开发板。并带有外部存储器、两个五线异步串行口、一个10 M/100 Mbps网口、一个SD卡接口、一个IDE接口,可直接挂接硬盘、LCD和触摸屏接口等。因此,本设计选择uclinux作为操作系统,适合于不带MMU的微处理器芯片。

  2应用程序开发

  该程序按照功能可分为三个模块,分别为界面显示模块,串口通讯模块和以太网通讯模块。

  界面显示模块可提供人机交互接口。它采用一种直观便捷的方式来为用户系统提供控制功能。程序开始运行后,首先进入主界面,包括菜单栏,状态栏和中间区域界面(包括一个列表框和播放,暂停,下一条,上一条等按钮,可分别实现不同功能)。

  串口通讯模块用于LED情报板和控制器的通讯,以及轮询情报板的状态信息。控制板每隔一定时间发送一个串口模糊查询命令,以轮询与其连接的16个模块的状态信息,被轮询到的模块将回送自己所搜集的数据,若在指定时间内没有收到该模块的数据信息,则按通讯异常处理。

  以太网通讯模块用来实现主控PC和控制器的通讯.以完成数据收发功能。主控PC作为客户端连接的控制器,可以发送控制命令。控制器接收命令后,便可按照通信协议把命令转换成控制信号,并完成上传下载文件和改变LED显示内容等功能。

  3  关键技术

  3.1 QT的信号与槽的机制

  QT使用信号与槽的机制来完成对象间的通讯,它支持同一进程间的对象通讯。连接信号与槽的函数为:

  QObjiect::connect(const QObject*sender,const chat*signal,const QObject*receiver,const char*member)

  当某一个特定系统定义的或者用户定义的信号被触发时,这个信号便被发射。当事先预定义的槽接收到这个信号后,便进行相应的处理。但是使用了信号与槽机制的类必须在类定义的时候申明Q_OBJECT。此外,用户也可以使用emit来发射一个信号,如:emit function (value)。

  3.2  串口编程技术

  本系统的整个程序框架遵从linux系统下串口通信编程的标准流程,即:串口的打开、设置属性、读写数据、以及关闭。Linux下对设备的管理都是按照文件形式进行的。对串口的读写就是对设备文件的读写操作。下面是Linux下的部分操作定义:

  ◇串口打开函数:int open (const char*port,int MODE);

  ◇设置属性:包括波特率和奇偶校检,停止位,硬件流控,软件流控等的设置。

  ◇串口发送函数:int write(intfd,char[]buffer,int Length)。

  ◇串口接收函数:int read(int fd,char []buffer,int length)。

  ◇关闭串口:close(int fd)。

  3.3 Socket编程技术

  在本应用程序中,控制器一般被设置为服务器端,其具体的过程如下:

  ◇创建套接字:int socket(int domain,inttype,int protocol。

  ◇绑定socket到特定端口:int bind (intsockfd,struct sockaddr*my_addr,int addrlen)。

  ◇*套接字端口:int listen(int sockfd,int backlog)。

  ◇接受客户端连接请求:int accept (intsockfd,void*addr,int*addrlen);

  ◇发送数据(面向TCP连接):int send (intsockfd,const void*msg,int len,int flags)。

  ◇接收数据(面向TCP连接):int rear(intsockfd,void*buf,int len,unsigned int flags)。

  ◇关闭套接口:close(socket)。

  3.4  进程间的通信技术

  进程间的通信手段主要有管道、消息队列、信号、共享内存、信号量、套接口等等,本文采用的是内存共享和信号机制。

[1] [2]  下一页


Tag:EDA/PLDeda技术,eda技术实用教程EDA/PLD

《基于QT/Embedded的可变情报板应用程序开发》相关文章

分类导航
最新更新
热门排行