def read(self):
try:
self.SIM.gotoFile(SMS_FILE_PATH)
# Send the get response command, to find out record length
data, sw = self.SIM.sendAPDUmatchSW("A0C000000F", SW_OK)
self.recordLength = int(data[28:30], 16) # Should be 0xB0 (176)
self.numberRecords = int(data[4:8], 16) / self.recordLength
except:
pySIMmessage(self, "Unable to access your SMS folder on your SIM card.", "SIM card error")
return
if not self.SIM.checkAndVerifyCHV1(CHV_READ, data):
return
apdu = "A0B2%s04" + IntToHex(self.recordLength)
dlg = wxskinProgressDialog("SMS", "Reading your SMS messages", self.numberRecords + 1, self, wx.PD_CAN_ABORT | wx.PD_APP_MODAL)
try:
for i in range(1, self.numberRecords + 1):
if not dlg.Update(i):
break
data, sw = self.SIM.sendAPDUmatchSW(apdu % IntToHex(i), SW_OK)
# See if SMS record is used
status = int(data[0:2], 16)
if status & 1 or data[2:4] != 'FF':
try:
sms = SMSmessage()
sms.smsFromData(data)
self.itemDataMap[i] = (sms.status, sms.timestamp, sms.number, sms.message, sms)
except:
#~ print i
#~ print data
#~ print_exc()
pass
except:
# Finished with the guage
print_exc()
pySIMmessage(self, "Unable to read your SMS messages on your SIM card.", "SIM card error")
dlg.Destroy()
评论列表
文章目录