當前位置:首頁 > 單片機 > 單片機
[導讀]1 嵌入式打印終端系統(tǒng) 的設計原理 嵌入式打印終端原理連接圖如圖1所示。主要由開發(fā)板、主機、打印機和掃描儀四部分組成。主機是一臺PC機。開發(fā)板采用的是三星公司S3C2

1 嵌入式打印終端系統(tǒng) 的設計原理                                      
  
 

嵌入式打印終端原理連接圖如圖1所示。主要由開發(fā)板、主機、打印機和掃描儀四部分組成。主機是一臺PC機。開發(fā)板采用的是三星公司S3C2410開發(fā)板,ARM9的核,跑的是2.4內核版本的嵌入式Linux操作系統(tǒng)。掃描儀為超市等用的手持掃描儀。再加一臺微型打印機接在開發(fā)板的GPIO口上。

工作流程為:開發(fā)板將掃描儀的數據從串口讀出,然后通過網口將數據發(fā)送給主機進行檢索處理。開發(fā)板等待直至接收到主機處理完畢的數據后轉發(fā)給打印機,將信息打印出來。

2 嵌入式打印終端系統(tǒng)的硬件設計

2.1硬件開發(fā)平臺S3C2410結構

三星公司的S3C2410開發(fā)板用的是32位RISC架構基于ARM920T核,其增強的MMU單元、AMBA總線,可以支持WinCE、 Linux等實時操作系統(tǒng)。片上資源豐富接口眾多,包含LCD控制器、USB Host、CS9800A網絡芯片、SD卡、3個UART通用異步串行口等設備接口。[1]

2.2打印機與開發(fā)板接口電路的設計

我們使用的微型打印機使用的是并行接口。由于開發(fā)板上沒有提供并口,所以必須自己設計一個板卡接口電路,以連接打印機的并口和我們的嵌入式開發(fā)板。查看S3C2410的電路原理圖,由于此系統(tǒng)不需要用到LCD屏,可以將板子上用于LCD連接的GPIO口進行改造,根據ARM9core的LCD電路引腳和板上的LCD插槽定義,如圖2,找到了14根空閑的GPIO口:

gpio_c8~gpio_d15,gpi0_d0~gpio_d4。用這14根通用輸入輸出口連接微型打印機的并口。

 

同時查看打印機的電路手冊和管腳定義,選用其STB選通線、ACK回答脈沖線、BUSY線、DATA0-DATA7數據線來與開發(fā)板的GPIO口相連,并初始化高低電平值。為了避免接線過緊互相干擾,制作一個接口板定義各引腳連接如圖3所示。

至此,硬件的電路設計及連接基本完成。

 

3嵌入式打印終端系統(tǒng)的軟件設計

軟件平臺采用的是基于2.4內核的嵌入式Linux系統(tǒng)。采用的交叉編譯器工具包為CROSS2.95.3.tgz(包含arm-linux-gcc等)。

3.1 打印機驅動的編寫

Linux的設備分為塊設備,字符設備和網絡設備,該系統(tǒng)使用到的微型打印機屬于字符設備,下面將具體說明如何設計打印機驅動。

3.1.1  定義設備名

#define DEVICE_NAME weida_printer

3.1.2  模塊函數設計

在該系統(tǒng)中,采用模塊化加載驅動程序的方法,因此必須實現(xiàn)模塊的初始化函數和卸載函數。采用devfs方式注冊打印機。

初始化函數weida_init通過devfs_register函數向系統(tǒng)注冊設備。

函數原型devfs_register(NULL, DEVICE_NAME, DEVFS_FL_DEFAULT, 0, 0, S_IFCHR | S_IRUSR | S_IWUSR,  &weida_printer_fops, NULL);

其中,DEVICE_NAME為主設備名,weida_printer_fops為定義的一個數據結構,用來實現(xiàn)的文件操作,包括open、close、write等。

3.1.3  初始化打印端口

初始化打印機第一個要做的事情就是要對GPIO口進行初始化,初始化函數如下:

static void weida_init(void){
devfs_register(); /*注冊設備驅動*/
set_gpio_ctrl(WEIDA_STB|GPIO_PULLUP_DIS|GPIO_MODE_OUT); /*設置STB口*/
    write_gpio_bit(WEIDA_STB,1);
    weida_printer_io_port_init();
/*設置其它IO口,以及賦初值*/ }

其中,WEIDA_STB為連接打印機選通口初始化為高電平,GPIO_PULL_DIS是設置是否需要上拉電阻,GPIO_MODE_OUT 設置GPIO口為輸出口。最后使用module_init(weida_printer_init);采用模塊方式加載驅動。[2]

3.1.4  接口函數設計

ioctl()函數主要完成打印機字體、行距等參數的設置,在設計過程中必須解決用戶數據和內核數據之間如何傳遞。從用戶態(tài)讀取數據,然后在內核態(tài)運行,可以使用copy_from_user函數來完成傳遞數據。

weida_printer_write ( )先對打印機是否在線,是否忙,是否準備好做進一步的判斷,然后再進行打印。在打印的時候要注意每發(fā)一個字符要延遲150毫秒,因為如果打印數據發(fā)得過快打印機的來不急處理,所以要設置延時。

open/close函數打開/關閉文件,因為在LINUX下設備都是當作文件來操作的,所以需要open和close這兩個接口函數。

3.2 掃描儀串口的設置

嵌入式移動打印終端中使用到的掃描儀是串口掃描儀,這種掃描儀相對于USB接口的掃描儀來說,控制較簡單,在掃描儀掃描后,可以直接從串口讀取數據。

3.2.1  串口設置[3]

設置串口速率函數:set_speed(int fd, int speed),其中fd 為打開的設備文件,speed為速率。

設置串口參數:set_parity(int fd,int databits,int stopbits,int parity),databits為有多少個數據位,stopbit為設置多少個停止位,parity為奇偶校驗位設置。設置串口波特率為9600,數據位為8位,一位停止位,沒有校驗位。

3.2.2  編寫讀取掃描儀數據函數

首先打開設備文件,該系統(tǒng)中使用的串口為串口2,因此打開函數為:

open(“/dev/ttyS1”,O_RDWR|O_NONBLOCK|O_NDELAY);其中,O_RDWR表示可讀可寫,O_NONBLOCK表示非堵塞模式,O_NDELAY表示沒有延遲,立即發(fā)出去。

3.2.3 客戶端和服務器的socket編寫

嵌入式打印終端采用C/S的模式,把PC機作為服務器,開發(fā)板作為客戶端,通過以太網連接??蛻舳私⒁粋€socket連接去尋找PC機上的服務程序。PC機上同時也運行一個socket用來listen請求和綁定。采用的是TCP的連接方式。

3.4 主應用程序的設計

開發(fā)板上的應用程序Main函數注冊兩個線程p1和p2,兩個全局數組c1和c2。

線程p1將從串口讀到的數據放入c1中,然后sent socket直接從c1中取走數據發(fā)送給服務器。線程p2負責將received socket數據放入c2數組中,然后直接從c2取走數據交給打印機去打印。

這里對線程使用了兩個信號量,并初始化為:sem_init(&sem1,0,1); sem_init(&sem2,0,0); [4]

兩個線程的核心代碼如下:
void thread1(void) {
    打開串口;設置串口;建立連接;
    while(1)    {
        sem_wait(&sem1);
        從串口讀書據;
用clinetsocket發(fā)送出去;
        sem_post(&sem2);}
}
void thread2(void)  {
    打開打印機設備;
    while(1)    {
        sem_wait(&sem2);
        接收數據;扔給打印機;
        sem_post(&sem1);    }
}

如此可以使兩個線程得以同步運行,并可以執(zhí)行多次掃描和打印任務。
 
本文作者創(chuàng)新點及其經濟效益:本系統(tǒng)具有移動性強,功耗低等特點,而且與以往傳統(tǒng)的用PC 機實現(xiàn)的打印終端相比,還具有低成本優(yōu)勢。能廣泛地應用于超市收銀系統(tǒng),銀行自動存取款機,等各種工業(yè)領域。筆者試驗了一下把802.11g的無線網卡移植到開發(fā)板上,并成功實現(xiàn)了和主機的無線通信,使得該系統(tǒng)更加便攜。根據對南京各大學校區(qū)內超市的研究調查,此系統(tǒng)估計可產生50萬元的經濟效益。

趙遠東導師評論:該同學在書寫這篇文章的過程中,參考大量中英文文獻資料,通過對ARM開發(fā)板的結構、設計等方面的認知,了解Linux驅動的基本框架,設計出了接口板電路實現(xiàn)了移動終端打印功能,有一定的創(chuàng)新思想和經濟價值。

參考文獻:
[1]  SAMSUNG. S3C2410A 200MHz&266MHz 32-BIT RISC MICROPROCESSOR USER’S MANUAL [EB/OL]. http://www.samsung.com/, 2004-03. 35,367-408
[2]  CORBET J, RUBINI A. LINUX設備驅動程序(第三版)[M]. 中國電力出版社, 2006. 46-74 TP316.81
[3]  孫瓊. 嵌入式LINUX應用程序開發(fā)詳解[M]. 人民郵電出版社, 2006. 184-191 TP316.89
[4]  田家林,陳利學,寇向輝. LINUX嵌入式操作系統(tǒng)在ARM上的移植[J]. 微計算機信息, 2007,4-2:P60-62.
 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉