摘 要: 通過研究電腦橫機(jī)主控系統(tǒng)的工作流程、分析電腦橫機(jī)工作時(shí)的數(shù)據(jù)流向,針對(duì)電腦橫機(jī)的需求,提出一種以開源的Linux為操作系統(tǒng)、ARM處理器為硬件平臺(tái)的電腦橫機(jī)上位機(jī)軟件的設(shè)計(jì)方法,并且使用Qt對(duì)電腦橫機(jī)的圖形用戶界面進(jìn)行設(shè)計(jì)。給出了圖形用戶界面的設(shè)計(jì)步驟及界面之間相互轉(zhuǎn)換的方法。
關(guān)鍵詞: 電腦橫機(jī);上位機(jī);人機(jī)交互界面;Linux-ARM;Qt
電腦橫機(jī)是生產(chǎn)羊毛衫的主要設(shè)備,市場(chǎng)對(duì)電腦橫機(jī)的需求在逐年加大,近兩年來(lái),我國(guó)每年進(jìn)口數(shù)千臺(tái)電腦自動(dòng)橫機(jī)。但是對(duì)于我國(guó)的羊毛衫生產(chǎn)企業(yè)來(lái)說,國(guó)外所生產(chǎn)的電腦橫機(jī)價(jià)格比較昂貴,而國(guó)內(nèi)生產(chǎn)的電腦橫機(jī)又主要集中在中低端產(chǎn)品,且電腦橫機(jī)的人機(jī)交互界面非常簡(jiǎn)單而又不夠友好[1]。
本文針對(duì)三層控制系統(tǒng)的電腦橫機(jī)進(jìn)行設(shè)計(jì)。通過研究電腦橫機(jī)控制系統(tǒng)的工作流程、橫機(jī)工作時(shí)數(shù)據(jù)的流向以及操作人員對(duì)電腦橫機(jī)上位機(jī)的需求,提出一種上位機(jī)的設(shè)計(jì)方法。該上位機(jī)軟件是以開源的Linux為操作系統(tǒng),ARM處理器為硬件平臺(tái),用Qt對(duì)圖形用戶界面進(jìn)行設(shè)計(jì),使得電腦橫機(jī)人機(jī)交互界面更加友好,提高了電腦橫機(jī)的水平。
1 電腦橫機(jī)上位機(jī)軟件的總體設(shè)計(jì)
由于在電腦橫機(jī)上位機(jī)的設(shè)計(jì)中所要考慮到的內(nèi)容很多,本文只從以下三個(gè)方面對(duì)電腦橫機(jī)進(jìn)行研究。
1.1 電腦橫機(jī)主控系統(tǒng)的工作流程
電腦橫機(jī)主控系統(tǒng)的工作流程如下:首先對(duì)電腦橫機(jī)進(jìn)行上電,顯示初始界面,電腦橫機(jī)通過自檢檢查機(jī)器是否正常,若有異常,則報(bào)警停機(jī);若沒有異常則進(jìn)行初始化設(shè)置。設(shè)置完成后,對(duì)輸入的花型文件進(jìn)行編譯和解析,經(jīng)編譯后的花型文件中的每一個(gè)花型可以生成一行或者多行的CNT動(dòng)作行,每個(gè)控制代碼CNT行對(duì)應(yīng)相應(yīng)的PAT文件行,若符合要求則傳遞給下面的DSP控制層[2]。另一方面也可以對(duì)下位機(jī)的狀態(tài)進(jìn)行反饋,若下位機(jī)發(fā)出請(qǐng)求,則將信息傳遞給DSP層。
電腦橫機(jī)主控系統(tǒng)的流程圖如圖1所示。
1.2 電腦橫機(jī)控制數(shù)據(jù)的流程
橫機(jī)工作時(shí)數(shù)據(jù)的流向如圖2所示。首先工作人員通過對(duì)樣品的研究從花型準(zhǔn)備系統(tǒng)中產(chǎn)生CNT文件和PAT文件[3]。通過上位機(jī)軟件的文件編譯判斷是否有文件的語(yǔ)法錯(cuò)誤,若有錯(cuò)誤則顯示出來(lái),通過對(duì)文件的解析,將文件中的CNT動(dòng)作行和PAT花樣行相互對(duì)應(yīng),生成可以直接用于控制電腦橫機(jī)的數(shù)據(jù),將數(shù)據(jù)通過I/O模塊傳遞給DSP主控層,再由DSP主控層傳遞給DSP機(jī)頭控制層,接收各種數(shù)據(jù)的反饋并且通過界面顯示給操作人員。若發(fā)生中斷,則中斷源發(fā)送信號(hào)將中斷信號(hào)傳遞給控制器,并且從界面上進(jìn)行顯示。
1.3 電腦橫機(jī)軟件設(shè)計(jì)的要求
操作人員對(duì)電腦橫機(jī)上位機(jī)的功能需求主要包括:(1)為用戶提供一個(gè)良好的界面,便于工作人員的操作;(2)對(duì)由花型準(zhǔn)備系統(tǒng)所產(chǎn)生的CNT文件和PAT文件進(jìn)行讀取和分析,產(chǎn)生電腦橫機(jī)工作時(shí)所需要的花型控制信息;(3)電腦橫機(jī)運(yùn)行前的初始化工作;(4)將解析好的數(shù)據(jù)傳送給控制系統(tǒng)中的DSP控制層用來(lái)控制各種電機(jī)等;(5)實(shí)時(shí)接收由傳感器反饋的各種信息,并且顯示在界面上,使操作人員可以實(shí)時(shí)地了解和處理;(6)返回中斷信息并及時(shí)處理。
2 電腦橫機(jī)軟件的具體設(shè)計(jì)
2.1 上位機(jī)軟件的體系結(jié)構(gòu)
上位機(jī)軟件的體系結(jié)構(gòu)如圖3所示。
電腦橫機(jī)上位機(jī)基于ARM的硬件平臺(tái),采用的是ARM9處理器,選取的芯片是三星公司的S3C2440芯片。在此基礎(chǔ)上移植開源可剪裁的Linux操作系統(tǒng),在操作系統(tǒng)上進(jìn)行各種驅(qū)動(dòng)程序的設(shè)計(jì)。應(yīng)用層主要包括圖形用戶界面和編織控制軟件,主要完成編譯和解析花型文件、進(jìn)行人機(jī)交互和界面的顯示。人機(jī)界面的設(shè)計(jì)采用的是Qt。編織控制軟件根據(jù)橫機(jī)的工藝將輸入的CNT文件和PAT文件編譯和解析成為一系列的底層設(shè)備動(dòng)作,使得兩個(gè)文件相互對(duì)應(yīng),從而完成編織的完整動(dòng)作。
2.2 軟件模塊的劃分
根據(jù)電腦橫機(jī)軟件的功能和要求,軟件采用模塊化的設(shè)計(jì)思想。各功能模塊的劃分如圖4所示。
文件的讀取和編譯模塊:通過USB口將花型準(zhǔn)備系統(tǒng)中所得到的花型文件讀入上位機(jī)軟件,并且進(jìn)行編譯,檢查文件是否有語(yǔ)法錯(cuò)誤。
文件解析模塊:生成可以直接控制電腦橫機(jī)的數(shù)據(jù),使CNT文件和PAT文件相互對(duì)應(yīng)。
編織過程的調(diào)整:對(duì)編織過程進(jìn)行實(shí)時(shí)顯示并且進(jìn)行調(diào)整,如有錯(cuò)誤則進(jìn)行報(bào)警。
中斷信號(hào)的反饋:對(duì)中斷信號(hào)進(jìn)行實(shí)時(shí)地反饋。
動(dòng)作的控制:在人機(jī)交互界面中對(duì)橫機(jī)工作時(shí)的動(dòng)作進(jìn)行實(shí)時(shí)監(jiān)控和在線修改。
工作信息的顯示:將電腦橫機(jī)傳感器所感應(yīng)到的信息及時(shí)反饋,使操作人員能更好地控制電腦橫機(jī)的生產(chǎn)。
3 電腦橫機(jī)圖形用戶界面的設(shè)計(jì)
界面的信息顯示是人機(jī)交互界面的一個(gè)重要部分,通過它可以使人們更好地運(yùn)用機(jī)器,因此良好的圖形界面是必不可少的[4]。目前,面向嵌入式Linux系統(tǒng)的有代表性的GUI系統(tǒng)有MiniGUI、Micro Windows、Qt/Embedded等。在本文的嵌入式Linux系統(tǒng)下選擇用Qt/Embedded來(lái)實(shí)現(xiàn)對(duì)電腦橫機(jī)上位機(jī)的人機(jī)界面的設(shè)計(jì)[5]。
電腦橫機(jī)圖形用戶界面框圖如圖5所示。
Qt提供了兩種實(shí)現(xiàn)用戶界面的方法,一種是通過傳統(tǒng)的編碼方式實(shí)現(xiàn)用戶界面;另一種是通過Qt designer快速實(shí)現(xiàn)。Qt界面的設(shè)計(jì)主要包括以下三個(gè)方面:(1)用戶界面的設(shè)計(jì)實(shí)現(xiàn);(2)建立信號(hào)與槽之間的關(guān)系;(3)實(shí)現(xiàn)自定義的槽函數(shù)。
由于電腦橫機(jī)所涉及的界面非常多,在此主要介紹主界面的設(shè)計(jì)以及主界面與其他子界面之間相互跳轉(zhuǎn)的方法。主界面的顯示圖如圖6所示,機(jī)器運(yùn)行界面如圖7所示。
在電腦橫機(jī)的主窗口的設(shè)計(jì)中,所要實(shí)現(xiàn)的功能是通過點(diǎn)擊界面上的按鈕可以切換到相應(yīng)的界面去。其具體的設(shè)計(jì)過程如下。
3.1 用戶界面的設(shè)計(jì)
使用designer可以快速設(shè)計(jì)出所需要的用戶界面。通過從工具欄中拖動(dòng)相應(yīng)的部件到主窗口就可以完成用戶界面的設(shè)計(jì)。通過Qt designer設(shè)計(jì)好界面之后,編譯器會(huì)將該文件轉(zhuǎn)換成能被C++所識(shí)別的.h文件。為了實(shí)現(xiàn)之后信號(hào)與槽函數(shù)的關(guān)聯(lián),對(duì)于Qt窗口部件已經(jīng)提供的信號(hào),可按照以下規(guī)范命名:
void on_<窗口部件名稱>_<信號(hào)名稱>_(<信號(hào)參數(shù)>);
由于本設(shè)計(jì)要實(shí)現(xiàn)的功能是通過點(diǎn)擊各個(gè)按鈕就可以跳轉(zhuǎn)到相應(yīng)的窗口,所以6個(gè)按鈕就對(duì)應(yīng)6個(gè)槽函數(shù),觸發(fā)這幾個(gè)槽函數(shù)的信號(hào)為clicked()。在頭文件.h文件中添加的私有槽函數(shù)的定義如下:
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 建立信號(hào)與槽之間的關(guān)系
實(shí)現(xiàn)了用戶界面的設(shè)計(jì)之后,需要建立信號(hào)和槽之間的連接。信號(hào)和槽是一種高級(jí)接口,應(yīng)用于對(duì)象之間的通信,是Qt的核心特性,也是Qt區(qū)別于其他的重要部分。此外,信號(hào)和槽是Qt自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的C/C++語(yǔ)言,一個(gè)類要使用信號(hào)與插槽機(jī)制,就必須是從QObject或者QObject的子類繼承,而且在類的定義中必須加上Q_OBJECT宏。信號(hào)被定義在類的信號(hào)部分,而插槽則定義在public slots、protected slots 或者 private slots 部分。
這里的信號(hào)相當(dāng)于用戶所引發(fā)的事件,而槽本質(zhì)上就是一個(gè)函數(shù),它實(shí)現(xiàn)了這個(gè)動(dòng)作所對(duì)應(yīng)的功能。Qt中使用connect函數(shù)來(lái)建立信號(hào)和槽之間的鏈接。通常一個(gè)信號(hào)可以鏈接多個(gè)槽,多個(gè)信號(hào)也可以鏈接同一個(gè)槽,并且一個(gè)信號(hào)還可以與另一個(gè)信號(hào)相連接。
信號(hào)與槽的關(guān)系如圖8所示。
在主界面的設(shè)計(jì)中,通過connect()函數(shù)來(lái)完成信號(hào)與槽的連接。并且通過信號(hào)與槽的連接可以完成對(duì)界面的相互跳轉(zhuǎn),其代碼如下:
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 實(shí)現(xiàn)自定義的槽函數(shù)
在主界面的設(shè)計(jì)中,根據(jù)主界面的具體功能實(shí)現(xiàn)相應(yīng)的槽函數(shù),所以在頭文件中要自定義槽函數(shù);在主界面中切換各個(gè)窗體時(shí),可以通過show()和hide()類來(lái)完成;需要在實(shí)現(xiàn).cpp文件中添加代碼。例如,主界面中的runBotton按鈕的自定義槽函數(shù)代碼為:
void MainWindow:: on_ runButton _clicked()
{
form4.show();
this->hide();
}
其他自定義槽函數(shù)與其類似。通過上面的方法,可以實(shí)現(xiàn)主界面的設(shè)計(jì)和多窗體之間的切換。
本文提出了一種以開源的Linux為操作系統(tǒng)、ARM處理器為硬件平臺(tái)的電腦橫機(jī)上位機(jī)軟件的設(shè)計(jì)方法,并且對(duì)電腦橫機(jī)圖形用戶界面的設(shè)計(jì)進(jìn)行了詳細(xì)的研究,給出了界面設(shè)計(jì)的步驟以及界面之間的相互轉(zhuǎn)換的方法。
參考文獻(xiàn)
[1] 呂建飛,傅建中.新型電腦橫機(jī)的開發(fā)研制[J].針織工業(yè),2005,13(5):13-15.
[2] 朱文俊,鄭建林.電腦橫機(jī)編織技術(shù)[M].北京:中國(guó)紡織出版社,2011:30-31.
[3] 丁永生,石金華,萬(wàn)慶萱.針織橫機(jī)電腦控制器的設(shè)計(jì)[J].中國(guó)紡織大學(xué)學(xué)報(bào),1995,21(4):70-74.
[4] 丁林松,黃麗琴.Qt4圖形設(shè)計(jì)與嵌入式開發(fā)[M].北京:人民郵電出版社,2009:5-8.
[5] 鄭阿奇,陳超.Qt4開發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,2011:121-123.