簡體   English   中英

Python 在人類可讀的字符串中使用 GsmModem 讀取 ussd 響應(en)

[英]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()

代碼鏈接http://pastebin.com/SvYptykS

您得到的是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM