[英]Python read ussd response with GsmModem in human-readable string (en)
我正在使用 gsmmodem 包,并试图从我发送的 USSD 代码中获得响应。 USSD 代码执行工作正常,但响应格式不正确(非人类可读)我想以可读格式获取它。
请在此处检查代码
from __future__ import print_function
import logging
PORT = 'COM11'
BAUDRATE = 921600
USSD_STRING = '*111#'
PIN = None # SIM card PIN (if any)
from gsmmodem.modem import GsmModem
def main():
print('Initializing modem...')
modem = GsmModem(PORT, BAUDRATE)
modem.connect(PIN)
modem.waitForNetworkCoverage(10)
print('Sending USSD string: {0}'.format(USSD_STRING))
response = modem.sendUssd(USSD_STRING) # response type: gsmmodem.modem.Ussd
print('USSD reply received: {0}'.format(response.message))
if response.sessionActive:
print('Closing USSD session.')
# At this point, you could also reply to the USSD message by using response.reply()
response.cancel()
else:
print('USSD session was ended by network.')
modem.close()
if __name__ == '__main__':
main()
您得到的是gsm hexadecimal
类型的答案。 因此,您必须将 response.message 字符串解码为正确的格式,然后以人类可读的格式(如utf-8
encode
。
所以,经过
response = modem.sendUssd(USSD_STRING)
写:
ussd_message = unicode(response.message.decode('hex'), 'utf-16-be').encode('utf8')
print('USSD reply received: {0}'.format(ussd_message))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.