Python 调用带指针DLL函数读写CPU卡

本示例使用的发卡器:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.11.43585f80C4uypw&id=45006910325icon-default.png?t=O83Ahttps://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_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vx_13822155058

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值