gpt4 book ai didi

c++ - Adafruit Fona 与 echo 服务器建立连接,但不发送任何数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:51 28 4
gpt4 key购买 nike

将 mbed 操作系统和 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;
}

注释掉该行时,代码将一直运行。我仍在测试代码是否仍按预期运行,但我的问题是 packet[0] = 0; 的确切目的是什么?

最佳答案

Adafruit_FONA_3G::getTCPtimeout() 假定您向它传递一个大小 > 20 的可写缓冲区。您传递的是一个较小的只读缓冲区。所以,替换

char *Timeout = "10000000";

char Timeout[21];

关于c++ - Adafruit Fona 与 echo 服务器建立连接,但不发送任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54413080/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com