def test_hasTC1(self): ''' ATR应包含TC1,以解决THD88不支持接收11.8ETU字符的问题 ''' # check ATR to determine if it is THD88 chip, # if yes, test if TC1 included in ATR atr = api_pcsc.getatr() ts = int(atr[2:4], 16) hasta1 = True if ts&0x01 else False hastb1 = True if ts&0x02 else False hastc1 = True if ts&0x04 else False self.logger.info('ATR: ' + atr) if hasta1: offset = 2 offset = offset+1 if hasta1 else offset offset = offset+1 if hastb1 else offset offset = offset * 2 tc1 = atr[offset:offset+2] self.logger.info('TC1: ' + tc1) self.logger.info('ATR已包含TC1,可以解决THD88不支持接收11.8ETU字符的问题') else: self.logger.info('ATR应包含TC1,否则BCTC测试ETC时会出现THD88不支持接收11.8ETU字符的问题') self.fail('ATR应包含TC1,否则BCTC测试ETC时会出现THD88不支持接收11.8ETU字符的问题') if hastc1: etc, cloud = self.etc, self.cloud api_pcsc.reset(cold=True) etc.select() api_pcsc.reset(cold=False) etc.select()
def OnReset(self, event): try: api_pcsc.reset() atr = api_pcsc.getatr() self.showmsg('复位成功', 'ATR: ' + atr) except Exception as e: self.showlongmsg('复位失败', str(e))
def OnSelectReader(self, event): name = str(self.readers[event.GetSelection()]) self.info("尝试连接读卡器 '%s'" % name) try: api_pcsc.connectreader(name) atr = api_pcsc.getatr() except Exception as e: self.showlongmsg('读卡器连接失败', str(e)) return self.info("ATR '%s'" % atr)
def test_TA196(self): ''' ATR应包含TA1,且大于等于0x96 ''' atr = api_pcsc.getatr() self.logger.info('ATR: ' + atr) ts = int(atr[2:4], 16) hasta1 = True if ts&0x01 else False self.assertTrue(hasta1, 'ATR应包含TA1') ta1 = atr[4:6] self.assertTrue(int(ta1, 16)>0x96, 'ATR应包含TA1')
def test_parseatr(self): atr = api_pcsc.getatr() self.assertEqual(atr, ATR) status = self.bl.parseatr(atr) self.assertEqual(status, STATUS.get('00', None))