Example #1
0
    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()
Example #2
0
 def OnReset(self, event):
     try:
         api_pcsc.reset()
         atr = api_pcsc.getatr()
         self.showmsg('复位成功', 'ATR: ' + atr)
     except Exception as e:
         self.showlongmsg('复位失败', str(e))
Example #3
0
 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)
Example #4
0
    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')
Example #5
0
    def test_parseatr(self):
        atr = api_pcsc.getatr()
        self.assertEqual(atr, ATR)

        status = self.bl.parseatr(atr)
        self.assertEqual(status, STATUS.get('00', None))