راه اندازی ماژول کارتخوانcr038
درود به همگی
توی یکی از طرحهای آزمایشی از یه ماژول چینی برای خوندن و نوشتن کارتهای مایفر استفاده کردم
یه ماژول برای راه اندازی و آزمایشش به صورت خیلی ساده نوشتم
فایل سورس سی کدویژن این برنامه رو براتون قرار میدم
امیدوارم به کار یکی بخوره
این ماژول به صورت پیش فرض با بادریت 19200 کار میکنه
ماژول خوبیه برای شروع البته در نمونه اصلی دیگه از ماژول استفاده نکردم و خودم یه نمونه ساختم
کارتهای مایفر قابلیت نوشتن و خوندن رو دارن و دارای یکسری امکانات امنیتی روی بلاکهای 16 بایتی هستند
برخی امکانات نظیر کم و زیاد کردم اتوماتیک حاقظه و این چیزها هم دارن
طوریکه توی کاتالوگهای نصفه نیمه چینیش دیدم باید با نمونه های مشابه دیگه همین سازنده هم جواب ده
// cr038 mifare rfid-module driver
// by behzad khazama
// v0.2 20121204
// www.khazama.com
unsigned char cardID[4];
unsigned char cr038_send_packet(unsigned char * pk,unsigned char pk_len,unsigned char *ret){
unsigned char i,x=0;
while (rx_counter1)getchar1();
putchar1(0xAA);
putchar1(0xBB);
putchar1(pk_len+3);
putchar1(0);
putchar1(0);
putchar1(0);
for(i=0;i<pk_len;i++){
x ^= pk[i] ;
putchar1(pk[i]);
}
putchar1(x);
while (getchar1()!=0xAA);
delay_ms(100);
i=1;
ret[0]=0xAA;
while (rx_counter1)ret[i++]=getchar1();
return(ret[8]);
}
unsigned char cr038_request(void){
unsigned char t[20],i=0;
/*
t[0]=1;
t[1]=1;
t[2]=3; // 19200
if(cr038_send_packet(t,3,t)!=0)return(0); // set baudrate
*/
t[0]=1;
t[1]=2;
t[2]=0x52;
if(cr038_send_packet(t,3,t)!=0)return(0); // request
t[0]=2;
t[1]=2;
if(cr038_send_packet(t,2,t)!=0)return(0); //anticol
t[0]=3;
t[1]=2;
cardID[0]=t[2]=t[9];
cardID[1]=t[3]=t[10];
cardID[2]=t[4]=t[11];
cardID[3]=t[5]=t[12];
if(cr038_send_packet(t,6,t)!=0)return(0); // select
return(1);
}
unsigned char cr038_read(unsigned char mod,unsigned char blok,unsigned char *ret){
unsigned char t[30],i=0;
t[0]=7;
t[1]=2;
t[2]=mod;
t[3]=blok;
t[4]=0xFF;
t[5]=0xFF;
t[6]=0xFF;
t[7]=0xFF;
t[8]=0xFF;
t[9]=0xFF;
if(cr038_send_packet(t,10,t)!=0)return(0); //aute
t[0]=8;
t[1]=2;
t[2]=blok;
if(cr038_send_packet(t,3,t)!=0)return(0); //read
for(i=0;i<16;i++)ret[i]=t[9+i];
return(1);
}
unsigned char cr038_write(unsigned char mod,unsigned char blok,unsigned char * dat){
unsigned char t[30],i=0;
t[0]=7;
t[1]=2;
t[2]=mod;
t[3]=blok;
t[4]=0xFF;
t[5]=0xFF;
t[6]=0xFF;
t[7]=0xFF;
t[8]=0xFF;
t[9]=0xFF;
if(cr038_send_packet(t,10,t)!=0)return(0); //aute
t[0]=9;
t[1]=2;
t[2]=blok;
for(i=0;i<16;i++)t[3+i]=dat[i];
if(cr038_send_packet(t,19,t)!=0)return(0); //write
return(1);
}
** آخرین ویرایش در پنجشنبه 16 آذر 91 - 2:11 PM _______________________________________________________________________ پروژه های حرفه ای الکترونیک و کامپیوتر در www.khazama.com
مجموعه متن باز نامهای اصیل ایرانی
وبلاگ نوشته های شخصی من
|