Adafruit的FONA建立与回声服务器的连接,但不发送任何数据了

问题描述 投票:2回答:1

使用mbed OS和STM32核蛋白板与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;
}

当注释掉行,代码运行,一路过关斩将。我仍然在测试的过程中,看是否如预期的代码仍然工作,但我的问题是,究竟是什么包的目的[0] = 0;?

c++ stm32 gsm mbed adafruit
1个回答
1
投票

Adafruit_FONA_3G::getTCPtimeout()假设你通过它的大小> 20.你通过更小尺寸的一个只读缓存的读写缓存。因此,更换

char *Timeout = "10000000";

char Timeout[21];
© www.soinside.com 2019 - 2024. All rights reserved.