文章目录:
- 1、求51单片机写读卡器的源码
- 2、有谁看过流媒体服务器fenice源代码的可以给一些分析和相关资料吗
- 3、谁有java读智能卡的例子
- 4、明华读卡器的VB代码是什么
- 5、求javaScript身份证读卡器的源码,跪求... 在先等答案!!!
求51单片机写读卡器的源码
这类程序很多的,给你一个作为参考吧:
#include〈reg51.h〉
#includeabsacc.h
#define ucharunsigned char
#define uint unsignedint
/*IC卡信号输入/输出*/
sbit scl=P1^7;
sbit sda=P1^6;
/*I/O口定义*/
sbit ICOUT=P3^2; /*拔卡信号*/
sbit ICIN=P3^3; /*插卡信号,与上同接卡座微动开关*/
sbit COMM=P3^4; /*正在通信指示*/
sbit BELL=P3^5; /*蜂鸣器控制*/
sbit PWR=P1^4; /*IC卡座电源控制*/
/*波特率选择*/
sbit BAUD=P1^2; /*0:2400;1:4800*/
/*24c01~24c16读/写驱动程序*/
sbit a0=ACC^0; /*定义ACC的位,利用ACC操作速度最快*/
sbit a1=ACC^1;
sbit a2=ACC^2;
sbit a3=ACC^3;
sbit a4=ACC^4;
sbit a5=ACC^5;
sbit a6=ACC^6;
sbit a7=ACC^7;
/*读/写数据缓冲区,24c01最多为128B*/
uchar buf[16]; /*这里定义有效读入数据最多为16B,用户根据需要定*/
uchar flag; /*全局标志字节*/
/*标志定义*/
sbitIC-WR=flag^0; /*IC卡在读/写状态标志*/
sbit ONCOMM=flag^1; /*系统与上位机在通信状态标志*/
sbit RST=flag^2; /*系统热复位标志*/
void start-ic(void)
{
sda=1;
scl=1;
delay(2);
sda=0;
delay(6); /*scl为高状态下,sda的下降沿跳变启动*/
scl=0;
delay(6);
}
voidstop-ic(void)
{
sda=0;
scl=1;
delay(6);
sda=1; /*在scl=1,sda的0到1跳变结束*/
delay(6);
scl=0;
sda=0;
}
voidack-ic(void)
{
sda=0;
delay(3);
scl=1;
delay(3);
scl=0;
sda=1;
}
/*读写节函数,无应答信号*/
unsignedchar rd24(void)
{
sda=1;
scl=1;a7=sda;scl=0;
scl=1;a6=sda;scl=0;
scl=1;a5=sda;scl=0;
scl=1;a4=sda;scl=0;
scl=1;a3=sda;scl=0;
scl=1;a2=sda;scl=0;
scl=1;a1=sda;scl=0;
scl=1;a0=sda;scl=0;
sda=1;scl=1;sci=0;
return(ACC);
}
/*写字节函数*/
Voidwd24(unsigned char dd)
{
ACC=dd;
sda=a7;scl=1;scl=0;
sda=a6;scl=1;scl=0;
sda=a5;scl=1;scl=0;
sda=a4;scl=1;scl=0;
sda=a3;scl=1;scl=0;
sda=a2;scl=1;scl=0;
sda=a1;scl=1;scl=0;
sda=a0;scl=1;scl=0;
sda=1;scl=1;
while(sda= =1);
SCL=0;
}
/*随机地址读字节函数,address为欲读单元地址*/
{
unchar x;
start-oc();
wd24(0a0);
wd24(address);
start-ic();
wd24(0a1);
x=rd24();
stop-ic();
return(x);
}
/*从指定地址开始顺序读块地址数据,数据存入全局缓冲区buf中,n为数据字节数*/
Ucharread-bytes(uchar address,uchar n)
{
uchar a,y;
for(y=0;yn;y++)
{
A=read-buter(address+y);
Buf[y]=a;
}
}
/**/
/*字节写入模式写函数,其中阿对address为单元地址,dd为数据*/
voidwrire-byte(uchar address,uchar dd)
{
Start-ic();
Wd24(0a0);
Wd24(address);
Wd24(dd);
Stop-ic();
}
/*串行通信子程序*/
/*波特率2400,8位数据位,1位停止位,无校验位*/
/*先用握手字节y,然后发送x个数据*/
/*待发送数据在trdata缓冲区中*/
Void comm(ucharx,uchar y)
{
uchar i,a;
uint j;
while(1)
{l1: while(RI==0);
RI=0;
a=SBUF;
if(a!=y)goto l1;
for(i=0;ix;i++)
{ SBUF=trdata[i];
While(T1= =0);
TI=0;
}
For(j=0;j12500;j++);
}
}
/*主程序初始化函数*/
voidinit(void)
{
RST=0; /*系统热复位标志清除,只有拔卡才能置位*/
PWR=1; /*关闭IC卡电源*/
IC-WR=0; /*清有卡标志*/
ONCOMM=0; /*清正在通信标志*/
EX0=1; /*准许INT0中断*/
TMOD=0X20;
SCON=0X50; /*串行口工作方式*/
TH1=0Xf3;TL1=0Xf3;
If(BAUD= =0)
{
PCON=0X80; /*波特率设置为2400*/
}
else
{
PCON=0X00; /*波特率设置为4800*/
}
TR1=1;
EA=1; /*开放中断*/
}
/*将缓冲区数据16B发往上位机*/
/*波特率2400,8位数据位,1位停止位,无校验位*/
/*待发送数据在buf缓冲中*/
voidtransfer(void)
{
uchar I;
uint j;
for(i=0;i16;i++)
{ SBUF=buf[i];
WHILE(TI= =0);
TI=0;
for(j=0;j1000;j++);
}
}
/*接收16B存入缓冲区*/
/*波特率2400,8位数据位,1位停止位,无校验位*/
/*缓冲区为buf*/
voidreceive(void)
{
uchar i,a;
for(i=0;i16;i++)
{ while(RI==0);
RI=0;
a=SBUF;
buf[i]=a;
}
}
/*将缓冲区中的n字节写入IC卡address开始的区域*/
Voidreceive(void)
{
uchar x,y;
for(y=0;yn;y++)
{
Writ-byte(address+y,buf[y]);
delay(10); /*写之间的延时时间间隔,以保证写入*/
}
}
/*拔卡中断程序,主要完成IC卡下电及读/写器软复位*/
voidint-0(void)interrupt 0 using 1
{
while(! ICOUT); /* 延时去抖*/
delay(10);
if(! ICOUT) /*确实拔卡则进行以下处理*/
{
If(IC-WR|ONCOMM)
{
PWR=1; /*关闭IC卡电源*/
BELL=0; /*否则,蜂鸣一声返回*/
delay(10);
BELL=1;
RST=1; /*设置热复位标志,以便热复位*/
}
}
}
/*延时函数,延时ms数由N决定,但不同的系统需要调整相应参数*/
voiddelay(uchar n)
{
uchar i,j,k;
for(k=0;kn;k++)
for(i=0;i〈100;i++〉
for(j=0;j255;j++);
}
Void main(void)
{
uchar a;
fuwei: init(); /*系统初始化*/
while(! ICIN); /*等待IC卡插入*/
delay(10); /*软件去抖并等待IC卡稳定*/
while(! ICIN); /*确认IC卡插入*/
IC-wr=1; /*设置读/写标志(有卡,以便避免带电插拔)*/
/*开始读IC卡16B并存入缓冲区*/
PWR=0; /*IC卡上电,以便读卡*/
read-bytes(0,16);
PWR=1; /*关IC卡电源*/
/*等待与上位机建立通信联系*/
ONCOMM=1; /*设置正在通信标志*/
While(RI= =0);
RI=0;
a=SBUF;
switch(a)
{
case 0xaa: SBUF=0xaa;
while(! TI); /*向上位机回送AA*/
TI=0;
transfer(); /*将缓冲区数据发往上位机*/
break;
case 0xbb: SBUF=0xbb;
while(! TI); /*向上位机回送BB*/
TI=0;
/*上位机在发送前必须适当延时,以等待下位机准备好*/
receive(); /*接收数据存放在缓冲区*/
PWR=0; /*IC卡上电*/
write-ic(0,16); /*将数据写入IC卡,并回读比较*/
PWR=1; /*IC卡下电*/
Break;
Default: SBUF=0Xcc; /*如果握手信号不是AA,BB,则*/
While(! TI); /*向上位机回送CC*/
TI=0;
}
ONCOMM=0; /*清正在通信标志*/
while(! RST);
goto fuwei; /*等待拔卡中断,以软
复位*/
}
有谁看过流媒体服务器fenice源代码的可以给一些分析和相关资料吗
最简单的是用读卡器下载.市面读卡器才10元.有的6元.或朋友借借.既安全又简便.不用拉那么长数据线.大部分网吧电脑数据线用不成.我用过3部cect
谁有java读智能卡的例子
你可以去看看java相关的native方法的开发,研究一下jdk里面的那些native方法的源代码也可以。
网络上有个读卡器共用接口MWRF32.dll,下载到这个文件和它的帮助文档自己研究一下,里面有几个关键函数需要使用,关键函数有
int rf_init(int port,long baud);初始化设备
int rf_beep(int icdev,unsigned int _Msec);设备蜂鸣
int rf_card(int icdev,unsigned char _Mode,unsigned long *_Snr);寻卡
int rf_halt(int icdev);终止对卡操作
int rf_exit(int icdev);释放串口
int rf_read(int icdev,unsigned char _Adr,unsigned char *_Data);读取卡中数据
int rf_write(int icdev,unsingned char _Adr,unsigned char *_Data);向卡写入数据
注意,这是串口设备读卡,如果是其它接口设备的话,也许需要下载其它dll文件,不过现在读卡器设备好像都是串口的。
明华读卡器的VB代码是什么
VB 代码就是VB 编写的例程。一般读写器厂家开发包里面都有提供源码。
求javaScript身份证读卡器的源码,跪求... 在先等答案!!!
与读卡器硬件交互。。。这个必然要调用控件的吧?
你可以换个非ie内核的浏览器测试下(比如firefox,chrome等),如果不能用就说明是调用的控件(因为在中国很少有厂商做非ie内核的控件)。
如果是调用的控件,那么就不是纯javascript能实现的了,核心代码都在控件里。
f[16]; /*这里定义有效读入数据最多为16B,用户根据需要定*/uchar flag; /*全局标志字节*//*标志定义*/sbitIC-WR=flag^0;
号*/unsignedchar rd24(void){sda=1;scl=1;a7=sda;scl=0;scl=1;a6=sda;scl=0;scl=1;a5=s
/*拔卡信号*/sbit ICIN=P3^3; /*插卡信号,与上同接卡座微动开
文章目录:1、求51单片机写读卡器的源码2、有谁看过流媒体服务器fenice源代码的可以给一些分析和相关资料吗3、谁有java读智能卡的例子4、明华读卡器的VB代码是什么5、求javaScript身份证