可编程网络读卡器源码示例_读卡器代码

hacker|
116

文章目录:

求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能实现的了,核心代码都在控件里。

4条大神的评论

  • avatar
    访客 2022-07-17 上午 04:55:52

    f[16]; /*这里定义有效读入数据最多为16B,用户根据需要定*/uchar flag; /*全局标志字节*//*标志定义*/sbitIC-WR=flag^0;

  • avatar
    访客 2022-07-17 上午 03:45:50

    号*/unsignedchar rd24(void){sda=1;scl=1;a7=sda;scl=0;scl=1;a6=sda;scl=0;scl=1;a5=s

  • avatar
    访客 2022-07-17 上午 12:16:03

    /*拔卡信号*/sbit ICIN=P3^3; /*插卡信号,与上同接卡座微动开

  • avatar
    访客 2022-07-16 下午 11:42:10

    文章目录:1、求51单片机写读卡器的源码2、有谁看过流媒体服务器fenice源代码的可以给一些分析和相关资料吗3、谁有java读智能卡的例子4、明华读卡器的VB代码是什么5、求javaScript身份证

发表评论