Как разместить данные через AT команду? - PullRequest
0 голосов
/ 12 апреля 2019

Я использую raspberry Pi и SIM800L (USB-соединение) для отправки данных через HTTP POST REQUEST.Вот мой код на Python:
Импортированная библиотека:

import time, serial, sys, json

Функция отправки

sim800l = serial.Serial("/dev/ttyUSB0",baudrate=9600,timeout=0,rtscts=0,xonxoff=0)
def sendat1(cmd, msg=None):
    if cmd == 'res' : sim800l.write('Z'); return
    if cmd == 'out' : sim800l.write(chr(26)); return
    if cmd == None  :
        if msg !=None :
            sim800l.write(msg);
            print(msg)
            return sim800l.read(32798)
    sim800l.write('AT+'+cmd+'\r')
    time.sleep(1)#3
    obu = str(sim800l.inWaiting())
    msg = sim800l.read(32798)
    print(obu+':\n'+msg)
    return msg

Запустите команду здесь

try:
    if sim800l.inWaiting()>0: sim800l.flushInput()
    sendat1('res')
    #HTTP SEND POST REQUEST
    sendat1('CMEE=2')
    sendat1('CSQ')
    sendat1('CGATT?')
    sendat1('SAPBR=3,1,"APN","CMNET"')
    sendat1('SAPBR=2,1')
    sendat1('HTTPSSL=1')# im using https 
    sendat1('HTTPTERM')
    sendat1('HTTPINIT')
    sendat1('HTTPPARA="CID",1')
    sendat1('HTTPPARA="URL","https://myweb.com/save/'+'longit'+'/'+'latit'+'"')
    sendat1('HTTPPARA="CONTENT","application/json"')
    data = open("face.png","r").read()
    data = json.dumps({'picture':data.encode('base64')})
    sendat1('HTTPDATA='+str(sys.getsizeof(data))+',15000')
    sendat1(None,data)
    sendat1('HTTPREAD')
    sendat1('HTTPACTION=1')#post request

    sendat1('out')
finally:
    sim800l.close()

Когда я выполнюпрограмма, которая застряла в команде HTTPREAD, которая никогда не вызывалась.Это потому, что данные слишком велики или что?Что мне делать?

...