新闻中心

EEPW首页>嵌入式系统>设计应用> 基于树莓派平台的电梯彩屏显示系统设计

基于树莓派平台的电梯彩屏显示系统设计

作者: 时间:2014-07-11 来源:网络 收藏

  ①开发环境:Linux内核2.4或更高;GCC版本3.3或更高;用于MIPS,其GCC版本3.4或更高。

本文引用地址://m.amcfsurvey.com/article/249574.htm

  ②占用存储空间:存储空间取决于配置,压缩后为1.7~4.1 MB;未压缩为3.6—9.0MB。

  ③硬件平台:易于载入任何支持带C++编译器和帧缓冲器驱动Linux驱动的处理器;支持、x86、MIPS、PowerPC。

  ④Raspberry Pi(B型)满足以上条件,故可以进行的移植。

  3.1.2的移植准备

  在做移植之前首先做以下移植准备:

  ①建立一个文件夹/home/opt来存放编译所需的源码和文件。

  ②下载Raspbian Wheezy镜像,本文采用2012-07-15-wheezy-raspbian.img。

  ③下载工具链,本文采用gcc-4.7-linaro-rpi-gnueabihf。

  ④下载交叉编译工具,本文采用cross-compile-tools。

  ⑤下载Qt5源码。

  ⑥下载qtjsbackend库的应用补丁。

  然后建立文件夹mnt/rasp-pi-rootfs,将Raspbian Wheezy镜像挂载到此文件夹下,并进入Qt5源码文件夹执行初始化代码init-reposi tory。

  3.1.3 Qt5的编译

  首先进入cross-compile-tools文件夹执行一个脚本fixQualifiedLibraryPaths来修改链接和库路径。

  然后编译qtbase,配置如下:



  当在镜像中编译安装完所有的模块之后,将其复制到SDcard。

  3.1.4 安装Qt Creator

  从网站http://qt-project.org/wiki/Crcate#QtonPi_App_SDK上下载Qt Crcator安装包,并在Linux系统下对其进行安装配置。由于Qt5需要Qtcreator2.6.0以上的版本作为支持,本文采用2.6.1版本。

  3.2 外围部件读取程序

  本系统通过读取挂在I2C总线上的实时时钟芯片来获取时间信息,通过温度传感设备获取温度信息。本文以读取实时时钟芯片的数据为例,操作如下:



  这些设备的操作通过C代码来实现,然后将其编译成动态链接库的形式,供界面应用程序调用。

  3.3 界面应用程序的实现

  图形界面开发是Qt/Embedded开发的一个重点,本系统的界面结构包括楼层信息区域、运行方向区域、图片显示区域、温度时间显示区域、状态显示区域、本系统涉及到视图的跳转、数据的传递、控件的使用、布局和事件处理等等。其程序流程如图4所示。



  整个显示界面通过MainWindow类实现,该类继承自QmainWindow,而各显示区域均通过继承QWidget类来实现。如图3所示,通过定时器1每隔30 ms调用Main-Window的槽函数checkLiftStstus()来获取由C函数open_uart485(int data[])解析的串口数据。

  connect(timer,SIGNAL(timeout()),this,SLOT(checkLiftStatus()));//获取电梯信息

  将解析后的信息传递给楼层信息区域,运行方向区域,状态显示区域分别进行显示。

  indicatorDirection(data[0]); //方向信息

  indicatorState(data[1]); //状态信息

  liftCurrentFloorNum(data[2]);//楼层信息

  图片视频显示区域是在类ShowController中实现的,当系统需要显示图片时,该类调用ImageView类的对象负责图片显示;当系统需要显示视频时,该类调用PlayerWidget类的对象负责处理视频播放。ImageView类和PlayerWidget类也是继承自Qwidget。ImageView类负责获取SD卡上的图片实例,将其显示在正确的位置,并通过定时器2实现图片的切换。PlayerWidget类负责启动MPlayer,并控制视频显示到正确的位置。

  温度时间显示区域是在TimeView类和temperatureView类中实现。TimeView类的成员函数getCurrentTime()通过调用动态链接库的C函数getpcf8563Time(pcf8563_time*pTime)来读取挂在I2C总线上的时钟芯片的时钟信息,并将其显示在正确的区域上。

  temperatureView类主要用于显示温度数据,而真正获取温度数据的过程是在TemperatureHandler类中实现的。开辟一个新的线程,通过定时器3每隔500 ms在槽函数readData()中调用一次动态链接库的C函数therm_dsl8b20(long*date)来读取温度传感器的数据。

  temperatureThread=new QThread(this); //开辟新线程

  connect(temptimer,SIGNAL(timeout()),this,SLOT(readData())); //读取温度

  4 系统调试结果

  根据模拟的NICE3000通信协议、外围部件的操作及Qt5的图形界面编程,实现了电梯彩屏显示系统,其硬件设备图和调试结果图如图5、图6所示。



  结语

  本文对基于Raspberry Pi并利用Qt5编程来实现的电梯彩屏显示系统进行了阐述。首先介绍了整个系统的构架;接着在接口转接板子系统中介绍了NICE3000通信协议,并对其进行解析;然后在显示板子系统中介绍了外围部件的操作,以读取实时时钟芯片的数据为例;最后根据解析、读取的数据利用Qt5编程实现了电梯彩屏显示系统。本文对传统的LED点阵列电梯显示系统提供了有效的改进方法,改变了其单调的显示方式,成本低廉,更具商业价值。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程


c++相关文章:c++教程



上一页 1 2 下一页

关键词:ARM树莓派Qt5

评论


相关推荐

技术专区

关闭