# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'IC-07UI.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.
import serial
import time
import sys
import serial.tools.list_ports
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QDateTime
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,QMessageBox
selecom=0
ser = serial.Serial()
ComIsOpen=False
OrderCode=0
RcvBuff=b''
class SerialListenThread(QThread): # 串口侦听线程
serial_data = pyqtSignal(int,str) # 创建一个信号,触发时传递显示信息给槽函数
def run(self):
global ComIsOpen
global OrderCode
global RcvBuff
while ComIsOpen:
try:
rcvdata = ser.read_all()
if (len(rcvdata) > 0):
if (OrderCode<=1):
GetData = '接收数据:'
for num in range(0, len(rcvdata)):
GetData = GetData + '%02X ' % (rcvdata[num])
self.serial_data.emit(1, GetData)
else:
RcvBuff = RcvBuff + rcvdata
if (len(RcvBuff)>=RcvBuff[0]+2):
deldata=RcvBuff[0:RcvBuff[0]+2]
GetData = '接收数据:'
for num in range(0, len(deldata)):
GetData = GetData + '%02X ' % (deldata[num])
self.serial_data.emit(1, GetData)
crc = 0 # 计算返回数据的校验位
for num in range(1, len(deldata) - 1):
crc = crc ^ deldata[num]
if (crc == deldata[len(deldata) - 1]):
if(OrderCode==2): #寻卡指令返回信息
if (deldata[0] == 1 and deldata[1] == 8):
self.serial_data.emit(2, '未寻到卡!')
elif (deldata[0] == 1 and deldata[1] == 9):
self.serial_data.emit(2, '两张以上卡片同时在感应区,发生冲突!')
elif (deldata[0] == 1 and deldata[1] == 10):
self.serial_data.emit(2, '无法选择激活卡片!')
elif (deldata[0] == 5):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]))
elif(OrderCode==3): #轻松读IC卡扇区指令返回数据
if (deldata[0] == 1 and deldata[1] == 8):
self.serial_data.emit(2, '未寻到卡!')
elif (deldata[0] == 1 and deldata[1] == 9):
self.serial_data.emit(2, '两张以上卡片同时在感应区,发生冲突!')
elif (deldata[0] == 5):
if (deldata[1] == 1):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',密码认证成功,但读取扇区内容失败!')
elif (deldata[1] == 2):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',第0块读出,但第1、2块没读出,仅扇区内容前16个字节的数据有效!')
elif (deldata[1] == 3):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',第0、1块读出,但第2块没读出,仅扇区内容前32个字节的数据有效!')
elif (deldata[1] == 10):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',无法选择激活卡片!')
elif (deldata[1] == 12):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',密码认证失败!')
else:
self.serial_data.emit(2, '操作失败,错误代码:' + str(deldata[1]))
elif (deldata[0] == 53):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',读取扇区数据成功!')
ReturnInf = ''
for num in range(6, len(deldata) - 1):
ReturnInf = ReturnInf + '%02X ' % (deldata[num])
self.serial_data.emit(3,ReturnInf)
elif (OrderCode == 4):
if (deldata[0] == 1 and deldata[1] == 8):
self.serial_data.emit(2, '未寻到卡!')
elif (deldata[0] == 1 and deldata[1] == 9):
self.serial_data.emit(2, '两张以上卡片同时在感应区,发生冲突!')
elif (deldata[0] == 5):
if (deldata[1] == 0):
self.serial_data.emit(4, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',写扇区数据成功!')
elif (deldata[1] == 1):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',密码认证成功,但写扇区内容失败!')
elif (deldata[1] == 2):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',第0块写入成功,但第1、2块写入失败!')
elif (deldata[1] == 3):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',第0、1块写入成功,但第2块写入失败!')
elif (deldata[1] == 10):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',无法选择激活卡片!')
elif (deldata[1] == 12):
self.serial_data.emit(2, '寻到IC卡,16进制卡号:%02X %02X %02X %02X ' % (deldata[2], deldata[3], deldata[4], deldata[5]) + ',密码认证失败!')
else:
self.seria
vx_13822155058
- 粉丝: 484
- 资源: 193
最新资源
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)图书借阅管理系统设计与开发2
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)图书借阅管理系统设计与开发
- 使用大预言模型LLM构建虚拟人物画像
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)图书借阅管理系统
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)图书发行信息管理系统设计与开发
- 数据安全 数据安全基础 DSG
- Java Web 学习教程(从基础到进阶,带您逐步构建 Web 应用)
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)体育项目比赛管理系统设计与开发
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)人事管理信息系统设计与开发4
- 数据安全 数据安全治理 DSG
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈