SIM5320E - POST-запрос с большими данными идет медленно - PullRequest
0 голосов
/ 07 мая 2019

Я создал прототип, используя малину и модуль sim5320E. Цель состоит в том, чтобы отправить большой объем данных (~ 100 КБ) через HTTP с помощью этого модуля 3G.

Я следовал инструкциям, указанным в разделе 16.5 (HTTPS) набора AT-команд для SIM5320: https://cdn -shop.adafruit.com / радиокомпоненты / SIMCOM_SIM5320_ATC_EN_V2.02.pdf

И он работал нормально, за исключением того, что он медленный.

Из того, что я понимаю из документации (и видно из моих тестов), данные для отправки должны быть разделены на куски по максимум 4096 байт.

Каждый кусок должен быть отправлен в так называемый «буфер отправки» с помощью команды AT + CHTTPSSEND.

Время от времени мы должны проверять, чтобы в буфере отправки не было слишком много данных в кеше, используя AT + CHTTPSSEND? команда.

Последняя команда AT + CHTTPSSEND фиксирует все отправляемые данные.

Моя проблема в том, что для каждого AT + CHTTPSSEND требуется около 10 секунд, а это значит, что мой HTTP-запрос может занять около 250 секунд.

Кто-нибудь знает, что может вызвать эту медлительность?

Вот код, иллюстрирующий проблему:

    def send_chunk(self, chunk):

        # Send chunk
        self._send('CHTTPSSEND={}'.format(len(chunk)), wait_for=">")
        self._send_raw(chunk.encode())

        # Check how much data is left in the sending buffer
        # Wait for this data to be under 3Kb
        data_left = 3001
        while data_left > 3000:
            response = self._send('CHTTPSSEND?', wait_for="+CHTTPSSEND:")
            data_left = int(response.strip().split(" ")[1])
            time.sleep(2)

А вот логи, которые я получаю:

>> AT+CHTTPSSEND=4096     -> This commands takes ~10 seconds
<< >
>> Sending chunk of data
<< OK
>> AT+CHTTPSSEND?
<< +CHTTPSSEND: 0
...