freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm9和linux的嵌入式打印終端系統(tǒng)-在線瀏覽

2024-09-20 14:34本頁面
  

【正文】 。如果選擇購買其他公司已有的開發(fā)板,首先要看該開發(fā)板是否穩(wěn)定,其次要看該開發(fā)板是否能夠提供所需的軟件,比如各個部件的驅(qū)動;再次要看開發(fā)板的售后支持。由于開發(fā)板上沒有提供并口,所以必須自己設(shè)計一個板卡接口電路,以連接打印機的并口和我們的嵌入式開發(fā)板。用這14根通用輸入輸出口連接微型打印機的并口。為了避免接線過緊互相干擾,制作一個接口板定義各引腳連接如圖3所示。 圖3 打印機并口與開發(fā)板GPIO口接口板設(shè)計圖3 嵌入式打印終端系統(tǒng)的軟件設(shè)計。 嵌入式系統(tǒng)是一個軟/硬件相結(jié)合的系統(tǒng),硬件好比人的身體,而運行在其上的軟件則好比人的靈魂。在整個軟件選型中,要特別重視兩個方面的因素: 運行其上的嵌入式操作系統(tǒng):嵌入式操作系統(tǒng)是整個軟件的核心和基礎(chǔ),的功能的強大與否直接影響后面整個系統(tǒng)的設(shè)計,因此必須加以重視。通常來說,各個嵌入式開發(fā)板提供商,在其嵌入式開發(fā)板上會提供已經(jīng)移植好的的幾個嵌入式操作系統(tǒng),這些操作系統(tǒng)通常為嵌入式Linux、Win CE、Vx Works和u CosII。而Vx Works由于較昂貴的使用費用,在中小型公司中使用也較少。 軟件驅(qū)動支持:由于不同的嵌入式開發(fā)板上提供的接口也各不相同,因此Linux內(nèi)核源碼包不可能提供所有外設(shè)接口的底層驅(qū)動。而底層驅(qū)動的開發(fā)是整個系統(tǒng)設(shè)計中比較耗時的工作,所以用戶在選擇開發(fā)板時,盡量選擇已提供自己所需要的底層驅(qū)動的開發(fā)板,這樣可以縮短項目的開發(fā)周期,減少項目投資,提高整個產(chǎn)品的競爭力。 定義設(shè)備名define DEVICE_NAME weida_printer 模塊函數(shù)設(shè)計在該系統(tǒng)中,采用模塊化加載驅(qū)動程序的方法,因此必須實現(xiàn)模塊的初始化函數(shù)和卸載函數(shù)。初始化函數(shù)weida_init通過devfs_register函數(shù)向系統(tǒng)注冊設(shè)備。weida_printer_fops, NULL)。 初始化打印端口初始化打印機第一個要做的事情就是要對GPIO口進(jìn)行初始化,初始化函數(shù)如下:static void weida_init(void){devfs_register()。 /*設(shè)置STB口*/ write_gpio_bit(WEIDA_STB,1)。/*設(shè)置其它IO口,以及賦初值*/ }其中,WEIDA_STB為連接打印機選通口初始化為高電平,GPIO_PULL_DIS是設(shè)置是否需要上拉電阻,GPIO_MODE_OUT 設(shè)置GPIO口為輸出口。采用模塊方式加載驅(qū)動。編寫如下簡單程序測試代碼?! ? char *data=“Hello,wel to use weida printer!“。 //打開/dev/weida_printer設(shè)備   if(weida_fd0){   perror(“open device buttons”)?!   ret=write(weida_fd,data,strlen(data))?! octl(weida_fd,WEIDA_IOCSLINESPACE,1)?! et=write(weida_fd,data,strlen(data))?! lose(weida_fd)。   } ioctl()函數(shù)主要完成打印機字體、行距等參數(shù)的設(shè)置,在設(shè)計過程中必須解決用戶數(shù)據(jù)和內(nèi)核數(shù)據(jù)之間如何傳遞。 weida_printer_write ( )先對打印機是否在線,是否忙,是否準(zhǔn)備好做進(jìn)一步的判斷,然后再進(jìn)行打印。open/close函數(shù)打開/關(guān)閉文件,因為在LINUX下設(shè)備都是當(dāng)作文件來操作的,所以需要open和close這兩個接口函數(shù)。 串口設(shè)置 設(shè)置串口速率函數(shù):set_speed(int fd, int speed),其中fd 為打開的設(shè)備文件,speed為速率。設(shè)置串口波特率為9600,數(shù)據(jù)位為8位,一位停止位,沒有校驗位。  int status?! cgetattr(fd,amp。  for(i=0。i++){  if(speed==name_arr[i]){  tcflush(fd,TCIOFLUSH)。Opt,speed_arr[i])。Opt,speed_arr[i])。Opt)?! eturn?!   }  }   set_partity(int fd,int databits,int stopbits,int partity)用于設(shè)置串口的通信參數(shù),其中databits設(shè)置數(shù)據(jù)位位數(shù),stopbit設(shè)置停止位位數(shù),partity設(shè)置奇偶校驗位。   if(tcgetattr(fd,amp?! eturn FALSE。=~CSIZE?! ? break。   break?! ? return FALSE?! ?~INPCK。  case ‘o’:  case ’O’:   |=(PARODD|PARENB)?! ? break?! mp?! =INPCK?! ase ‘s’:  case ’S’:   amp?! mp。   break?! ? return FALSE。=~CSTOPB。  case 2:   |=CSTOPB?! efault:  fprintf(stderr,”Unsupported stop bits\n”)?!   編寫讀取掃描儀數(shù)據(jù)函數(shù) 首先打開設(shè)備文件,該系統(tǒng)中使用的串口為串口2,因此打開函數(shù)為:open(“/dev/ttyS1”,O_RDWR|O_NONBLOCK|O_NDELAY)。 客戶端和服務(wù)器的socket編寫 嵌入式打印終端采用C/S的模式,把PC機作為服務(wù)器,開發(fā)板作為客戶端,通過以太網(wǎng)連接。PC機上同時也運行一個socket用來listen請求和綁定。 主應(yīng)用程序的設(shè)計 開發(fā)板上的應(yīng)用程序Main函數(shù)注冊兩個線程p1和p2,兩個全局?jǐn)?shù)組c1和c2。線程p2負(fù)責(zé)將received socket數(shù)據(jù)放入c2數(shù)組中,然后直接從c2取走數(shù)據(jù)交給打印機去打印。sem1,0,1)。sem2,0,0)。sem1)。sem2)。sem2)
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1