Adafruit Fona 3g 库;这究竟是如何工作的?
Adafruit Fona 3g Library; How exactly does this work?
我正在尝试通过 3g 和 TCP 连接将数据包发送到服务器。下面是我找到的 .cpp 和 .h 文件的 link:
https://os.mbed.com/users/Nels885/code/Adafruit_FONA_3G/
更具体地说,我真的很困惑 TCPSend
在 Adafruit_FONA_3G
class 下是如何工作的。我正在尝试实现它,但我的代码似乎卡在函数 bool Adafruit_FONA_3G::TCPsend(char *packet)
下的 packet[0] = 0;
处。
我试过注释掉packet[0] = 0
;并且代码一直运行。我还尝试在 packet[0] = 0;
之前初始化 char* packet[32];
并且代码一直运行。我假设该函数没有检测到数据包输入。
这是 .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();
}
Adafruit_FONA_3G::TCPsend()
假定您向它传递了一个可写缓冲区。您正在传递一个只读缓冲区。所以,替换
char *Packet = "Pick Up %";
和
char Packet[] = "Pick Up %";
问题实际上是您的编译器允许您使用只读值初始化可写指针。这是你的编译器的缺点。
我正在尝试通过 3g 和 TCP 连接将数据包发送到服务器。下面是我找到的 .cpp 和 .h 文件的 link:
https://os.mbed.com/users/Nels885/code/Adafruit_FONA_3G/
更具体地说,我真的很困惑 TCPSend
在 Adafruit_FONA_3G
class 下是如何工作的。我正在尝试实现它,但我的代码似乎卡在函数 bool Adafruit_FONA_3G::TCPsend(char *packet)
下的 packet[0] = 0;
处。
我试过注释掉packet[0] = 0
;并且代码一直运行。我还尝试在 packet[0] = 0;
之前初始化 char* packet[32];
并且代码一直运行。我假设该函数没有检测到数据包输入。
这是 .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();
}
Adafruit_FONA_3G::TCPsend()
假定您向它传递了一个可写缓冲区。您正在传递一个只读缓冲区。所以,替换
char *Packet = "Pick Up %";
和
char Packet[] = "Pick Up %";
问题实际上是您的编译器允许您使用只读值初始化可写指针。这是你的编译器的缺点。