这些设备的操作通过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点阵列电梯显示系统提供了有效的改进方法,改变了其单调的显示方式,成本低廉,更具商业价值。
本文关键字:彩屏 节能灯/照明/彩灯,电子知识资料 - 节能灯/照明/彩灯
上一篇:大尺寸LED屏的背光驱动应用设计