CCIDマルチスレッドインタフェース-python
3826 ワード
具体的な機能:SN番号の情報を読み取る.Elsxテーブルは、CCID通信の端末装置に基づいて、特定のSN番号セグメントに関する情報を整合する、端末と自定のプロトコルに従って送信することができる.ElsxテーブルのデバイスSN番号セグメントのすべての構成情報は、複数のデバイス端末が構成情報を入力するのに便利である.
まとめ:2つのポイント:1.TKインタフェースのリストボックスとテキストラベルは、tkを設定することができる.StringVar()クラスは、別のスレッドでクラスのset()メソッドを呼び出すことで、tkラベルに表示される内容を変更できます.
pyinstaller-F-D xxxxxを使用します.py、実行後に実行します.exeは、どのファイルが欠けているか、直接コピーすることができます.exeフォルダでOK
欠陥:スレッドの前に切り替えた場合、反発ロックは使用されず、後でソースコードを最適化できます.
まとめ:2つのポイント:1.TKインタフェースのリストボックスとテキストラベルは、tkを設定することができる.StringVar()クラスは、別のスレッドでクラスのset()メソッドを呼び出すことで、tkラベルに表示される内容を変更できます.
varlistb = tk.StringVar()
listb = tk.Listbox(root, listvariable=varlistb, height=20, width=50, yscrollcommand=sb.set) #
var = tk.StringVar() # label , var hit_me
l = tk.Label(root, textvariable=var, font=('Arial', 12), width=40, height=5)
2. .exe , pyinstaller -F , win PySmartCard ,
# :pyinstaller -F ( py)
# :
#–icon=
#-F exe
#-w ,
#-c ,
#-D , exe
pyinstaller-F-D xxxxxを使用します.py、実行後に実行します.exeは、どのファイルが欠けているか、直接コピーすることができます.exeフォルダでOK
欠陥:スレッドの前に切り替えた場合、反発ロックは使用されず、後でソースコードを最適化できます.
import xlrd
import tkinter as tk
import time
from PySmartCard.CpuCard import PcscReader
import threading
import os
#
def Get_QR_ListData(table, i):
return table.row_values(i)
#
def Creat_QR_Data(suoyingList, Hang_data):
i = 0
Message = ''
for StrMessage in suoyingList:
if str(Hang_data[i]) != '':
Message += StrMessage + '=' + str(Hang_data[i]) + '&'
i = i + 1
return (Message.encode('GBK'))
#
def Create_Photo(table,Meessage):
global packDATA
#print(Creat_QR_Data(Get_QR_ListData(table, 0), Get_QR_ListData(table, i)))
num = table.nrows
recv_list = []
for i in range(1, num):
if Meessage == 'SN':
continue
if Meessage in Get_QR_ListData(table, i):
adu = Creat_QR_Data(Get_QR_ListData(table, 0), Get_QR_ListData(table, i))
packDATA = adu
#
def CCID_Data(adu):
global ucMode
if len(adu) > 1000:
print(" 1000 ")
exit()
#
AT_Hear = 'F0 2F 51 '
#
AT_Hear_Adder = 16
Pack_div_len = 252
#
Pack_list = ['a1', 'a2', 'a3', 'a4']
Pack_list.append(hex(int(len(adu) / Pack_div_len)).replace('0x', ''))
Pack_list.append(hex(len(adu) % Pack_div_len).replace('0x', ''))
#
for i in adu:
Pack_list.append(hex(i).replace('0x', ''))
for i in range(0, int(len(Pack_list)/Pack_div_len) + 1):
MessPackData = ''
if i != int(len(Pack_list)/Pack_div_len):
for MessBuf in Pack_list[i*Pack_div_len:(i+1)*Pack_div_len]:
if len(MessBuf) == 1:
MessPackData += '0'
MessPackData += str(MessBuf)
else:
for MessBuf in Pack_list[i*Pack_div_len:]:
if len(MessBuf) == 1:
MessPackData += '0'
MessPackData += str(MessBuf)
Message = AT_Hear + str(hex(AT_Hear_Adder + i).replace('0x', '')) \
+ hex(int(len(MessPackData)/2)).replace('0x', '') + MessPackData
recv_list = []
sendApdu(pcsc, Message, recv_list, 2)
if recv_list[1] != '9000':
var.set('CCID ') # label
var.set(' ')
time.sleep(2)
ucMode = 0
def g():
global packDATA
CCID_Data(packDATA)
def showLog(data, issend):
''' '''
current = time.strftime('%Y_%m_%d %H:%M:%S', time.localtime())
if issend: #
send = '-->'
else: #
send = '