摘 要: 通過(guò)研究電腦橫機(jī)主控系統(tǒng)的工作流程,、分析電腦橫機(jī)工作時(shí)的數(shù)據(jù)流向,,針對(duì)電腦橫機(jī)的需求,提出一種以開(kāi)源的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)說(shuō),,國(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ì),。通過(guò)研究電腦橫機(jī)控制系統(tǒng)的工作流程、橫機(jī)工作時(shí)數(shù)據(jù)的流向以及操作人員對(duì)電腦橫機(jī)上位機(jī)的需求,,提出一種上位機(jī)的設(shè)計(jì)方法,。該上位機(jī)軟件是以開(kāi)源的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ī)通過(guò)自檢檢查機(jī)器是否正常,若有異常,,則報(bào)警停機(jī),;若沒(méi)有異常則進(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所示。首先工作人員通過(guò)對(duì)樣品的研究從花型準(zhǔn)備系統(tǒng)中產(chǎn)生CNT文件和PAT文件[3],。通過(guò)上位機(jī)軟件的文件編譯判斷是否有文件的語(yǔ)法錯(cuò)誤,,若有錯(cuò)誤則顯示出來(lái),通過(guò)對(duì)文件的解析,,將文件中的CNT動(dòng)作行和PAT花樣行相互對(duì)應(yīng),,生成可以直接用于控制電腦橫機(jī)的數(shù)據(jù),將數(shù)據(jù)通過(guò)I/O模塊傳遞給DSP主控層,,再由DSP主控層傳遞給DSP機(jī)頭控制層,,接收各種數(shù)據(jù)的反饋并且通過(guò)界面顯示給操作人員。若發(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ǔ)上移植開(kāi)源可剪裁的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所示,。
文件的讀取和編譯模塊:通過(guò)USB口將花型準(zhǔn)備系統(tǒng)中所得到的花型文件讀入上位機(jī)軟件,并且進(jìn)行編譯,,檢查文件是否有語(yǔ)法錯(cuò)誤,。
文件解析模塊:生成可以直接控制電腦橫機(jī)的數(shù)據(jù),使CNT文件和PAT文件相互對(duì)應(yīng),。
編織過(guò)程的調(diào)整:對(duì)編織過(guò)程進(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è)重要部分,,通過(guò)它可以使人們更好地運(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)用戶界面的方法,,一種是通過(guò)傳統(tǒng)的編碼方式實(shí)現(xiàn)用戶界面;另一種是通過(guò)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)的功能是通過(guò)點(diǎn)擊界面上的按鈕可以切換到相應(yīng)的界面去,。其具體的設(shè)計(jì)過(guò)程如下,。
3.1 用戶界面的設(shè)計(jì)
使用designer可以快速設(shè)計(jì)出所需要的用戶界面。通過(guò)從工具欄中拖動(dòng)相應(yīng)的部件到主窗口就可以完成用戶界面的設(shè)計(jì),。通過(guò)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)的功能是通過(guò)點(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è)類(lèi)要使用信號(hào)與插槽機(jī)制,就必須是從QObject或者QObject的子類(lèi)繼承,,而且在類(lèi)的定義中必須加上Q_OBJECT宏,。信號(hào)被定義在類(lèi)的信號(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ì)中,,通過(guò)connect()函數(shù)來(lái)完成信號(hào)與槽的連接。并且通過(guò)信號(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í),,可以通過(guò)show()和hide()類(lèi)來(lái)完成;需要在實(shí)現(xiàn).cpp文件中添加代碼,。例如,,主界面中的runBotton按鈕的自定義槽函數(shù)代碼為:
void MainWindow:: on_ runButton _clicked()
{
form4.show();
this->hide(),;
}
其他自定義槽函數(shù)與其類(lèi)似,。通過(guò)上面的方法,可以實(shí)現(xiàn)主界面的設(shè)計(jì)和多窗體之間的切換,。
本文提出了一種以開(kāi)源的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ī)的開(kāi)發(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ì)與嵌入式開(kāi)發(fā)[M].北京:人民郵電出版社,2009:5-8.
[5] 鄭阿奇,,陳超.Qt4開(kāi)發(fā)實(shí)踐[M].北京:電子工業(yè)出版社,,2011:121-123.