Python 使用GPRS shield和AT命令将arduino传感器数据发送到服务器

Python 使用GPRS shield和AT命令将arduino传感器数据发送到服务器,python,arduino,sensors,at-command,gprs,Python,Arduino,Sensors,At Command,Gprs,我正在尝试使用GPRS屏蔽(geeetech提供的sim900屏蔽)将arduino传感器数据发送到服务器。我有这个特别的设置,因为数据将被更新到一个网站,设备将漫游。我不能使用,因为据我所知,每15分钟更新一次,我需要大约每5-10秒更新一次 为了连接,我尝试了下面的代码来形成UDP连接,但它没有被发送到接收IP和端口。我不知道为什么,arduino方面没有发生错误 ///connect void connectUDP() { mySerial.println("AT+CSTT=\"APN\

我正在尝试使用GPRS屏蔽(geeetech提供的sim900屏蔽)将arduino传感器数据发送到服务器。我有这个特别的设置,因为数据将被更新到一个网站,设备将漫游。我不能使用,因为据我所知,每15分钟更新一次,我需要大约每5-10秒更新一次

为了连接,我尝试了下面的代码来形成UDP连接,但它没有被发送到接收IP和端口。我不知道为什么,arduino方面没有发生错误

///connect
void connectUDP()
{
 mySerial.println("AT+CSTT=\"APN\"");
 delay(3000);
 ShowSerialData();
 mySerial.println("AT+CIICR");
 delay(3000);
 ShowSerialData();
 mySerial.println("AT+CIFSR");
 delay(3000);
 ShowSerialData();
 mySerial.println("AT+CIPSTART=\"UDP\",\"SERVER IP\",\"SERVER PORT\"");
 delay(3000);
 ShowSerialData();
 mySerial.println();

}


///send udp packet to server 
void sendUDP()
{
 for(int x = 0; x < 30; x++){
   mySerial.println("AT+CIPSEND"); 
   delay(100);
   ShowSerialData();
   mySerial.println("\"hello world\"");
   delay(100);
   ShowSerialData();
   mySerial.println((char)26);
   delay(1000);
   ShowSerialData();
 }
 mySerial.println();
 //ShowSerialData();
}

我可以看到一个可能的解决方案可能是将其更改为TCP连接,但我不知道如何做…

首先:永远,永远不要使用延迟,而不是通过解析调制解调器给出的实际响应来正确等待。有关更多详细信息,请参阅,包括关于在发送数据之前等待“\r\n>”的要点,该点显然与
AT+CMGS
共享行为


然后,当您修复了AT命令处理(请参阅以获取一些提示)后,将
服务器IP
服务器端口
更改为在您自己的PC上打开/未防火墙的内容(通过检查AT进行验证)。在运行AT命令的同时运行,并验证是否接收到相应的通信量。如果到目前为止一切正常,那么问题似乎出在服务器上。

首先:永远,永远不要使用延迟,而不是通过解析调制解调器给出的实际响应来正确等待。有关更多详细信息,请参阅,包括关于在发送数据之前等待“\r\n>”的要点,该点显然与
AT+CMGS
共享行为

然后,当您修复了AT命令处理(请参阅以获取一些提示)后,将
服务器IP
服务器端口
更改为在您自己的PC上打开/未防火墙的内容(通过检查AT进行验证)。在运行AT命令的同时运行,并验证是否接收到相应的通信量。如果到目前为止一切正常,那么问题似乎出在服务器上。

我上面链接的答案显示了代码的结构。也许你可以使用mySerial.readln函数?否则,基于mySerial.read编写您自己的readln函数(我确信必须退出该函数)。也许你可以使用mySerial.readln函数?否则,基于mySerial.read编写您自己的readln函数(我确信必须退出)。
import SocketServer

PORTNO = 14

class handler(SocketServer.DatagramRequestHandler):
    def handle(self):
        newmsg = self.rfile.readline().rstrip()
    print (newmsg)
        self.wfile.write(self.server.oldmsg)
        self.server.oldmsg = newmsg

s = SocketServer.UDPServer(('',PORTNO), handler)
print "Awaiting UDP messages on port %d" % PORTNO
s.oldmsg = "This is the starting message."
s.serve_forever()