基于 ARM 的繡花機(jī)控制系統(tǒng)設(shè)計(jì)
3.2 圖形顯示程序
進(jìn)行圖形界面(GUI)的設(shè)計(jì)同樣需要加載多媒體庫(kù) WindML,WindML 支持多線程和多任務(wù),但圖形的資源是一定的,為了防止多線程之間產(chǎn)生資源沖突,需要使用互斥信號(hào)量鎖定資源。在使用一組繪圖函數(shù)前,用 uglBatchStart(gc)通過(guò)互斥信號(hào)量鎖定圖形上下文, 圖形設(shè)備及緩沖,并隱藏光標(biāo)。繪圖操作完成后,再用 uglBatchEnd(gc)釋放被鎖定的資源, 以被其他的繪圖函數(shù)使用。以下根據(jù) WindML 的編程流程,以繪制直線為例給出一個(gè)繪圖 操作的程序:
{
UGL_GC_ID gc;
......
uglInitialize(); // 初始化
......
uglColorAlloc(devId, colorTable[GREEN].rgbColor, UGL_NULL,
colorTable[GREEN].uglColor, 1); // 配置顏色
......
gc= uglGcCreate(devId); // 創(chuàng)建圖形上下文
......
uglBatchStart(gc); // 鎖定圖形資源
uglForegroundColorSet(gc, colorTable[WHITE].uglColor); // 設(shè)置前景色 uglBackgroundColorSet(gc, colorTable[RED].uglColor); // 設(shè)置背景色 uglLineWidethSet(gc, 9); // 設(shè)定線寬
uglLine(gc, 50); // 繪制直線
uglBatchEnd(gc); // 釋放圖形資源
......
}
3.3 USB 驅(qū)動(dòng)程序
VxWorks 操作系統(tǒng)的 USB 驅(qū)動(dòng)模塊由四層組成:USB Client 模塊、USB 主驅(qū)動(dòng)、USB主控制器驅(qū)動(dòng)、USB 主控制器。最低層是 USB 主控制器(USB Host Controller),這是主系 統(tǒng)中控制每一個(gè) USB 設(shè)備的硬件部分。對(duì)于每個(gè)主控制器都需要開發(fā) USB 主控制器驅(qū)動(dòng)程 序(HCD),HCD 對(duì)主控制器芯片進(jìn)行了抽象,為上層軟件屏蔽底層硬件之間的差異。USB 主驅(qū)動(dòng)(USBD)和 HCD 之間的接口允許一個(gè)或多個(gè)底層主控制器。Wind River 的 USBD 能夠同時(shí)連接多個(gè) HCD。
USBD 是在 HCD 之上的獨(dú)立于硬件的模塊,它通過(guò)提供一組抽象的服務(wù)簡(jiǎn)化了程序員對(duì)上層 USB Client 模塊的開發(fā)工作,即為 HCD 和 USB Client 兩個(gè)模塊之間的請(qǐng)求和相應(yīng)提 供統(tǒng)一的標(biāo)準(zhǔn)接口。USB Client 模塊位于結(jié)構(gòu)圖最上層,屬于應(yīng)用程序,根據(jù)具體應(yīng)用的不 同,其內(nèi)容和功能也不同,但都要實(shí)現(xiàn)與 USBD 的接口,對(duì)由 HCD 監(jiān)測(cè)到并由 USBD 傳送 給上層應(yīng)用程序的 USB 標(biāo)準(zhǔn)要求作出適當(dāng)?shù)捻憫?yīng)。
3.4 花樣存儲(chǔ)與管理程序
在花樣存儲(chǔ)系統(tǒng)中,花樣文件是以一定的格式存入到系統(tǒng)內(nèi)存的,所以文件的格式關(guān)系到系統(tǒng)能否識(shí)別花樣。目前刺繡生產(chǎn)實(shí)際中流行的花樣文件格式有四種:DST 格式、DSB格式、T01 格式和 T03 格式。
當(dāng)不同格式的花樣文件被讀入到 FLASH 之后,需要對(duì)它們進(jìn)行解析,轉(zhuǎn)換成內(nèi)部格式 的數(shù)據(jù)結(jié)構(gòu),同時(shí)對(duì)花樣數(shù)據(jù)進(jìn)行各種運(yùn)算和處理,包括旋轉(zhuǎn)、放大縮小、拉伸、鏡像等。 花樣處理過(guò)程就是系統(tǒng)調(diào)用接口函數(shù)實(shí)現(xiàn)處理任務(wù)。
3.5 串口通信程序
由于串口傳輸涉及到上位機(jī) CPU 和下位機(jī) CPU 之間的通信,因此作出命名約定:上位機(jī) CPU 稱為“左”側(cè),代碼存放在以 left_*開頭的文件中,下位機(jī) CPU 稱為“右”側(cè),代 碼存放在以 right_*開頭的文件中。串口模塊結(jié)構(gòu)大體可分為控制層、傳輸層和驅(qū)動(dòng)程序, 串口傳輸層的作用在于向上層系統(tǒng)提供透明而高效的傳輸接口,用于兩個(gè) CPU 之間的數(shù)據(jù) 交互。
4 結(jié)語(yǔ)
本文根據(jù) ARM 處理器的選型原則,選擇 LH7A404 和 LPC2214 為上下位機(jī) CPU 芯片;將繡花機(jī)控制系統(tǒng)的硬件分為上位機(jī)和下位機(jī)兩部分,在全面考慮系統(tǒng)功能需求的基礎(chǔ)上,圍繞已選定的上下位機(jī) CPU 確定了硬件框架。詳細(xì)設(shè)計(jì)了電源電路、復(fù)位電路、存儲(chǔ)器接 口電路、鍵盤與顯示電路等具體電路。然后按照上位機(jī)和下位機(jī)的層次構(gòu)建了繡花機(jī)控制系 統(tǒng)的軟件框架,以 VxWorks 操作系統(tǒng)為平臺(tái),在 Tornado 開發(fā)環(huán)境下設(shè)計(jì)了鍵盤輸入、圖形顯示、USB 驅(qū)動(dòng)、花樣存儲(chǔ)與管理等模塊程序。
本文作者創(chuàng)新點(diǎn):將基于 ARM 嵌入式系統(tǒng)技術(shù)引入繡花機(jī)控制系統(tǒng),詳細(xì)設(shè)計(jì)了繡花機(jī)控制系統(tǒng)的軟硬件系統(tǒng),具有技術(shù)先進(jìn)、功能精簡(jiǎn)、高性價(jià)比等特點(diǎn)。
評(píng)論