<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM9和Linux的嵌入式打印終端系統

基于A(yíng)RM9和Linux的嵌入式打印終端系統

作者: 時(shí)間:2012-04-11 來(lái)源:網(wǎng)絡(luò ) 收藏

3.1.3 初始化端口

初始化機第一個(gè)要做的事情就是要對GPIO口進(jìn)行初始化,初始化函數如下:

static void weida_init(void){
devfs_register(); /*注冊設備驅動(dòng)*/
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);采用模塊方式加載驅動(dòng)。[2]

3.1.4 接口函數設計

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

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

open/close函數打開(kāi)/關(guān)閉文件,因為在LINUX下設備都是當作文件來(lái)操作的,所以需要open和close這兩個(gè)接口函數。

3.2 掃描儀串口的設置

移動(dòng)打印中使用到的掃描儀是串口掃描儀,這種掃描儀相對于USB接口的掃描儀來(lái)說(shuō),控制較簡(jiǎn)單,在掃描儀掃描后,可以直接從串口讀取數據。

3.2.1 串口設置[3]

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

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

3.2.2 編寫(xiě)讀取掃描儀數據函數

首先打開(kāi)設備文件,該中使用的串口為串口2,因此打開(kāi)函數為:

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

3.2.3 客戶(hù)端和服務(wù)器的socket編寫(xiě)

打印采用C/S的模式,把PC機作為服務(wù)器,開(kāi)發(fā)板作為客戶(hù)端,通過(guò)以太網(wǎng)連接??蛻?hù)端建立一個(gè)socket連接去尋找PC機上的服務(wù)程序。PC機上同時(shí)也運行一個(gè)socket用來(lái)listen請求和綁定。采用的是TCP的連接方式。

3.4 主應用程序的設計

開(kāi)發(fā)板上的應用程序Main函數注冊?xún)蓚€(gè)線(xiàn)程p1和p2,兩個(gè)全局數組c1和c2。

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

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


三維掃描儀相關(guān)文章:三維掃描儀原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>