python 类的执行中保部存值_Python DLL 读写Ntag21x标签

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#python -m pdb xxx.py 调试程度 n命令单步执行,s命令单步执行 会进入函数内部 b xx ,c

#import pdb pdb.set_trace() 设断点

import ctypes #调用DLL动态库要有这个引用

import sys

import os

#加载当前目录下的DLL

dllfile=sys.path[0]+'\OUR_MIFARE.dll'

Objdll = ctypes.windll.LoadLibrary(dllfile)

Objdll = ctypes.WinDLL(dllfile)

#根据入口参数执行不同功能

if(len(sys.argv)>1):

if(str(sys.argv[1])=='0'): #驱动读写器发出响声

Objdll.pcdbeep(50)

elif(str(sys.argv[1])=='1'): #读取设备的出厂编号

devno=bytes([0,0,0,0]) #声明4个字节缓冲

status=Objdll.pcdgetdevicenumber(devno)

if(status==0):

Objdll.pcdbeep(38)

SerialNum=''

for num in range(0,len(devno)):

SerialNum=SerialNum+'%02x' % (devno[num])

if(num

SerialNum=SerialNum+'-'

print('设备出厂编号:'+ SerialNum)

else:

print('读取设备编号失败,错误代码:'+str(status))

elif(str(sys.argv[1])=='2'): #读卡的序列号

mypiccserial=bytes([0,0,0,0,0,0,0]) #7个字节卡序列号

status = Objdll.piccrequest_ul(mypiccserial)

if(status==0):

Objdll.pcdbeep(38)

piccserialStr=''

for num in range(0,len(mypiccserial)):

piccserialStr=piccserialStr+'%02x ' % (mypiccserial[num])

print('7字节卡序号:'+ piccserialStr)

elif(status==8):

print('请将卡片放置在读写器的感应区!')

elif():

print('读卡失败,错误代码:'+str(status))

elif(str(sys.argv[1])=='3'): #读卡内4个页的数据

mypiccserial=bytes([0,0,0,0,0,0,0]) #7个字节卡序列号

mypiccdata=bytes([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]) #16个字节读卡的数据缓冲

ReadPageBegin=0 #起始页地址

status = Objdll.piccrequest_ul(mypiccserial) #寻卡并读卡的序列号

if(status==0):

piccserialStr=''

for num in range(0,len(mypiccserial)):

piccserialStr=piccserialStr+'%02x ' % (mypiccserial[num])

print('7字节卡序号:'+ piccserialStr)

status = Objdll.piccread_ul(ReadPageBegin,mypiccdata)

if(status==0):

Objdll.pcdbeep(38)

piccdataStr=''

for num in range(0,len(mypiccdata)):

piccdataStr=piccdataStr+'%02x ' % (mypiccdata[num])

print('块%d-块%d数据:' % (ReadPageBegin,ReadPageBegin+3)+piccdataStr)

elif():

print('读卡失败,错误代码:'+str(status))

elif(status==8):

print('请将卡片放置在读写器的感应区!')

elif(status==23):

print('请连上USB 读写器!')

elif():

print('读卡失败,错误代码:'+str(status))

elif(str(sys.argv[1])=='4'): #写一个页数据

mypiccserial=bytes([0,0,0,0,0,0,0]) #7个字节卡序列号

mypiccdata=bytes([0,1,2,3]) #1个页4个字节的写卡数据

WritePage=4 #改写页地址

status = Objdll.piccrequest_ul(mypiccserial) #寻卡并读卡的序列号

if(status==0):

piccserialStr=''

for num in range(0,len(mypiccserial)):

piccserialStr=piccserialStr+'%02x ' % (mypiccserial[num])

print('7字节卡序号:'+ piccserialStr)

status = Objdll.piccwrite_ul(WritePage,mypiccdata)

if(status==0):

Objdll.pcdbeep(38)

print('改写块%d内数据成功!' % (WritePage))

elif():

print('写卡失败,错误代码:'+str(status))

elif(status==8):

print('请将卡片放置在读写器的感应区!')

elif(status==23):

print('请连上USB 读写器!')

elif():

print('读卡失败,错误代码:'+str(status))

elif(str(sys.argv[1])=='5'): #认证卡片密码

mypiccserial=bytes([0,0,0,0,0,0,0]) #7个字节卡序列号

mypicckey=bytes([eval('0x12'),eval('0x34'),eval('0x56'),eval('0x78')]) #4个字节的卡密码

mypiccntagpack=bytes([0,0]) #返回的确认码

Objdll.pcdbeep(38)

status = Objdll.piccrequest_ul(mypiccserial) #寻卡并读卡的序列号

if(status==0):

piccserialStr=''

for num in range(0,len(mypiccserial)):

piccserialStr=piccserialStr+'%02x ' % (mypiccserial[num])

print('7字节卡序号:'+ piccserialStr)

status = Objdll.piccauthkey_ntag(mypicckey,mypiccntagpack)

if(status==0):

Objdll.pcdbeep(38)

print('卡密码认证成功!确认码为:%02x%02x' % (mypiccntagpack[0],mypiccntagpack[1]))

elif(status==12):

print('卡密码认证失败,错误代码:'+str(status))

elif():

print('卡密码认证失败,错误代码:'+str(status))

elif(status==8):

print('请将卡片放置在读写器的感应区!')

elif(status==23):

print('请连上USB 读写器!')

elif():

print('读卡失败,错误代码:'+str(status))

else:

print('请加入正确的参数运行程序')

else:

print('\n')

print('请加以下参数运行程序:')

print('参数 0 驱动读卡器嘀一声')

print('参数 1 读4个字节设备编号')

print('参数 2 读7个字节卡序列号')

print('参数 3 读卡内4个页的数据')

print('参数 4 改写1个页的数据')

print('参数 5 认证卡片密码')

sys.exit()

#qq:954486673

#微信:13822155058

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值