摘 要:MiniGUI是一個比較成熟的圖形用戶接口支持系統(tǒng),已被廣泛應(yīng)用于工業(yè)控制系統(tǒng)中。在工業(yè)電腦繡花機控制系統(tǒng)中開發(fā)出一個優(yōu)良的圖形界面越來越重要。在對以上問題研究的基礎(chǔ)上,討論了基于MiniGUI工業(yè)電腦繡花機控制系統(tǒng)HMI的實現(xiàn),同時簡單介紹了MiniGUI在基于ARM9和Linux的電腦繡花機控制系統(tǒng)的移植過程。
關(guān)鍵詞:工業(yè)電腦繡花機;ARM9; MiniGUI圖形系統(tǒng);人機交互界面
中圖分類號:TP273 文獻標識碼:B
文章編號:1004-373X(2008)11-184-03
Research and Realization of Industrial Embroidery Sewing
Machine Control System Based on MiniGUI
ZHANG Xiuting,XIA Luyi
(School of Information Engineering,Taiyuan University of Technology,Taiyuan,030024,China)
Abstract:MiniGUI is a more mature graphical user interface support system,and has been widely used in industrial control systems.How to develop an excellent graphical interface become increasingly important in the industrial embroidery sewing machine control system.In order to solve the problem above,it discusses the design and implementation of graphical interface of industrial embroidery sewing machine control system based on MiniGUI,it describes the process of how to port and cross compile MiniGUI to industrial embroidery sewing machine control.System based on ARM9 and embedded Linux operating system.
Keywords:industrial embroidery sewing machine;ARM9;MiniGUI;HMI
1 引 言
電腦繡花機是隨著電子、計算機控制技術(shù)、精密機械的發(fā)展和應(yīng)用而逐漸發(fā)展起來的一種高自動化、高效率的刺繡設(shè)備。隨著電腦刺繡機行業(yè)的迅速發(fā)展,配備一個優(yōu)良的圖形用戶界面, 使產(chǎn)品和用戶能進行友好可靠的信息交互,已成為開發(fā)工作中非常緊迫的要求。特別是隨著硬件條件的提高,控制系統(tǒng)對高性能、高可靠、輕量級GUI的需求越來越迫切。MiniGUI就是一個為基于Linux的實時嵌入式系統(tǒng)提供一個高性能、高可靠、輕量級的圖形用戶界面支持系統(tǒng)。
本文正是針對電腦繡花機這一市場需求,將MiniGUI用于工業(yè)電腦繡花機控制系統(tǒng)中實現(xiàn)人機交互界面。在不明顯增加成本的基礎(chǔ)上,改進了工業(yè)電腦繡花機控制系統(tǒng)的性能比,并縮短了開發(fā)周期,為用戶提供了一個方便、簡潔、美觀的可視化操作界面。
2 工業(yè)電腦繡花機工作原理
電腦繡花機首先通過磁盤或U 盤接口電路讀出編程打版好的花樣文件,然后通過操作面板上的按鍵或者觸摸屏設(shè)置好主軸電機轉(zhuǎn)速一系列參數(shù),再發(fā)出主軸電機運動的控制命令。
電腦繡花機工作時,主軸電機通過傳動輪帶動針桿,再由針桿帶著線上下運動做刺繡動作。X,Y軸步進電機帶動繡框在X,Y軸方向運動,刺繡品隨繡框運動, 從而刺繡出圖案。當需要換色時,換色電機轉(zhuǎn)動,將穿有其他顏色線的針換上,繼續(xù)刺繡。當刺繡完畢時,剪線電機帶動剪刀將線剪斷。
3 工業(yè)電腦繡花機控制系統(tǒng)
3.1 工業(yè)電腦繡花機硬件電路選型
硬件平臺是基于三星公司ARM9內(nèi)核S3C2410的芯片開發(fā)的。硬件電路的主要設(shè)計思想是以S3C2410為主處理器,F(xiàn)PGA為協(xié)處理器。
本系統(tǒng)采用的S3C2410 為三星公司的,選用此芯片的理由為:
(1) 有32 kB的FLASH 程序存儲器,544 B的雙口RAM和2 kB的單口RAM;
(2) 運行速度快,最高時鐘頻率可達到40 MHz,運算精度高;
(3) 有控制電機專用的PWM調(diào)制口;
(4) 本芯片具有2個16位的加密位,可以使系統(tǒng)程序不被破解。
3.2 工業(yè)電腦繡花機控制系統(tǒng)功能介紹
工業(yè)電腦繡花機控制系統(tǒng)要實現(xiàn)的主要功能如下:
(1) I/O設(shè)備輸入輸出控制包括人機交互界面部分和軟磁盤和U盤輸入輸出花樣部分。
(2) Z軸伺服電機速度控制,主軸控制要求轉(zhuǎn)速可調(diào)并且能夠穩(wěn)定轉(zhuǎn)速,最高轉(zhuǎn)速達到1 000轉(zhuǎn)/min。
(3) X,Y軸混合式步進電機的速度和位置控制,步進電機在規(guī)定的時間內(nèi)完成發(fā)出的脈沖數(shù),精確的進行移位,步進電機必須與主軸電機充分的協(xié)調(diào)好。
(4) 換色電機控制,進行換色操作。
(5) 剪線電機控制,在正確的位置完成剪線。
(6) 斷線檢測,接口電路可判斷出那個針位出現(xiàn)斷線。
由以上基本控制對象和功能,設(shè)計出控制系統(tǒng)架構(gòu),如圖1所示,圖中雙向箭頭表示控制信號是雙向的,單向箭頭表示控制信號單向。
圖1 工業(yè)電腦繡花機控制系統(tǒng)架構(gòu)圖
4 MiniGUI的體系結(jié)構(gòu)
MiniGUI是由北京飛漫軟件技術(shù)有限公司開發(fā)的,是一個能廣泛應(yīng)用于各種嵌入式系統(tǒng)的高效、可靠、可定制、小巧靈活的圖形用戶接口支持系統(tǒng)。
從整體結(jié)構(gòu)上看,MiniGUI是分層設(shè)計的,層次結(jié)構(gòu)如圖2所示。
圖2 MiniGUI的分層體系結(jié)構(gòu)
在最底層,GAL (圖形抽象層)和IAL(輸入抽象層)定義了一組不依賴于任何特殊硬件的抽象接口,pthread用于提供內(nèi)核級線程支持的C函數(shù)庫;中間層是MiniGUI的核心層,包括窗口系統(tǒng)必不可少的各個模塊;最頂層是API編程接口。MiniGUI引入GAL和IAL 接口使用戶可在X Windows 上開發(fā)和調(diào)試MiniGUI程序,通過交叉編譯讓MiniGUI應(yīng)用程序運行在嵌入式硬件平臺上。
5 基于MiniGUI的電腦繡花機控制系統(tǒng)的控制界面的設(shè)計與實現(xiàn)
5.1 電腦繡花機控制界面框架設(shè)計
電腦繡花機控制系統(tǒng)的控制界面提供輸入和輸出命令與狀態(tài)和顯示當前實時繡花狀態(tài)、信息提示及機械故障提示等。電腦繡花機控制系統(tǒng)的人機交互控制界面主程序有內(nèi)存花樣管理、機器參數(shù)設(shè)置、U盤、磁盤花樣管理、輔助設(shè)置、幫組提示5個子程序,主控程序首先進入主界面等待觸摸屏輸入,當有消息進入時,根據(jù)命令鍵分析結(jié)果選擇進入相應(yīng)的子程序,子程序執(zhí)行結(jié)束以后再回到主界面。人機交互控制界面框架結(jié)構(gòu)如圖3。
圖3 人機交互控制界面框架圖
5.2 電腦繡花機控制系統(tǒng)的主控界面應(yīng)用程序設(shè)計
MiniGUI使用消息驅(qū)動作為應(yīng)用程序的創(chuàng)建構(gòu)架,在消息驅(qū)動的應(yīng)用程序中,窗口之間、控件之間都通過消息通信。當用戶通過觸摸屏進行操作時,系統(tǒng)的消息循環(huán)隊列中會產(chǎn)生相應(yīng)的消息。根據(jù)消息中的窗口句柄,系統(tǒng)將消息發(fā)送到目標窗口,MiniGUI調(diào)用窗口過程函數(shù)來響應(yīng)。電腦繡花機主控界面應(yīng)用程序流程如圖4所示。
圖4 主控程序流程圖
5.3 電腦繡花機控制界面實現(xiàn)
MiniGUI 通過窗口系統(tǒng)來管理應(yīng)用程序在屏幕上的顯示,包含三種窗口類型:主窗口、對話框和控件。每一個MiniGUI 的運用程序一般都要創(chuàng)建一個主窗口或非模態(tài)對話框,作為應(yīng)用程序的主界面, 然后在主窗口中創(chuàng)建一些控件來構(gòu)成整個圖形用戶界面的框架。基于MiniGUI設(shè)計與實現(xiàn)的界面如圖5所示。
圖5 工業(yè)電腦繡花機主控界面
其中,主界面的主要功能是當用戶設(shè)置好一系列參數(shù)后顯示刺繡的實時走線、刺繡進度及機械故障提示。另外,在繡花過程中顯示繡花信息提示如當前針的位置、換色順序等;
內(nèi)存花樣管理界面主要是對由磁盤軟盤或者U盤輸入到內(nèi)存的花樣進行操作包括拼接分割花樣、內(nèi)存花樣檢測等;
U盤、磁盤管理界面功能主要是將從網(wǎng)絡(luò)下載到磁盤或者U盤的花樣輸入到內(nèi)存中并對其進行操作;
機器參數(shù)設(shè)置界面功能是對即將刺繡的花樣進行參數(shù)設(shè)置如是否循環(huán)繡作、反復(fù)刺繡次數(shù)、斷線檢測設(shè)置等;
輔助設(shè)置模塊界面是對電腦繡花機硬件進行設(shè)置包括對液晶顯示器、CPU、時鐘、內(nèi)存、FLASH、勾線剪線扣線電磁鐵檢測、電機檢測等;
幫助提示界面主要是提供刺繡過程中的一些實時幫助信息提示。
6 MiniGUI在工業(yè)電腦繡花機控制系統(tǒng)的移植
6.1 MiniGUI在PC機上環(huán)境搭建
首先需要一個Linux環(huán)境,安裝的是 RedHat 9.0,圖形系統(tǒng)選用的是開源版本MiniGUI 1.3.3。
安裝步驟如下:
(1) 環(huán)境準備 包括庫文件、資源包、配套示例程序包、綜合演示程序;
(2) 安裝庫文件和資源。
首先,安裝庫文件。解壓縮庫文件軟件包并進入相應(yīng)的目錄下配置、編譯和安裝 libminigui,其中命令如下:
[root@CCC libminigui-str-1.3.3]# ./configure
[root@CCC libminigui-str-1.3.3]# make
[root@CCC libminigui-str-1.3.3]# make install
其次,安裝資源包包括運行MiniGUI應(yīng)用程序需要的基本字體、位圖及鼠標光標等。
[root@CCC minigui-res-1.3.3]# make install
(3) 安裝例子包并行Demo程序。
圖6是運行于虛擬機上的例子程序。
圖6 運行于虛擬機上的例子程序
6.2 搭建交叉編譯環(huán)境
硬件平臺是以S3C2410ARM9處理器為核心器件。在Linux操作系統(tǒng)中移植MiniGUI 的步驟如下:
建立自己的根文件系統(tǒng),安裝交叉編譯工具arm-Linux-gcc3.4.1,安裝庫文件zlib,png,jpeg,libttf。
編譯程序結(jié)束后,把編譯好的庫文件和資源文件拷貝到ramdisk 的/user/lib 目錄下,同時修改配置文件MiniGUI.cfg( 配置環(huán)境參數(shù)),并放其到目標板的/etc 目錄下。然后使用相關(guān)的工具生成目標映像,再下載到目標板上運行。
6.3 圖形引擎和輸入引擎的移植
用于實現(xiàn)抽象接口的“圖形引擎”和“輸入引擎”的移植是MiniGUI移植到操作系統(tǒng)上的關(guān)鍵。由于我們采用嵌入式Linux作為工業(yè)電腦繡花機控制系統(tǒng)的操作系統(tǒng),圖形引擎可以通過FrameBuffer獲得。這樣,MiniGUI 就可以使用自帶的fbcon作為圖形引擎進行圖像顯示。
相對圖形來講,由于嵌入式設(shè)備沒有統(tǒng)一的輸入設(shè)備接口。因此,輸入引擎的移植顯得更為重要。通過配置選項或者宏,指定MiniGUI 使用console輸入引擎,可以指定[system]段中的運行時配置選項ialengine=console。本文中的工業(yè)電腦繡花機采用觸摸屏作為主要輸入設(shè)備,因此需要自己編寫相應(yīng)的輸入引擎代碼。
首先,定義觸摸屏x,y的絕對坐標值unsigned short px=0;unsigned short py=0。其次,需要定義一個結(jié)構(gòu)體來從觸摸屏的設(shè)備文件(/dev/event0)中獲取數(shù)據(jù),該結(jié)構(gòu)體定義如下:
struct inputevent {
struct timeval time;// 觸摸屏被點擊的間隔時間
unsigned short type;//報告觸摸屏的狀態(tài),3表示獲得觸摸屏的狀態(tài)信息
unsigned short code;{//報告觸摸屏的坐標,0是獲得x坐標,1是獲得y坐標的值
long value;
}Point;
然后在gettouchkey()函數(shù)中通過以下代碼獲得觸摸屏的狀態(tài)信息:
fd = open(\"/dev/input/event0\",0,0);
fcntl(fd,F(xiàn)SETFL,F(xiàn)NDELAY);
int ret = read(fd,Point,sizeof Point);/* 從觸摸屏的設(shè)備文件(/dev/ event0)中獲取數(shù)據(jù)*/
if((Point.type==0x03)(Point.code==0x00))
{
px=Point.value-ADOffset;
}
else if((Point.type==0x03)(Point.code==0x01))
{
py=Point.value-ADOffset;
}
pthreadmutexunlock(mutex);
最后通過getkey 和gettouchkey 等函數(shù)將獲得的狀態(tài)信息通過INPUT 結(jié)構(gòu)體傳遞給MiniGUI應(yīng)用程序。
7 結(jié) 語
MiniGUI已經(jīng)被廣泛應(yīng)用于諸多行業(yè)中,包括數(shù)控系統(tǒng)、手持信息終端產(chǎn)品、DVR系統(tǒng)等。實踐表明,MiniGUI高效、穩(wěn)定、占用資源少。本文將MiniGUI作為電腦繡花機的圖形用戶界面,實現(xiàn)了數(shù)據(jù)管理、觸摸屏輸入、動態(tài)顯示等多種功能,使得操作更簡單更人性化。MiniGUI作為工業(yè)電腦繡花機控制系統(tǒng)的圖形系統(tǒng),具有廣闊的應(yīng)用前景。
參 考 文 獻
[1]魏永明.MiniGUI 編程指南[S].北京飛漫軟件技術(shù)有限公司,2006.
[2]魏永明.MiniGUI 用戶手冊[S].北京飛漫軟件技術(shù)有限公司,2006.
[3]魏永明.MiniGUI 技術(shù)白皮書[S].北京飛漫軟件技術(shù)有限公司,2006.
作者簡介 張秀亭 女,1981年出生,山東聊城人,碩士研究生。主要從事單片機控制技術(shù)和嵌入式系統(tǒng)方面的研究。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。