
本示例使用的发卡器:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.43585f80C4uypw&id=45006910325
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.43585f80C4uypw&id=45006910325
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,QMessageBox
from PyQt5.QtGui import QFont
from mainwindow import Ui_MainWindow
import sys
import struct # struct的pack函数把任意数据类型变成字符串
import ctypes # 调用DLL动态库要有这个引用
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.pb_beep.clicked.connect(self.pb_beep_Clicked)
self.pb_getdevnum.clicked.connect(self.pb_getdevnum_clicked)
self.pb_request.clicked.connect(self.pb_request_clicked)
self.pb_init.clicked.connect(self.pb_init_clicked)
self.pb_addfile.clicked.connect(self.pb_addfile_clicked)
self.pb_addeasyfile.clicked.connect(self.pb_addeasyfile_clicked)
self.pb_changkey.clicked.connect(self.pb_changkey_clicked)
self.pb_read.clicked.connect(self.pb_read_clicked)
self.pb_write.clicked.connect(self.pb_write_clicked)
self.pb_easy_write.clicked.connect(self.pb_easy_write_clicked)
self.pb_changecardkey.clicked.connect(self.pb_changecardkey_clicked)
self.pb_clear.clicked.connect(self.pb_clear_clicked)
def LoadLibrary(self):
import sys
if sys.platform == 'win32':
# windows系统加载当前目录下的DLL库
dllfile = sys.path[0] + '\OUR_MIFARE.dll'
Objdll = ctypes.windll.LoadLibrary(dllfile)
elif sys.platform == 'linux':
# Linux加载当前目录下的so库
dllfile = sys.path[0] + '/libOURMIFARE.so'
Objdll = ctypes.cdll.LoadLibrary(dllfile)
else:
# macOS加载当前目录下的.dylib库
dllfile = sys.path[0] + '/libOURMIFARE.dylib'
Objdll = ctypes.cdll.LoadLibrary(dllfile)
return Objdll
def pb_beep_Clicked(self):
Objdll = self.LoadLibrary()
status = Objdll.pcdbeep(50) % 256
if (status != 0):
self.DispErrInf(status)
def pb_getdevnum_clicked(self):
devno = bytes(4) # 声明4个字节缓冲
Objdll = self.LoadLibrary()
status = Objdll.pcdgetdevicenumber(devno) % 256
if (status == 0):
Objdll.pcdbeep(38)
SerialNum = ''
for num in range(0, len(devno)):
SerialNum = SerialNum + '%02X' % (devno[num])
if (num < len(devno) - 1):
SerialNum = SerialNum + '-'
QMessageBox.information(None, "提示", '设备序列号:' + SerialNum, QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_request_clicked(self):
mypiccserial = bytes([0, 0, 0, 0]) # 卡序列号
myparam = bytes([0, 0, 0, 0]) # 卡参数
myver = bytes([0])
mycode = bytes([0])
self.lineEdit_uid.setText('')
Objdll = self.LoadLibrary()
status = Objdll.cpurequest(mypiccserial, myparam, myver, mycode) % 256
if (status == 0 or status == 52):
Objdll.pcdbeep(38)
Cardno = mypiccserial[0]
Cardno = Cardno + (mypiccserial[1] * 256)
Cardno = Cardno + (mypiccserial[2] * 65536)
Cardno = Cardno + (mypiccserial[3] * 16777216)
CardnoStr = '%010d' % Cardno
self.lineEdit_uid.setText(CardnoStr)
Dispstr='16进制卡号:%02X-%02X-%02X-%02X' % (mypiccserial[0], mypiccserial[1], mypiccserial[2], mypiccserial[3])
Dispstr=Dispstr+',转10进制卡号:' + CardnoStr+'\n'
Dispstr=Dispstr+'参数:%02X-%02X-%02X-%02X' % (myparam[0], myparam[1], myparam[2], myparam[3])
Dispstr=Dispstr+',版本:%02X' % (myver[0])
Dispstr=Dispstr+',厂商代码(复旦为90):%02X' % (mycode[0])
QMessageBox.information (None, "提示", Dispstr, QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_init_clicked(self):
if (self.checkBox_clear.clicked):
emptycard = 1
else:
emptycard = 0
spacesize=self.spinBox_maxsize.value()
mypicckeystr=self.lineEdit_cardkey.text().strip()
bytestr = mypicckeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
mypicckey = bytes.fromhex(mypicckeystr)
mykeylen = len(mypicckey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制卡片密钥!', QMessageBox.Yes)
self.lineEdit_cardkey.setFocus()
return
Objdll = self.LoadLibrary()
status = Objdll.cpursinit(emptycard, mypicckey, mykeylen, spacesize) % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", '初始化卡成功!', QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_addfile_clicked(self):
FileIndex=self.comboBox_addfile.currentIndex()
FileSize=self.spinBox_2.value()
RFilekeystr = self.lineEdit_readkey.text().strip()
bytestr = RFilekeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
RFilekey = bytes.fromhex(RFilekeystr)
RKLen = len(RFilekey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件只读密钥!', QMessageBox.Yes)
self.lineEdit_readkey.setFocus()
return
WFilekeystr = self.lineEdit_rwkey.text().strip()
bytestr = WFilekeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
WFilekey = bytes.fromhex(WFilekeystr)
WKLen = len(WFilekey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件读写密钥!', QMessageBox.Yes)
self.lineEdit_rwkey.setFocus()
return
Objdll = self.LoadLibrary()
status = Objdll.cpursfileadd(FileIndex, RFilekey, RKLen, WFilekey, WKLen, FileSize) % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", '%d 号标准文件创建成功!' %(FileIndex+1), QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_addeasyfile_clicked(self):
FileIndex=self.comboBox_addfile.currentIndex()
FileSize=self.spinBox_2.value()
RFilekeystr = self.lineEdit_readkey.text().strip()
bytestr = RFilekeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
RFilekey = bytes.fromhex(RFilekeystr)
RKLen = len(RFilekey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件只读密钥!', QMessageBox.Yes)
self.lineEdit_readkey.setFocus()
return
WFilekeystr = self.lineEdit_rwkey.text().strip()
bytestr = WFilekeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
WFilekey = bytes.fromhex(WFilekeystr)
WKLen = len(WFilekey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件读写密钥!', QMessageBox.Yes)
self.lineEdit_rwkey.setFocus()
return
Objdll = self.LoadLibrary()
status = Objdll.cpursfileadd_s(FileIndex, RFilekey, RKLen, WFilekey, WKLen, FileSize) % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", '%d 号易写文件创建成功!' %(FileIndex+1), QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_changkey_clicked(self):
FileIndex = self.comboBox_changekeyfile.currentIndex()
Autkeystr = self.lineEdit_authkey.text().strip()
bytestr = Autkeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
Autkey = bytes.fromhex(Autkeystr)
AKLen = len(Autkey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件认证密钥!', QMessageBox.Yes)
self.lineEdit_authkey.setFocus()
return
Newkeystr = self.lineEdit_newkey.text().strip()
bytestr = Newkeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
Newkey = bytes.fromhex(Newkeystr)
NKLen = len(Newkey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件新密钥!', QMessageBox.Yes)
self.lineEdit_newkey.setFocus()
return
ctrlCode=self.comboBox_changekey.currentIndex() #取值 0 表示更改只读密码, 取值 1 表示更改读写密码
if (self.comboBox_authkey.currentIndex()==1): #+0 表示用只读密码来认证, +2 表示用读写密码来认证
ctrlCode=ctrlCode+2
Objdll = self.LoadLibrary()
status = Objdll.cpursfilekeychg(FileIndex, ctrlCode, Autkey, AKLen, Newkey, NKLen) % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", '%d 号文件密钥修改成功!' % (FileIndex + 1), QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_read_clicked(self):
FileIndex = self.comboBox_rwfile.currentIndex()
ctrlCode = self.comboBox_authrwkey.currentIndex() * 2 # 0 表示用只读密码来认证, +2 表示用读写密码来认证
DataStart = ctypes.c_long(self.spinBox_rwbegin.value()) # 读起始位置,注意是c_long类型,否则linux系统会错
DataBuf = bytes(300)
DataLen =self.spinBox_rwlen.value() # 读长度最大不能超过255注意是c_long类型,否则linux系统会错
if (DataLen>255):
QMessageBox.critical(None, "提示", '每次读取字节数不能大于255个字节,如需要读取的数据长度大于255请分次读取!', QMessageBox.Yes)
return
Autkeystr = self.lineEdit_authkey2.text().strip()
bytestr = Autkeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
Autkey = bytes.fromhex(Autkeystr)
AKLen = len(Autkey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件认证密钥!', QMessageBox.Yes)
self.lineEdit_authkey2.setFocus()
return
Objdll = self.LoadLibrary()
status = Objdll.cpursfiledataread(FileIndex, ctrlCode, Autkey, AKLen, DataStart, DataBuf, DataLen) % 256
if (status == 0):
Objdll.pcdbeep(38)
byteread = ''
for num in range(0, DataLen):
byteread = byteread + '%02X ' % DataBuf[num]
self.plainTextEdit.setPlainText(byteread)
QMessageBox.information(None, "提示", '读取CPU卡内 %d 号文件数据成功!' %(FileIndex+1), QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_write_clicked(self):
FileIndex = self.comboBox_rwfile.currentIndex()
ctrlCode = self.comboBox_authrwkey.currentIndex() * 2 # 0 表示用只读密码来认证, +2 表示用读写密码来认证
DataStart = ctypes.c_long(self.spinBox_rwbegin.value()) # 读起始位置,注意是c_long类型,否则linux系统会错
DataBuf = bytes(300)
DataLen = self.spinBox_rwlen.value() # 读长度最大不能超过255注意是c_long类型,否则linux系统会错
if (DataLen > 247):
QMessageBox.critical(None, '每次写卡长度不能大于247个字节,如需要写入的数据长度大于247请分次写入!', QMessageBox.Yes)
return
Autkeystr = self.lineEdit_authkey2.text().strip()
bytestr = Autkeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
Autkey = bytes.fromhex(Autkeystr)
AKLen = len(Autkey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件认证密钥!', QMessageBox.Yes)
self.lineEdit_authkey2.setFocus()
return
Datastr = self.plainTextEdit.toPlainText() .strip()
bytestr = Datastr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
DataBuf = bytes.fromhex(Datastr)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制写入数据!', QMessageBox.Yes)
self.plainTextEdit.setFocus()
return
Objdll = self.LoadLibrary()
status = Objdll.cpursfiledatawrite(FileIndex, ctrlCode, Autkey, AKLen, DataStart, DataBuf, DataLen) % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", 'CPU卡 %d 号标准文件写入数据成功!' %(FileIndex+1), QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_easy_write_clicked(self):
FileIndex = self.comboBox_rwfile.currentIndex()
ctrlCode = self.comboBox_authrwkey.currentIndex() * 2 # 0 表示用只读密码来认证, +2 表示用读写密码来认证
DataStart = ctypes.c_long(self.spinBox_rwbegin.value()) # 读起始位置,注意是c_long类型,否则linux系统会错
DataBuf = bytes(300)
DataLen = self.spinBox_rwlen.value() # 读长度最大不能超过255注意是c_long类型,否则linux系统会错
if (DataLen > 247):
QMessageBox.critical(None, '每次写卡长度不能大于247个字节,如需要写入的数据长度大于247请分次写入!', QMessageBox.Yes)
return
Autkeystr = self.lineEdit_authkey2.text().strip()
bytestr = Autkeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
Autkey = bytes.fromhex(Autkeystr)
AKLen = len(Autkey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制文件认证密钥!', QMessageBox.Yes)
self.lineEdit_authkey2.setFocus()
return
Datastr = self.plainTextEdit.toPlainText().strip()
bytestr = Datastr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
DataBuf = bytes.fromhex(Datastr)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制写入数据!', QMessageBox.Yes)
self.plainTextEdit.setFocus()
return
Objdll = self.LoadLibrary()
status = Objdll.cpursfiledatawrite_s(FileIndex, ctrlCode, Autkey, AKLen, DataStart, DataBuf, DataLen) % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", 'CPU卡 %d 号易写文件写入数据成功!' % (FileIndex + 1), QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_changecardkey_clicked(self):
Oldkeystr = self.lineEdit_cardoldkey.text().strip()
bytestr = Oldkeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
Oldkey = bytes.fromhex(Oldkeystr)
OKLen = len(Oldkey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制CPU卡旧密钥!', QMessageBox.Yes)
self.lineEdit_cardoldkey.setFocus()
return
Newkeystr = self.lineEdit_cardnewkey.text().strip()
bytestr = Newkeystr.split(' ')
try:
for num in range(0, len(bytestr)):
bytenum = eval('0x' + bytestr[num])
Newkey = bytes.fromhex(Newkeystr)
NKLen = len(Newkey)
except:
QMessageBox.warning(None, "提示", '请输入正确的16进制CPU卡新密钥!', QMessageBox.Yes)
self.lineEdit_cardnewkey.setFocus()
return
Objdll = self.LoadLibrary()
status = Objdll.cpurscardkeychg(Oldkey, OKLen, Newkey, NKLen) % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", '修改CPU卡片密钥成功!', QMessageBox.Yes)
else:
self.DispErrInf(status)
def pb_clear_clicked(self):
Objdll = self.LoadLibrary()
status = Objdll.cpurscardclr() % 256
if (status == 0):
Objdll.pcdbeep(38)
QMessageBox.information(None, "提示", '强制清空CPU卡成功!', QMessageBox.Yes)
elif (status == 64):
QMessageBox.critical(None, "提示", '强制清空CPU卡失败,此卡为未经过我们cpursinit函数成功初始化的卡!', QMessageBox.Yes)
else:
self.DispErrInf(status)
def DispErrInf(self,Errcode):
if (Errcode == 3):
QMessageBox.critical(None, "提示", '错误代码:3,可能是CPU卡还未激活!', QMessageBox.Yes)
elif (Errcode == 8):
QMessageBox.critical(None, "提示", '错误代码:8,未寻到卡,请重新拿开卡后再放到感应区!', QMessageBox.Yes)
elif (Errcode == 23):
QMessageBox.critical(None, "提示", '错误代码:23,发卡器未连接或当前目录下的库文件错误!', QMessageBox.Yes)
elif (Errcode == 50):
QMessageBox.critical(None, "提示", '错误代码:50,RATS错误,厂家调试代码,用户不需理会!', QMessageBox.Yes)
elif (Errcode == 51):
QMessageBox.critical(None, "提示", '错误代码:51,PPS错误,厂家调试代码,用户不需理会!', QMessageBox.Yes)
elif (Errcode == 52):
QMessageBox.critical(None, "提示", '错误代码:52,已进入了14443-4协议状态,可进行CPU卡功能所有操作了!', QMessageBox.Yes)
elif (Errcode == 53):
QMessageBox.critical(None, "提示", '错误代码:53,CPU卡功能通讯错误,请先激活卡片!', QMessageBox.Yes)
elif (Errcode == 54):
QMessageBox.critical(None, "提示", '错误代码:54,数据不足,需要接着发送未完成的数据至卡上!', QMessageBox.Yes)
elif (Errcode == 55):
QMessageBox.critical(None, "提示", '错误代码:55,发送ACK指令给卡,让卡接着发送数据回来!', QMessageBox.Yes)
elif (Errcode == 56):
QMessageBox.critical(None, "提示", '错误代码:56,清空根目录失败!', QMessageBox.Yes)
elif (Errcode == 57):
QMessageBox.critical(None, "提示", '错误代码:57,卡片不支持此功能!', QMessageBox.Yes)
elif (Errcode == 58):
QMessageBox.critical(None, "提示", '错误代码:58,卡片初始化失败!', QMessageBox.Yes)
elif (Errcode == 59):
QMessageBox.critical(None, "提示", '错误代码:59,分配的空间不足!', QMessageBox.Yes)
elif (Errcode == 60):
QMessageBox.critical(None, "提示", '错误代码:60,本次操作的实体已存在!', QMessageBox.Yes)
elif (Errcode == 61):
QMessageBox.critical(None, "提示", '错误代码:61,无足够空间!', QMessageBox.Yes)
elif (Errcode == 62):
QMessageBox.critical(None, "提示", '错误代码:62,文件不存在!', QMessageBox.Yes)
elif (Errcode == 63):
QMessageBox.critical(None, "提示", '错误代码:63,权限不足,有可能是用只读密码认证,导致无法更改读写密码或无法写文件!', QMessageBox.Yes)
elif (Errcode == 64):
QMessageBox.critical(None, "提示", '错误代码:64,密码不存在,或密钥文件未创建!', QMessageBox.Yes)
elif (Errcode == 65):
QMessageBox.critical(None, "提示", '错误代码:65,传送长度错误!', QMessageBox.Yes)
elif (Errcode == 66):
QMessageBox.critical(None, "提示", '错误代码:66,长度错误,即接收的数据长度指定过大!', QMessageBox.Yes)
elif (Errcode == 67):
QMessageBox.critical(None, "提示", '错误代码:67,功能不支持或卡中无MF 或卡片已锁定!', QMessageBox.Yes)
elif (Errcode == 68):
QMessageBox.critical(None, "提示", '错误代码:68,密码认证错误次数过多,该密码已被锁死!', QMessageBox.Yes)
elif (Errcode >= 70 and Errcode <= 85):
QMessageBox.critical(None, "提示", '密码错误,剩余次数为 %d ,如果为0,该密码将锁死,无法再认证!' % (Errcode - 70), QMessageBox.Yes)
elif (Errcode == 86):
QMessageBox.critical(None, "提示", '错误代码:86,更改后的密码长度必须和创建时的长度一致!', QMessageBox.Yes)
elif (Errcode == 87):
QMessageBox.critical(None, "提示", '错误代码:87,应用目录不存在!', QMessageBox.Yes)
elif (Errcode == 88):
QMessageBox.critical(None, "提示", '错误代码:88,应用文件不存在!', QMessageBox.Yes)
elif (Errcode == 89):
QMessageBox.critical(None, "提示", '错误代码:89,文件号不能超过 5 !', QMessageBox.Yes)
elif (Errcode == 90):
QMessageBox.critical(None, "提示", '错误代码:90,读取文件时返回的长度不足,数据可能不正确!', QMessageBox.Yes)
elif (Errcode == 91):
QMessageBox.critical(None, "提示", '错误代码:91,一次读文件的长度不能超过 255 !', QMessageBox.Yes)
elif (Errcode == 92):
QMessageBox.critical(None, "提示", '错误代码:92,一次写文件的长度不能超过 247 !', QMessageBox.Yes)
else:
QMessageBox.critical(None, "提示", '错误代码:%d,未知错误!' %(Errcode), QMessageBox.Yes)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWindow = MainWindow()
screen = QDesktopWidget().screenGeometry()
size = mainWindow.geometry()
# 获得窗口相关坐标
newLeft = (screen.width() - size.width()) // 2
newTop = (screen.height() - size.height()) // 2
# 移动窗口使其居中
mainWindow.move(newLeft, newTop)
mainWindow.setWindowTitle("FM1208_CPU Python Demo")
mainWindow.show()
mainWindow.label_7.setStyleSheet("color: red;")
mainWindow.label_8.setStyleSheet("color: red;")
mainWindow.label_9.setStyleSheet("color: red;")
mainWindow.label_19.setStyleSheet("color: red;")
font = QFont()
font.setFamily('Arial') # 设置字体名称
font.setPointSize(8)
mainWindow.groupBox.setFont(font)
mainWindow.lineEdit_cardkey.setFont(font)
mainWindow.lineEdit_readkey.setFont(font)
mainWindow.lineEdit_rwkey.setFont(font)
mainWindow.lineEdit_authkey.setFont(font)
mainWindow.lineEdit_newkey.setFont(font)
mainWindow.lineEdit_authkey2.setFont(font)
mainWindow.lineEdit_cardoldkey.setFont(font)
mainWindow.lineEdit_cardnewkey.setFont(font)
mainWindow.comboBox_authkey.setCurrentIndex(1)
mainWindow.comboBox_authrwkey.setCurrentIndex(1)
sys.exit(app.exec_())
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(702, 741)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pb_beep = QtWidgets.QPushButton(self.centralwidget)
self.pb_beep.setGeometry(QtCore.QRect(9, 5, 140, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_beep.setFont(font)
self.pb_beep.setObjectName("pb_beep")
self.pb_getdevnum = QtWidgets.QPushButton(self.centralwidget)
self.pb_getdevnum.setGeometry(QtCore.QRect(149, 5, 260, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_getdevnum.setFont(font)
self.pb_getdevnum.setObjectName("pb_getdevnum")
self.pb_request = QtWidgets.QPushButton(self.centralwidget)
self.pb_request.setGeometry(QtCore.QRect(10, 50, 140, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_request.setFont(font)
self.pb_request.setObjectName("pb_request")
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setGeometry(QtCore.QRect(10, 91, 681, 101))
font = QtGui.QFont()
font.setPointSize(8)
self.groupBox.setFont(font)
self.groupBox.setToolTipDuration(-3)
self.groupBox.setObjectName("groupBox")
self.checkBox_clear = QtWidgets.QCheckBox(self.groupBox)
self.checkBox_clear.setGeometry(QtCore.QRect(20, 21, 350, 19))
font = QtGui.QFont()
font.setPointSize(8)
self.checkBox_clear.setFont(font)
self.checkBox_clear.setObjectName("checkBox_clear")
self.label = QtWidgets.QLabel(self.groupBox)
self.label.setGeometry(QtCore.QRect(20, 56, 161, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label.setFont(font)
self.label.setObjectName("label")
self.spinBox_maxsize = QtWidgets.QSpinBox(self.groupBox)
self.spinBox_maxsize.setGeometry(QtCore.QRect(370, 21, 61, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.spinBox_maxsize.setFont(font)
self.spinBox_maxsize.setToolTipDuration(1)
self.spinBox_maxsize.setMaximum(65535)
self.spinBox_maxsize.setSingleStep(10)
self.spinBox_maxsize.setProperty("value", 1024)
self.spinBox_maxsize.setObjectName("spinBox_maxsize")
self.lineEdit_cardkey = QtWidgets.QLineEdit(self.groupBox)
self.lineEdit_cardkey.setGeometry(QtCore.QRect(178, 51, 270, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_cardkey.setFont(font)
self.lineEdit_cardkey.setToolTipDuration(-1)
self.lineEdit_cardkey.setObjectName("lineEdit_cardkey")
self.pb_init = QtWidgets.QPushButton(self.groupBox)
self.pb_init.setGeometry(QtCore.QRect(530, 60, 140, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_init.setFont(font)
self.pb_init.setObjectName("pb_init")
self.label_8 = QtWidgets.QLabel(self.groupBox)
self.label_8.setGeometry(QtCore.QRect(23, 80, 491, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_8.setFont(font)
self.label_8.setObjectName("label_8")
self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox_2.setGeometry(QtCore.QRect(10, 204, 681, 141))
font = QtGui.QFont()
font.setPointSize(8)
self.groupBox_2.setFont(font)
self.groupBox_2.setObjectName("groupBox_2")
self.comboBox_addfile = QtWidgets.QComboBox(self.groupBox_2)
self.comboBox_addfile.setGeometry(QtCore.QRect(17, 25, 91, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.comboBox_addfile.setFont(font)
self.comboBox_addfile.setObjectName("comboBox_addfile")
self.comboBox_addfile.addItem("")
self.comboBox_addfile.addItem("")
self.comboBox_addfile.addItem("")
self.comboBox_addfile.addItem("")
self.comboBox_addfile.addItem("")
self.comboBox_addfile.addItem("")
self.label_2 = QtWidgets.QLabel(self.groupBox_2)
self.label_2.setGeometry(QtCore.QRect(120, 23, 131, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.lineEdit_readkey = QtWidgets.QLineEdit(self.groupBox_2)
self.lineEdit_readkey.setGeometry(QtCore.QRect(241, 21, 270, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_readkey.setFont(font)
self.lineEdit_readkey.setObjectName("lineEdit_readkey")
self.label_3 = QtWidgets.QLabel(self.groupBox_2)
self.label_3.setGeometry(QtCore.QRect(120, 52, 131, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.lineEdit_rwkey = QtWidgets.QLineEdit(self.groupBox_2)
self.lineEdit_rwkey.setGeometry(QtCore.QRect(241, 50, 270, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_rwkey.setFont(font)
self.lineEdit_rwkey.setObjectName("lineEdit_rwkey")
self.spinBox_2 = QtWidgets.QSpinBox(self.groupBox_2)
self.spinBox_2.setGeometry(QtCore.QRect(590, 21, 61, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.spinBox_2.setFont(font)
self.spinBox_2.setMaximum(65535)
self.spinBox_2.setProperty("value", 256)
self.spinBox_2.setObjectName("spinBox_2")
self.label_4 = QtWidgets.QLabel(self.groupBox_2)
self.label_4.setGeometry(QtCore.QRect(530, 25, 60, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.label_9 = QtWidgets.QLabel(self.groupBox_2)
self.label_9.setGeometry(QtCore.QRect(20, 71, 410, 30))
font = QtGui.QFont()
font.setPointSize(8)
self.label_9.setFont(font)
self.label_9.setObjectName("label_9")
self.label_10 = QtWidgets.QLabel(self.groupBox_2)
self.label_10.setGeometry(QtCore.QRect(20, 99, 301, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_10.setFont(font)
self.label_10.setObjectName("label_10")
self.pb_addfile = QtWidgets.QPushButton(self.groupBox_2)
self.pb_addfile.setGeometry(QtCore.QRect(530, 71, 140, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_addfile.setFont(font)
self.pb_addfile.setObjectName("pb_addfile")
self.label_16 = QtWidgets.QLabel(self.groupBox_2)
self.label_16.setGeometry(QtCore.QRect(20, 120, 321, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_16.setFont(font)
self.label_16.setObjectName("label_16")
self.pb_addeasyfile = QtWidgets.QPushButton(self.groupBox_2)
self.pb_addeasyfile.setGeometry(QtCore.QRect(530, 103, 140, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_addeasyfile.setFont(font)
self.pb_addeasyfile.setObjectName("pb_addeasyfile")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(158, 60, 41, 20))
font = QtGui.QFont()
font.setPointSize(8)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.lineEdit_uid = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_uid.setGeometry(QtCore.QRect(200, 60, 111, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_uid.setFont(font)
self.lineEdit_uid.setObjectName("lineEdit_uid")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(320, 63, 361, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_7.setFont(font)
self.label_7.setObjectName("label_7")
self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox_3.setGeometry(QtCore.QRect(10, 360, 681, 111))
font = QtGui.QFont()
font.setPointSize(8)
self.groupBox_3.setFont(font)
self.groupBox_3.setObjectName("groupBox_3")
self.comboBox_changekeyfile = QtWidgets.QComboBox(self.groupBox_3)
self.comboBox_changekeyfile.setGeometry(QtCore.QRect(17, 21, 91, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.comboBox_changekeyfile.setFont(font)
self.comboBox_changekeyfile.setObjectName("comboBox_changekeyfile")
self.comboBox_changekeyfile.addItem("")
self.comboBox_changekeyfile.addItem("")
self.comboBox_changekeyfile.addItem("")
self.comboBox_changekeyfile.addItem("")
self.comboBox_changekeyfile.addItem("")
self.comboBox_changekeyfile.addItem("")
self.label_6 = QtWidgets.QLabel(self.groupBox_3)
self.label_6.setGeometry(QtCore.QRect(102, 57, 160, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.lineEdit_authkey = QtWidgets.QLineEdit(self.groupBox_3)
self.lineEdit_authkey.setGeometry(QtCore.QRect(247, 55, 270, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_authkey.setFont(font)
self.lineEdit_authkey.setObjectName("lineEdit_authkey")
self.label_11 = QtWidgets.QLabel(self.groupBox_3)
self.label_11.setGeometry(QtCore.QRect(136, 86, 131, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_11.setFont(font)
self.label_11.setObjectName("label_11")
self.lineEdit_newkey = QtWidgets.QLineEdit(self.groupBox_3)
self.lineEdit_newkey.setGeometry(QtCore.QRect(247, 84, 270, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_newkey.setFont(font)
self.lineEdit_newkey.setObjectName("lineEdit_newkey")
self.comboBox_authkey = QtWidgets.QComboBox(self.groupBox_3)
self.comboBox_authkey.setGeometry(QtCore.QRect(120, 20, 121, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.comboBox_authkey.setFont(font)
self.comboBox_authkey.setObjectName("comboBox_authkey")
self.comboBox_authkey.addItem("")
self.comboBox_authkey.addItem("")
self.comboBox_changekey = QtWidgets.QComboBox(self.groupBox_3)
self.comboBox_changekey.setGeometry(QtCore.QRect(250, 20, 121, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.comboBox_changekey.setFont(font)
self.comboBox_changekey.setObjectName("comboBox_changekey")
self.comboBox_changekey.addItem("")
self.comboBox_changekey.addItem("")
self.pb_changkey = QtWidgets.QPushButton(self.groupBox_3)
self.pb_changkey.setGeometry(QtCore.QRect(530, 20, 140, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_changkey.setFont(font)
self.pb_changkey.setObjectName("pb_changkey")
self.groupBox_4 = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox_4.setGeometry(QtCore.QRect(10, 480, 681, 180))
font = QtGui.QFont()
font.setPointSize(8)
self.groupBox_4.setFont(font)
self.groupBox_4.setObjectName("groupBox_4")
self.comboBox_rwfile = QtWidgets.QComboBox(self.groupBox_4)
self.comboBox_rwfile.setGeometry(QtCore.QRect(17, 21, 91, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.comboBox_rwfile.setFont(font)
self.comboBox_rwfile.setObjectName("comboBox_rwfile")
self.comboBox_rwfile.addItem("")
self.comboBox_rwfile.addItem("")
self.comboBox_rwfile.addItem("")
self.comboBox_rwfile.addItem("")
self.comboBox_rwfile.addItem("")
self.comboBox_rwfile.addItem("")
self.label_12 = QtWidgets.QLabel(self.groupBox_4)
self.label_12.setGeometry(QtCore.QRect(250, 22, 160, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_12.setFont(font)
self.label_12.setObjectName("label_12")
self.lineEdit_authkey2 = QtWidgets.QLineEdit(self.groupBox_4)
self.lineEdit_authkey2.setGeometry(QtCore.QRect(399, 19, 261, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_authkey2.setFont(font)
self.lineEdit_authkey2.setObjectName("lineEdit_authkey2")
self.comboBox_authrwkey = QtWidgets.QComboBox(self.groupBox_4)
self.comboBox_authrwkey.setGeometry(QtCore.QRect(120, 20, 121, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.comboBox_authrwkey.setFont(font)
self.comboBox_authrwkey.setObjectName("comboBox_authrwkey")
self.comboBox_authrwkey.addItem("")
self.comboBox_authrwkey.addItem("")
self.pb_read = QtWidgets.QPushButton(self.groupBox_4)
self.pb_read.setGeometry(QtCore.QRect(160, 70, 111, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_read.setFont(font)
self.pb_read.setObjectName("pb_read")
self.label_13 = QtWidgets.QLabel(self.groupBox_4)
self.label_13.setGeometry(QtCore.QRect(20, 54, 60, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_13.setFont(font)
self.label_13.setObjectName("label_13")
self.spinBox_rwbegin = QtWidgets.QSpinBox(self.groupBox_4)
self.spinBox_rwbegin.setGeometry(QtCore.QRect(80, 50, 61, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.spinBox_rwbegin.setFont(font)
self.spinBox_rwbegin.setMaximum(65535)
self.spinBox_rwbegin.setObjectName("spinBox_rwbegin")
self.label_14 = QtWidgets.QLabel(self.groupBox_4)
self.label_14.setGeometry(QtCore.QRect(20, 83, 60, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_14.setFont(font)
self.label_14.setObjectName("label_14")
self.spinBox_rwlen = QtWidgets.QSpinBox(self.groupBox_4)
self.spinBox_rwlen.setGeometry(QtCore.QRect(80, 80, 61, 22))
font = QtGui.QFont()
font.setPointSize(8)
self.spinBox_rwlen.setFont(font)
self.spinBox_rwlen.setMaximum(65535)
self.spinBox_rwlen.setProperty("value", 100)
self.spinBox_rwlen.setObjectName("spinBox_rwlen")
self.label_15 = QtWidgets.QLabel(self.groupBox_4)
self.label_15.setGeometry(QtCore.QRect(20, 110, 60, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_15.setFont(font)
self.label_15.setObjectName("label_15")
self.plainTextEdit = QtWidgets.QPlainTextEdit(self.groupBox_4)
self.plainTextEdit.setGeometry(QtCore.QRect(80, 110, 591, 60))
font = QtGui.QFont()
font.setPointSize(8)
self.plainTextEdit.setFont(font)
self.plainTextEdit.setObjectName("plainTextEdit")
self.pb_write = QtWidgets.QPushButton(self.groupBox_4)
self.pb_write.setGeometry(QtCore.QRect(280, 70, 131, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_write.setFont(font)
self.pb_write.setObjectName("pb_write")
self.pb_easy_write = QtWidgets.QPushButton(self.groupBox_4)
self.pb_easy_write.setGeometry(QtCore.QRect(539, 70, 131, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_easy_write.setFont(font)
self.pb_easy_write.setObjectName("pb_easy_write")
self.label_19 = QtWidgets.QLabel(self.groupBox_4)
self.label_19.setGeometry(QtCore.QRect(162, 41, 410, 30))
font = QtGui.QFont()
font.setPointSize(8)
self.label_19.setFont(font)
self.label_19.setObjectName("label_19")
self.pb_clear = QtWidgets.QPushButton(self.centralwidget)
self.pb_clear.setGeometry(QtCore.QRect(540, 673, 140, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_clear.setFont(font)
self.pb_clear.setObjectName("pb_clear")
self.pb_changecardkey = QtWidgets.QPushButton(self.centralwidget)
self.pb_changecardkey.setGeometry(QtCore.QRect(401, 672, 110, 31))
font = QtGui.QFont()
font.setPointSize(8)
self.pb_changecardkey.setFont(font)
self.pb_changecardkey.setObjectName("pb_changecardkey")
self.lineEdit_cardoldkey = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_cardoldkey.setGeometry(QtCore.QRect(122, 668, 270, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_cardoldkey.setFont(font)
self.lineEdit_cardoldkey.setObjectName("lineEdit_cardoldkey")
self.lineEdit_cardnewkey = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_cardnewkey.setGeometry(QtCore.QRect(122, 693, 270, 21))
font = QtGui.QFont()
font.setPointSize(8)
self.lineEdit_cardnewkey.setFont(font)
self.lineEdit_cardnewkey.setObjectName("lineEdit_cardnewkey")
self.label_17 = QtWidgets.QLabel(self.centralwidget)
self.label_17.setGeometry(QtCore.QRect(15, 672, 110, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_17.setFont(font)
self.label_17.setObjectName("label_17")
self.label_18 = QtWidgets.QLabel(self.centralwidget)
self.label_18.setGeometry(QtCore.QRect(15, 697, 110, 16))
font = QtGui.QFont()
font.setPointSize(8)
self.label_18.setFont(font)
self.label_18.setObjectName("label_18")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "FM1208-CPU_Qt_Demo"))
self.pb_beep.setText(_translate("MainWindow", "驱动读写器发出响声"))
self.pb_getdevnum.setText(_translate("MainWindow", "读出设备全球唯一的设备编号,作为加密狗用"))
self.pb_request.setText(_translate("MainWindow", "CPU卡激活"))
self.groupBox.setTitle(_translate("MainWindow", "功能二:初始化CPU卡"))
self.checkBox_clear.setText(_translate("MainWindow", "选择先将卡片清空再初始化 本次设定可应用的空间大小:"))
self.label.setText(_translate("MainWindow", "设置卡片密码(16进制数):"))
self.lineEdit_cardkey.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.pb_init.setText(_translate("MainWindow", "初始化CPU卡"))
self.label_8.setText(_translate("MainWindow", "卡密码与文件密码设任何关系,卡密码只是用来清空卡,读、写文件必须用文件密码来认证!"))
self.groupBox_2.setTitle(_translate("MainWindow", "功能三:创建文件和删除文件"))
self.comboBox_addfile.setItemText(0, _translate("MainWindow", "1号文件"))
self.comboBox_addfile.setItemText(1, _translate("MainWindow", "2号文件"))
self.comboBox_addfile.setItemText(2, _translate("MainWindow", "3号文件"))
self.comboBox_addfile.setItemText(3, _translate("MainWindow", "4号文件"))
self.comboBox_addfile.setItemText(4, _translate("MainWindow", "5号文件"))
self.comboBox_addfile.setItemText(5, _translate("MainWindow", "6号文件"))
self.label_2.setText(_translate("MainWindow", "只读密码(16进制数):"))
self.lineEdit_readkey.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.label_3.setText(_translate("MainWindow", "读写密码(16进制数):"))
self.lineEdit_rwkey.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.label_4.setText(_translate("MainWindow", "文件大小:"))
self.label_9.setText(_translate("MainWindow", "创建好的文件不能删除,要删除已有文件只能通过初始化功能清空所有文件!"))
self.label_10.setText(_translate("MainWindow", "1号文件 对应在目录 1680(十六进制) 下的 0001 文件,"))
self.pb_addfile.setText(_translate("MainWindow", "创建标准文件"))
self.label_16.setText(_translate("MainWindow", "2号文件对应在目录 1680 下的 002 文件 ,以此类推......"))
self.pb_addeasyfile.setText(_translate("MainWindow", "创建易写文件"))
self.label_5.setText(_translate("MainWindow", "卡号:"))
self.label_7.setText(_translate("MainWindow", "每次卡片重新进入感应区都要先激活卡片才能继续以下的操作。"))
self.groupBox_3.setTitle(_translate("MainWindow", "功能四:修改文件密码"))
self.comboBox_changekeyfile.setItemText(0, _translate("MainWindow", "1号文件"))
self.comboBox_changekeyfile.setItemText(1, _translate("MainWindow", "2号文件"))
self.comboBox_changekeyfile.setItemText(2, _translate("MainWindow", "3号文件"))
self.comboBox_changekeyfile.setItemText(3, _translate("MainWindow", "4号文件"))
self.comboBox_changekeyfile.setItemText(4, _translate("MainWindow", "5号文件"))
self.comboBox_changekeyfile.setItemText(5, _translate("MainWindow", "6号文件"))
self.label_6.setText(_translate("MainWindow", "文件认证密码(16进制数):"))
self.lineEdit_authkey.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.label_11.setText(_translate("MainWindow", "新密码(16进制数):"))
self.lineEdit_newkey.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.comboBox_authkey.setItemText(0, _translate("MainWindow", "用只读密码认证"))
self.comboBox_authkey.setItemText(1, _translate("MainWindow", "用读写密码认证"))
self.comboBox_changekey.setItemText(0, _translate("MainWindow", "修改只读密码"))
self.comboBox_changekey.setItemText(1, _translate("MainWindow", "修改读写密码"))
self.pb_changkey.setText(_translate("MainWindow", "修改文件密码"))
self.groupBox_4.setTitle(_translate("MainWindow", "功能五:读、写文件信息"))
self.comboBox_rwfile.setItemText(0, _translate("MainWindow", "1号文件"))
self.comboBox_rwfile.setItemText(1, _translate("MainWindow", "2号文件"))
self.comboBox_rwfile.setItemText(2, _translate("MainWindow", "3号文件"))
self.comboBox_rwfile.setItemText(3, _translate("MainWindow", "4号文件"))
self.comboBox_rwfile.setItemText(4, _translate("MainWindow", "5号文件"))
self.comboBox_rwfile.setItemText(5, _translate("MainWindow", "6号文件"))
self.label_12.setText(_translate("MainWindow", "文件认证密码(16进制数):"))
self.lineEdit_authkey2.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.comboBox_authrwkey.setItemText(0, _translate("MainWindow", "用只读密码认证"))
self.comboBox_authrwkey.setItemText(1, _translate("MainWindow", "用读写密码认证"))
self.pb_read.setText(_translate("MainWindow", "读取文件数据"))
self.label_13.setText(_translate("MainWindow", "起始位置:"))
self.label_14.setText(_translate("MainWindow", "读写长度:"))
self.label_15.setText(_translate("MainWindow", "读写数据:"))
self.pb_write.setText(_translate("MainWindow", "写数据到标准文件内"))
self.pb_easy_write.setText(_translate("MainWindow", "写数据到易写文件内"))
self.label_19.setText(_translate("MainWindow", "每次读卡最大长度为255字节,每次写卡最大长度247字节!"))
self.pb_clear.setText(_translate("MainWindow", "强制清空已初始化的卡"))
self.pb_changecardkey.setText(_translate("MainWindow", "更改卡片密码"))
self.lineEdit_cardoldkey.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.lineEdit_cardnewkey.setText(_translate("MainWindow", "FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF "))
self.label_17.setText(_translate("MainWindow", "cpu卡16进制旧密码:"))
self.label_18.setText(_translate("MainWindow", "cpu卡16进制新密码:"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())