Adafruit Fona 与 echo 服务器建立连接,但不发送任何数据
Adafruit Fona establishes connection with echo server, but doesn't send over any data
使用 mbed OS 和 stm32 核板与 Adafruit Fona 3g,我试图通过 3g 连接将数据发送到服务器。我正在使用此处发布的 .cpp 文件和 .h 文件:https://os.mbed.com/users/Nels885/code/Adafruit_FONA_3G/file/b18cfba4283a/
代码似乎卡在了 getTCPtimeout 上。我无法弄清楚为什么会这样。
我曾尝试注释掉 getTCPtimeout 函数以查看结果和代码 运行s 完全通过,但从未与服务器建立连接。
#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];
使用 mbed OS 和 stm32 核板与 Adafruit Fona 3g,我试图通过 3g 连接将数据发送到服务器。我正在使用此处发布的 .cpp 文件和 .h 文件:https://os.mbed.com/users/Nels885/code/Adafruit_FONA_3G/file/b18cfba4283a/
代码似乎卡在了 getTCPtimeout 上。我无法弄清楚为什么会这样。
我曾尝试注释掉 getTCPtimeout 函数以查看结果和代码 运行s 完全通过,但从未与服务器建立连接。
#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];