Используя ОС mbed и плату stm32 nucleo с Adafruit Fona 3g, я пытаюсь отправить данные на сервер через 3g-соединение. Я использую файлы .cpp и .h, размещенные здесь: https://os.mbed.com/users/Nels885/code/Adafruit_FONA_3G/file/b18cfba4283a/
Код, похоже, зависает на getTCPtimeout. Мне трудно понять, почему это так.
Я попытался закомментировать функцию getTCPtimeout, чтобы увидеть результаты, и код выполняется полностью, но никогда не устанавливает соединение с сервером.
#include "mbed.h"
#include "Adafruit_FONA.h"
#define FONA_RST D4
#define FONA_TX D1
#define FONA_RX D0
#define FONA_RI D7 //not used
char replybuffer[255];
Adafruit_FONA_3G fona(FONA_TX, FONA_RX, FONA_RST, FONA_RI);
Serial pc(USBTX, USBRX);
int main()
{
fona.TCPinitialize();
pc.printf ("initialize \n");
char *Timeout = "10000000";
fona.getTCPtimeout(Timeout);
pc.printf ("timeout \n");
char * Server = "47.218.188.133";
uint16_t Port = 23;
fona.TCPconnect(Server,Port);
pc.printf ("connect \n");
char * Packet = "Pick Up %";
fona.TCPsend(Packet);
pc.printf ("send \n");
fona.TCPclose();
pc.printf ("close \n");
}
Редактировать: я запускал код и заметил, что после исправления вышеуказанной проблемы код застревает в функции TCPSend, особенно прямо перед пакетом [0] = 0; который показан здесь:
bool Adafruit_FONA_3G::TCPsend(char *packet)
{
if (strlen(packet) > 0) {
mySerial.printf("%s", packet);
//mySerial.printf("%s\r\n", packet);
readline();
packet[0] = 0;
return true;
} else return false;
}
При комментировании строки код будет выполняться полностью. Я все еще нахожусь в процессе тестирования, чтобы увидеть, работает ли код по-прежнему, как задумано, но мой вопрос в том, какова цель package[0] = 0;?