用于mini2440与周立功非接触式ic卡模块的通信.doc

上传人:来看看 文档编号:3289430 上传时间:2019-08-08 格式:DOC 页数:13 大小:50.51KB
返回 下载 相关 举报
用于mini2440与周立功非接触式ic卡模块的通信.doc_第1页
第1页 / 共13页
用于mini2440与周立功非接触式ic卡模块的通信.doc_第2页
第2页 / 共13页
用于mini2440与周立功非接触式ic卡模块的通信.doc_第3页
第3页 / 共13页
用于mini2440与周立功非接触式ic卡模块的通信.doc_第4页
第4页 / 共13页
用于mini2440与周立功非接触式ic卡模块的通信.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《用于mini2440与周立功非接触式ic卡模块的通信.doc》由会员分享,可在线阅读,更多相关《用于mini2440与周立功非接触式ic卡模块的通信.doc(13页珍藏版)》请在三一文库上搜索。

1、一个在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)/等待超时则退出retur

5、n 0; while (readnum=0);if (buffer0!=0x06)return 0;/发送 0x00 0x52 0x00 0xad 0x03/usleep(40*1000);/等待40msbuffer0=0x00;buffer1=0x52;buffer2=0x00;buffer3=0xad;buffer4=0x03;write(fd_port,buffer,5);/等待0x20回应 否则出错退出usleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_

6、port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1500)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x20)return 0;/发送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x00 0xff 0x03回应 否则出错退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port

7、,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x00)|(buffer1!=0x00)|(buffer2!=0x00)|(buffer3!=0xff)|(buffer4!=0x03)return 0;/发送开始符 0x20buffer0=0x20;write(fd_port,buffer,1);/等待0x06回应 否则出错退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer)

8、;/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x06)return 0;/发送 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回应 否则出错退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出return 0; while (read

10、num=0);if (buffer0!=0x20)return 0;/发送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x00 0xff 0x03回应 否则出错退出usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出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)/* 检查天线范围内有无卡,有返回1,无或失败返回0 */unsigned char buffer32;int readnum;unsigned int timer;memset(buffer,0,sizeof(buffer);/buffer 缓冲区清0/发送开始符 0x20buffer0=0x20;

12、write(fd_port,buffer,1);/等待0x06回应 否则出错退出usleep(40*1000);/等待40mstimer=0;memset(buffer,0,sizeof(buffer);/buffer 缓冲区清0doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出 /emit message(card found error 1);return 0; while (readnum=0);if (buffer0!=0x06)emit message(card

13、found error 2);return 0;/发送 00 41 01 01 be 03buffer0=0x00;buffer1=0x41;buffer2=0x01;buffer3=0x01;buffer4=0xbe;buffer5=0x03;write(fd_port,buffer,6);/等待0x20回应 否则出错退出usleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer

14、+;if (timer1000)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x20)emit message(card found error 3);return 0;/发送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x02 0x04 0x00 0xf9 0x03回应usleep(50*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,

15、sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出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号码,成功返回32位整数,无或失败返回0 */unsigned char buffer32;int readnum;unsigned int timer;unsigned int result;memset(buffer,0,sizeof(buffer);/buffer 缓冲区清0/发送开始符 0x20buffer0=0x20;write(fd_port,buffer,1);/等待0x06回应 否则出错退出usleep(40*1000);/等待40mstimer=0;memset(buffer,0,sizeof(bu

17、ffer);/buffer 缓冲区清0doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x06)return 0;/发送 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回应 否则出错退出usleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x20)return 0;/发送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x04 0x04 .

19、0x03回应usleep(40*1000);/等待40msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出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)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x06)return 0;/发送 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回应 否则出错退出u

21、sleep(40*1000);/等待50msmemset(buffer,0,sizeof(buffer);/buffer 缓冲区清0timer=0;doreadnum=read(fd_port,buffer,sizeof(buffer);usleep(100);timer+;if (timer1000)/等待超时则退出return 0; while (readnum=0);if (buffer0!=0x20)return 0;/发送0x06buffer0=0x06;write(fd_port,buffer,1);/等待0x00 0x00 0x00 0xff 0x03回应usleep(40*1000);/等待40msmemset(b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1