Adafruit的FONA3克图书馆;究竟是如何工作的呢?

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

我想包在3G和TCP连接发送到服务器。下面是在.cpp,我发现.h文件中的链接:

https://os.mbed.com/users/Nels885/code/Adafruit_FONA_3G/

更具体地讲,我对TCPSend如何工作Adafruit_FONA_3G类下真糊涂。我想实现它,但我的代码似乎在功能packet[0] = 0;到停留在bool Adafruit_FONA_3G::TCPsend(char *packet)得到。

我曾尝试注释掉packet[0] = 0;并且代码经过运行的所有道路。我也曾尝试初始化char* packet[32]; packet[0] = 0;前后代码通过运行所有的方式。我假定的功能没有检测到分组输入。

下面是从.cpp文件的具体功能:

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;
}

这是我主要的代码:

#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();

    char Timeout[21];
    fona.getTCPtimeout(Timeout);

    char * Server = "52.14.99.26";
    uint16_t Port = 10001;
    fona.TCPconnect(Server,Port);

    char *Packet = "Pick Up %";
    fona.TCPsend(Packet);

    fona.TCPclose();

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

Adafruit_FONA_3G::TCPsend()假定你传递一个读写缓存。你传递一个只读缓冲区。因此,更换

char *Packet = "Pick Up %";

char Packet[] = "Pick Up %";

问题是真的,你的编译器允许你来初始化只读值写入指针。这是你的编译器的一个缺点。

© www.soinside.com 2019 - 2024. All rights reserved.