《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于Qt的电脑横机上位机的设计
基于Qt的电脑横机上位机的设计
来源:微型机与应用2012年第19期
贺 青,李鹏飞
(西安工程大学 电子信息学院,陕西 西安 710048)
摘要: 通过研究电脑横机主控系统的工作流程、分析电脑横机工作时的数据流向,针对电脑横机的需求,提出一种以开源的Linux为操作系统、ARM处理器为硬件平台的电脑横机上位机软件的设计方法,并且使用Qt对电脑横机的图形用户界面进行设计。给出了图形用户界面的设计步骤及界面之间相互转换的方法。
Abstract:
Key words :

摘  要: 通过研究电脑横机主控系统的工作流程、分析电脑横机工作时的数据流向,针对电脑横机的需求,提出一种以开源的Linux为操作系统、ARM处理器为硬件平台的电脑横机上位机软件的设计方法,并且使用Qt对电脑横机的图形用户界面进行设计。给出了图形用户界面的设计步骤及界面之间相互转换的方法。
关键词: 电脑横机;上位机;人机交互界面Linux-ARM;Qt

 电脑横机是生产羊毛衫的主要设备,市场对电脑横机的需求在逐年加大,近两年来,我国每年进口数千台电脑自动横机。但是对于我国的羊毛衫生产企业来说,国外所生产的电脑横机价格比较昂贵,而国内生产的电脑横机又主要集中在中低端产品,且电脑横机的人机交互界面非常简单而又不够友好[1]。
本文针对三层控制系统的电脑横机进行设计。通过研究电脑横机控制系统的工作流程、横机工作时数据的流向以及操作人员对电脑横机上位机的需求,提出一种上位机的设计方法。该上位机软件是以开源的Linux为操作系统,ARM处理器为硬件平台,用Qt对图形用户界面进行设计,使得电脑横机人机交互界面更加友好,提高了电脑横机的水平。
1 电脑横机上位机软件的总体设计
 由于在电脑横机上位机的设计中所要考虑到的内容很多,本文只从以下三个方面对电脑横机进行研究。
1.1 电脑横机主控系统的工作流程
 电脑横机主控系统的工作流程如下:首先对电脑横机进行上电,显示初始界面,电脑横机通过自检检查机器是否正常,若有异常,则报警停机;若没有异常则进行初始化设置。设置完成后,对输入的花型文件进行编译和解析,经编译后的花型文件中的每一个花型可以生成一行或者多行的CNT动作行,每个控制代码CNT行对应相应的PAT文件行,若符合要求则传递给下面的DSP控制层[2]。另一方面也可以对下位机的状态进行反馈,若下位机发出请求,则将信息传递给DSP层。
 电脑横机主控系统的流程图如图1所示。

1.2 电脑横机控制数据的流程
 横机工作时数据的流向如图2所示。首先工作人员通过对样品的研究从花型准备系统中产生CNT文件和PAT文件[3]。通过上位机软件的文件编译判断是否有文件的语法错误,若有错误则显示出来,通过对文件的解析,将文件中的CNT动作行和PAT花样行相互对应,生成可以直接用于控制电脑横机的数据,将数据通过I/O模块传递给DSP主控层,再由DSP主控层传递给DSP机头控制层,接收各种数据的反馈并且通过界面显示给操作人员。若发生中断,则中断源发送信号将中断信号传递给控制器,并且从界面上进行显示。
1.3 电脑横机软件设计的要求
 操作人员对电脑横机上位机的功能需求主要包括:(1)为用户提供一个良好的界面,便于工作人员的操作;(2)对由花型准备系统所产生的CNT文件和PAT文件进行读取和分析,产生电脑横机工作时所需要的花型控制信息;(3)电脑横机运行前的初始化工作;(4)将解析好的数据传送给控制系统中的DSP控制层用来控制各种电机等;(5)实时接收由传感器反馈的各种信息,并且显示在界面上,使操作人员可以实时地了解和处理;(6)返回中断信息并及时处理。
2 电脑横机软件的具体设计
2.1 上位机软件的体系结构

 上位机软件的体系结构如图3所示。

 电脑横机上位机基于ARM的硬件平台,采用的是ARM9处理器,选取的芯片是三星公司的S3C2440芯片。在此基础上移植开源可剪裁的Linux操作系统,在操作系统上进行各种驱动程序的设计。应用层主要包括图形用户界面和编织控制软件,主要完成编译和解析花型文件、进行人机交互和界面的显示。人机界面的设计采用的是Qt。编织控制软件根据横机的工艺将输入的CNT文件和PAT文件编译和解析成为一系列的底层设备动作,使得两个文件相互对应,从而完成编织的完整动作。
2.2 软件模块的划分
 根据电脑横机软件的功能和要求,软件采用模块化的设计思想。各功能模块的划分如图4所示。


 文件的读取和编译模块:通过USB口将花型准备系统中所得到的花型文件读入上位机软件,并且进行编译,检查文件是否有语法错误。
 文件解析模块:生成可以直接控制电脑横机的数据,使CNT文件和PAT文件相互对应。
 编织过程的调整:对编织过程进行实时显示并且进行调整,如有错误则进行报警。
 中断信号的反馈:对中断信号进行实时地反馈。
 动作的控制:在人机交互界面中对横机工作时的动作进行实时监控和在线修改。
 工作信息的显示:将电脑横机传感器所感应到的信息及时反馈,使操作人员能更好地控制电脑横机的生产。
3 电脑横机图形用户界面的设计
 界面的信息显示是人机交互界面的一个重要部分,通过它可以使人们更好地运用机器,因此良好的图形界面是必不可少的[4]。目前,面向嵌入式Linux系统的有代表性的GUI系统有MiniGUI、Micro Windows、Qt/Embedded等。在本文的嵌入式Linux系统下选择用Qt/Embedded来实现对电脑横机上位机的人机界面的设计[5]。
 电脑横机图形用户界面框图如图5所示。

 Qt提供了两种实现用户界面的方法,一种是通过传统的编码方式实现用户界面;另一种是通过Qt designer快速实现。Qt界面的设计主要包括以下三个方面:(1)用户界面的设计实现;(2)建立信号与槽之间的关系;(3)实现自定义的槽函数。
 由于电脑横机所涉及的界面非常多,在此主要介绍主界面的设计以及主界面与其他子界面之间相互跳转的方法。主界面的显示图如图6所示,机器运行界面如图7所示。

 

 

 在电脑横机的主窗口的设计中,所要实现的功能是通过点击界面上的按钮可以切换到相应的界面去。其具体的设计过程如下。
3.1 用户界面的设计
 使用designer可以快速设计出所需要的用户界面。通过从工具栏中拖动相应的部件到主窗口就可以完成用户界面的设计。通过Qt designer设计好界面之后,编译器会将该文件转换成能被C++所识别的.h文件。为了实现之后信号与槽函数的关联,对于Qt窗口部件已经提供的信号,可按照以下规范命名:
 void on_<窗口部件名称>_<信号名称>_(<信号参数>);
 由于本设计要实现的功能是通过点击各个按钮就可以跳转到相应的窗口,所以6个按钮就对应6个槽函数,触发这几个槽函数的信号为clicked()。在头文件.h文件中添加的私有槽函数的定义如下:
private slots:
 void on_ runButton _clicked();
 void on_ prefsButton _clicked();
 void on_ fileButton _clicked();
 void on_ designButton _clicked();
 void on_ shutdownButton _clicked();
 void on_ testButton _clicked();
3.2 建立信号与槽之间的关系
 实现了用户界面的设计之后,需要建立信号和槽之间的连接。信号和槽是一种高级接口,应用于对象之间的通信,是Qt的核心特性,也是Qt区别于其他的重要部分。此外,信号和槽是Qt自行定义的一种通信机制,它独立于标准的C/C++语言,一个类要使用信号与插槽机制,就必须是从QObject或者QObject的子类继承,而且在类的定义中必须加上Q_OBJECT宏。信号被定义在类的信号部分,而插槽则定义在public slots、protected slots 或者 private slots 部分。
 这里的信号相当于用户所引发的事件,而槽本质上就是一个函数,它实现了这个动作所对应的功能。Qt中使用connect函数来建立信号和槽之间的链接。通常一个信号可以链接多个槽,多个信号也可以链接同一个槽,并且一个信号还可以与另一个信号相连接。
 信号与槽的关系如图8所示。

 在主界面的设计中,通过connect()函数来完成信号与槽的连接。并且通过信号与槽的连接可以完成对界面的相互跳转,其代码如下:
connect(ui-> runButton,SIGNAL(clicked()),this,SLOT(on_ runButton _clicked()));
connect(ui-> prefsButton,SIGNAL(clicked()),this,SLOT(on_ prefsButton _clicked()));
connect(ui-> fileButton,SIGNAL(clicked()),this,
SLOT(on_ fileButton _clicked()));
connect(ui->designButton,SIGNAL(clicked()),this,SLOT(on_designButton_clicked()));
connect(ui->shutdownButton,SIGNAL(clicked()),this,SLOT(on_shutdownButton_clicked()));
connect(ui->testButton,SIGNAL(clicked()),this,SLOT(on_testButton_clicked()));
3.3 实现自定义的槽函数
 在主界面的设计中,根据主界面的具体功能实现相应的槽函数,所以在头文件中要自定义槽函数;在主界面中切换各个窗体时,可以通过show()和hide()类来完成;需要在实现.cpp文件中添加代码。例如,主界面中的runBotton按钮的自定义槽函数代码为:
void MainWindow:: on_ runButton _clicked()
{
  form4.show();
  this->hide();
}
    其他自定义槽函数与其类似。通过上面的方法,可以实现主界面的设计和多窗体之间的切换。
本文提出了一种以开源的Linux为操作系统、ARM处理器为硬件平台的电脑横机上位机软件的设计方法,并且对电脑横机图形用户界面的设计进行了详细的研究,给出了界面设计的步骤以及界面之间的相互转换的方法。
参考文献
[1] 吕建飞,傅建中.新型电脑横机的开发研制[J].针织工业,2005,13(5):13-15.
[2] 朱文俊,郑建林.电脑横机编织技术[M].北京:中国纺织出版社,2011:30-31.
[3] 丁永生,石金华,万庆萱.针织横机电脑控制器的设计[J].中国纺织大学学报,1995,21(4):70-74.
[4] 丁林松,黄丽琴.Qt4图形设计与嵌入式开发[M].北京:人民邮电出版社,2009:5-8.
[5] 郑阿奇,陈超.Qt4开发实践[M].北京:电子工业出版社,2011:121-123.

此内容为AET网站原创,未经授权禁止转载。