第三讲:显示器程序介绍_第1页
第三讲:显示器程序介绍_第2页
第三讲:显示器程序介绍_第3页
第三讲:显示器程序介绍_第4页
第三讲:显示器程序介绍_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

显示器程序介绍目标板上的程序目标板程序架构任务功能显示界面任务主要负责控制液晶显示屏的显示内容;电梯通信任务主要负责获取电梯信息,并通过标准输出把这些信息传递给显示界面任务;PC通信任务主要负责接收和执行PC端的指令,它控制显示界面任务的启停,以完成用户的更新要求。目标板上的程序在/myprogram目录下:目录dirpics:存放电梯方向显示图片目录images:存放图片区的图片目录text:text.txt:广播消息 text2.txt:天气消息display485 主程序elevator_sh 显示界面程序运行脚本elevator3 显示界面程序io 电梯通信程序电梯通信程序显示界面程序PC通信程序电梯接口驱动程序本部分的驱动程序分为2个io4 访问上行、下行、检修、超载4个I/O口的

状态io8 访问楼层信息8个I/O口的状态io4I/O口:GPE8,GPE9,GPE10,GPE11read接口:返回4个状态信息,buffer指向的缓冲区存放读到的状态信息,由4个字节组成,各字节依次存放上行、下行、检修、超载4个状态信息。staticintkeys_read(structfile*file,char*buffer,size_tcount,loff_t*ppos){ inti; for(i=0;i<4;i++){ key_value[i]=(!read_gpio_bit(key_table[i]))+48; }

copy_to_user(buffer,key_value,sizeofkey_value);

returnsizeofkey_value;}io8I/O口:GPE0~GPE7read接口:返回楼层信息,buffer指向的缓冲区存放读取到的楼层信息,它是1个整型数,其二进制形式的每位分别对应电梯接口A1,B1,E1,F1,G1,A2,C2,G2。staticintkeys_read(structfile*file,char*buffer,size_tcount,loff_t*ppos){ inti;

for(i=0;i<8;i++){ key_value=key_value|(read_gpio_bit(key_table[i])); if(i<7) key_value<<=1; }

copy_to_user(buffer,&key_value,1);

returnsizeofkey_value;}电梯通信任务与界面显示任务间的通信电梯通信任务把电梯状态写到标准输出;

界面显示任务从标准输入中读取。通信协定:PP/ 上、下行信号一样UU/ 上行DD/ 下行MM/ 检修WW/ 非检修OO/ 超载NN/ 非超载xx/ 楼层显示“xx”文本文件displaylist.txt记录I/O口状态与楼层显示的关系文件内容:

空 1 7 M0 ……电梯通信程序流程voidreadio()

读取设备文件io4和io8,即读I/O口状态voidoutsig1()

向标准输出,即界面显示任务,输出电梯状态。voidoutsig2()

向标准输出,即界面显示任务,输出楼层显示内容。voidreadfile()

从display.txt文件中读取I/O口和楼层显示的关系表。电梯通信程序显示界面程序PC通信程序main.c#include<qapplication.h>#include<qsound.h>#include"emonimpl.h"intmain(intargc,char**argv){ QApplicationa(argc,argv); EMonImplhello(0); a.setMainWidget(&hello); hello.setGeometry(0,0,640,480); hello.show(); returna.exec();}类结构EClock类继承QWidget类virtualvoidpaintEvent(QPaintEvent*event) 画图只能在该函数事件内进行。voidupdate() 引发paintEvent()virtualvoidtimerEvent(QTimerEvent*event) 1s响应一次,update()EDate类继承QLabel类QImage类继承QLabel类voidstartImage()

启动图片显示功能EText类继承QLabel类voidstartText()

启动文字消息显示功能voidupdateText()

显示下一页文字消息EStat类继承QLabel类voidsetStart()

启动信息显示功能,信息闪动voidsetStop()

关闭信息显示功能,信息隐藏ESignal类继承QObject类信号voidchangeUp() 显示电梯上升voidchangeDown() 显示电梯下降voidchangePark() 显示电梯停止voidchangeOverload() 显示超载信息voidchangeNormal() 隐藏超载信息voidchangeMaintenance() 显示检修信息voidchangeWork() 隐藏检修信息voidchangeFloor(constQString&num)显示楼层numEMon类使用QtDesigner,把上述各类的实体组合成整个界面,该界面便是EMon类用uic工具把ui文件转换成cpp和h文件EMonImpl类继承EMon类voidsetUp()

显示上行voidsetDown()

显示下行voidsetPark()

显示停止电梯通信程序显示界面程序PC通信程序RS485驱动程序RS485标准只对接口的电气特性作出规定,而不涉及插件、电缆或协议。因此,在Linux下使用RS485接口,可借助串口驱动程序实现。但是,RS485是半双工的,比起RS232,需要多加一个I/O口来控制RS485的方向,该I/O口在发送数据时置高,接收数据时置低。发送数据: ioctl(fd485,1,0); write(fdtty,&bufout,1); delay();读取数据: ioctl(fd485,0,0); read(fdtty,&bufin,1);voidinitialtty()

初始化串口voidreceivetext(constchar*name,charcolset) 接收文字信息voidreceivefile() 接收文件发送图片名称列表接收文字信息receivetext()接收图片receivefile()方法:

PC打开要传输的文件,读取文件数据,然后通过串口向外发送;目标板先建立一个空文件,然后把从RS485接口读到的内容写入该文件里。数据校验: 为防止文件数据在传输的过程中,丢失或出错,进行校验是必要的。在这里,采用的校验方法是:发送端每发送8个字节,就取1个字节作为校验字节。该字节是前8个字节异或运算的结果;接收端每接收8个字节,就对该8个字节进行异或运算,并把结果与校验字节作比较,相同则传输继续进行,不同则要求发送端重新发送。客户端程序MSComm客户端程序使用VisualBasic6.0编写在VB中,使用MSComm控件访问串口添加MSComm控件 Project->Components->Controls->MicrosoftCommControl6.0设置串口参数 MSComm1.Settings="9600,N,8,1“设置端口 MSComm1.CommPort=0开启串口 MSComm1.PortOpen=T

温馨提示

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

评论

0/150

提交评论