904953426用于mini2440與周立功非接觸式ic卡模塊的通信_(tái)第1頁
904953426用于mini2440與周立功非接觸式ic卡模塊的通信_(tái)第2頁
904953426用于mini2440與周立功非接觸式ic卡模塊的通信_(tái)第3頁
904953426用于mini2440與周立功非接觸式ic卡模塊的通信_(tái)第4頁
904953426用于mini2440與周立功非接觸式ic卡模塊的通信_(tái)第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一個(gè)在linux下的串口程序例子用于mini2440與周立功非接觸式ic卡模塊的通信頭文件#include #include #include #include #include #include #include #include #include #include #include class cardreader : public qthreadq_objectpublic:cardreader();int fd_port;int open_port(int comport);int set_opt(int fd,int nspeed, int nbits, char nevent, i

2、nt nstop);int initcardreader(int fd_port);unsigned int checkcard(int fd_port);unsigned int readcardid (int fd_port);int beep(int fd_port);void autorun(void);void sendmessage(int data);signals:void message(qstring);protected:private:;cpp文件#include cardreader.hcardreader:cardreader()int cardreader:ope

3、n_port(int comport)/* 打開端口 成功返回文件描述符 失敗返回0*/*open com port*/* comport=1 open com1 comport=2 open com2 comport=3 open com3*/char *dev=/dev/ttysac0,/dev/ttysac1,/dev/ttysac2;longvdisable;int fd;if (comport=1)fd = open( /dev/ttysac0, o_rdwr|o_noctty|o_ndelay);if (0 = fd)emit message(open port error 1);

4、return(0); else if(comport=2)fd = open( /dev/ttysac1, o_rdwr|o_noctty|o_ndelay);if (0 = fd) emit message(open port error 1);return(0);else if (comport=3)fd = open( /dev/ttysac2, o_rdwr|o_noctty|o_ndelay);if (0 = fd) emit message(open port error 1);return(0);if(fcntl(fd, f_setfl, 0)1000)/等待超時(shí)則退出retur

5、n 0; while (readnum=0);if (buffer0!=0x06)return 0;/發(fā)送 0x00 0x52 0x00 0xad 0x03/usleep(40*1000);/等待40msbuffer0=0x00;buffer1=0x52;buffer2=0x00;buffer3=0xad;buffer4=0x03;write(fd_port,buffer,5);/等待0x20回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_

6、port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1500)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x20)return 0;/發(fā)送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x00 0xff 0x03回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port

7、,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x00)|(buffer1!=0x00)|(buffer2!=0x00)|(buffer3!=0xff)|(buffer4!=0x03)return 0;/發(fā)送開始符 0x20buffer0=0x20;write(fd_port,buffer,1);/等待0x06回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer)

8、;/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x06)return 0;/發(fā)送 00 4c 08 00 00 ff ff ff ff ff ff bb 03buffer0=0x00;buffer1=0x4c;buffer2=0x08;buffer3=0x00;buffer4=0x00;buffer5=0xff;buffer6=0xff;buff

9、er7=0xff;buffer8=0xff;buffer9=0xff;buffer10=0xff;buffer11=0xbb;buffer12=0x03;write(fd_port,buffer,13);/等待0x20回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (read

10、num=0);if (buffer0!=0x20)return 0;/發(fā)送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x00 0xff 0x03回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=

11、0);if (buffer0!=0x00)|(buffer1!=0x00)|(buffer2!=0x00)|(buffer3!=0xff)|(buffer4!=0x03)return 0;return 1;unsigned int cardreader:checkcard(int fd_port)/* 檢查天線范圍內(nèi)有無卡,有返回1,無或失敗返回0 */unsigned char buffer32;int readnum;unsigned int timer;memset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0/發(fā)送開始符 0x20buffer0=0x20;

12、write(fd_port,buffer,1);/等待0x06回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待40mstimer=0;memset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出 /emit message(card found error 1);return 0; while (readnum=0);if (buffer0!=0x06)emit message(card

13、found error 2);return 0;/發(fā)送 00 41 01 01 be 03buffer0=0x00;buffer1=0x41;buffer2=0x01;buffer3=0x01;buffer4=0xbe;buffer5=0x03;write(fd_port,buffer,6);/等待0x20回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer

14、+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x20)emit message(card found error 3);return 0;/發(fā)送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x02 0x04 0x00 0xf9 0x03回應(yīng)usleep(50*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,

15、sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出emit message(card found error 4);return 0; while (readnum=0);if (buffer0!=0x00)|(buffer1!=0x00)|(buffer2!=0x02)|(buffer3!=0x04)|(buffer4!=0x00)|(buffer5!=0xf9)|(buffer6!=0x03)/emit message(card found error 5);return 0;return 1;unsigned int card

16、reader:readcardid (int fd_port)/* 讀取卡id號(hào)碼,成功返回32位整數(shù),無或失敗返回0 */unsigned char buffer32;int readnum;unsigned int timer;unsigned int result;memset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0/發(fā)送開始符 0x20buffer0=0x20;write(fd_port,buffer,1);/等待0x06回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待40mstimer=0;memset(buffer,0,sizeof(bu

17、ffer);/buffer 緩沖區(qū)清0doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x06)return 0;/發(fā)送 00 71 02 00 00 8c 03buffer0=0x00;buffer1=0x71;buffer2=0x02;buffer3=0x00;buffer4=0x00;buffer5=0x8c;buffer6=0x03;write(fd_port,buffer,7);/

18、等待0x20回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x20)return 0;/發(fā)送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x04 0x04 .

19、0x03回應(yīng)usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x00)|(buffer1!=0x00)|(buffer2!=0x04)|(buffer8!=0x03)return 0;result=0;result=buffer3;result

20、+=buffer48;result+=buffer516;result+=buffer61000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x06)return 0;/發(fā)送 00 60 04 0a 19 19 01 90 03buffer0=0x00;buffer1=0x60;buffer2=0x04;buffer3=0x0a;buffer4=0x19;buffer5=0x19;buffer6=0x01;buffer7=0x90;buffer8=0x03;write(fd_port,buffer,9);/等待0x20回應(yīng) 否則出錯(cuò)退出usleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 緩沖區(qū)清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超時(shí)則退出return 0; while (readnum=0);if (buffer0!=0x20)return 0;/發(fā)送0x06buffe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論