我将 TEL0124 SIM7600 调制解调器 4G LTE 模块连接到 Arduino 板上。将.
虽然我能够发送 AT 并获得 OK,但我想使用 php 将数据传输到服务器。我无法向服务器发送任何数据
void setup()
{
Serial.begin(115200);
Serial1.begin(115200);
sendData("AT+CCID", 3000, DEBUG);
sendData("AT+CREG?", 3000, DEBUG);
sendData("AT+CGATT=1", 1000, DEBUG);
sendData("AT+CGACT=1,1", 1000, DEBUG);
sendData("AT+CGDCONT=1,\"IP\",\"TM\"", 1000, DEBUG);
sendData("AT+CIPSTART=\"TCP\",\"www.sxxxxde/data2mysql.php?key=xxx",80", 2000, DEBUG);
Serial.println("4G HTTP Test Begin!");
}
void loop()
string http_str = "AT+HTTPPARA=\*URL","HTTPP://www.sxxxxde.de/data2mysql.php?key=xxxx&ID=9999A0200A1300A21024A324A426A510A614A714A828A90A10A110A120"\"\r\n";
Serial.println(http_str);
sendData("AT+HTTPINIT\r\n", 2000, DEBUG);
sendData(http_str, 2000, DEBUG);
sendData("AT+HTTPACTION=0\r\n", 3000, DEBUG);
sendData("AT+HTTPTERM\r\n", 3000, DEBUG);}
String sendData(String command, const int timeout, boolean debug){
String response = "";
Serial1.println(command);
long int time = millis();
while ( (time + timeout) > millis())
{
while (Serial1.available())
{
char c = Serial1.read();
response += c;
}
}
这只是一个例子(写在这里),但它多少说明了我在做什么。 ,通过 PHP 调用将一串数据发送到服务器。
我想通过 4g 发送数据,但由于 GSM 不再适用于我的调制解调器 SIM800 SIM900。这就是我选择 4G LTE 版本的原因。
关于如何在 4G 上向服务器发送一串数据流有什么想法吗?
非常感谢任何帮助!
您的 AT 命令处理存在几个严重问题。
命令行应仅以
\r
而不是 \r\n
终止。 V.250 规范说:
“命令行由三个元素组成:前缀、正文和终止字符。...终止字符可以由用户选项(参数 S3)选择,默认为 CR”
注意这里的语言,“the 终止字符”。一个,而不是两个字符1.
强调该文件的重要性:即使在爱立信的手机中实施 AT 命令十多年后,我和我的同事仍然定期查阅该文件!
事实上,请立即停止阅读此答案的其余部分,而是先阅读 V.250 中的第 5 章,然后继续阅读此处的其余部分。
尝试在您的
setup
函数中调用的命令行都缺少终止字符,因此不会被识别为命令行。换句话说,所有试图执行的命令行都被忽略
由调制解调器作为垃圾输入。
你不应该使用等待一定的时间来代替 reading 和 parsing 来自调制解调器的响应。
您必须实施代码来读取从调制解调器发回的响应并对其进行解析以正确识别并等待最终结果代码。没有别的工作。
使用
Serial1.available()
(+时间)作为框架机制保证不会起作用。您必须逐个字符地缓冲调制解调器响应数据,直到您拥有完整的响应行,然后您可以继续解析/处理该行。
1 你应该never改变
S3
的默认值13,所以在实践中你永远不必处理那个寄存器。
在我看来,下一行是不正确的: string http_str = "AT+HTTPPARA=*URL","HTTP://www.sxxxxde.de/data2mysql.php?key=xxxx&ID=9999A0200A1300A21024A324A426A510A614A714A828A90A10A110A120"" ";
我想,这条线会这样开始: string http_str = "AT+HTTPPARA="URL","http://www.sxxxxde.de 因为如果我们想将一个 " 字符放入字符串中,我们将使用 " 组合代替。最后也是。