【发布时间】:2016-06-23 19:28:03
【问题描述】:
所以你对我使用的部件有一个基本的了解,我有:
Arduino Uno
Seeed Studio GPRS Shield v2.0 (http://www.seeedstudio.com/wiki/GPRS_Shield_V2.0)
Adafruit V3.3 的终极 GPS (https://www.adafruit.com/products/746?gclid=Cj0KEQjw3-W5BRCymr_7r7SFt8cBEiQAsLtM8qn4SCfVWIvAwW-x9Mu-FLeB6hLmVd0PAPVU8IAXXPgaAtaC8P8HAQ)
这是我的问题: 我已经测试了与 GPRS shield 堆叠的 Arduino,它在通过 TCP 访问互联网、发送 SMS 等方面工作正常。但是,我的应用程序需要我将 GPS 数据从 adafruit GPS 发送到我的网络服务器已经用 Django 和 postgresql 编写过代码。后台设置好了。
我需要将数据从 Uno(客户端)发送到我用 python 编码的笔记本电脑(服务器)(这只是为了检查它是否正在创建连接):
#!/usr/bin/env python
import socket
# import postgres database functions
TCP_IP = '192.168.1.112'
TCP_PORT = 10000
BUFFER_SIZE = 40
server_address = (TCP_IP,TCP_PORT)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created.'
# Bind socket to TCP server and port
try:
s.bind(server_address)
except socket.error as msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
print 'Socket Bind Complete.'
# Start Listening on socket
s.listen(1) # Puts socket into server mode
print 'Listening on port: ', TCP_PORT
# Now Keep Talking with the client
while (1):
# Wait to accept a connection
conn, addr = s.accept() # Wait for incoming connection with accept()
print 'Connection address:', addr
data = conn.recv(BUFFER_SIZE)
if not data: break
print "recieved data: data", data
conn.send(data) #echo
conn.close()
我认为这没有问题。从这里我会将数据发布到我的 postgreSQL 数据库。但是,当我尝试在 SIM900 模块上使用 AT 指令通过 10000 端口连接到服务器时,我无法连接:
AT+CIPSHUT
SHUT OK
AT+CGATT?
+CGATT: 1
OK
AT+CIPMUX=0
OK
AT+CSTT="fast.t-mobile.com","",""
OK
AT+CIICR
OK
AT+CIFSR
6.60.94.49
AT+CIPSTART="TCP","192.168.1.112,"10000"
OK
STATE: TCP CLOSED
CONNECT FAIL
我已经尝试通过 TCP 连接,并用下面的语句替换了 AT+CIPSTART 行并且它有效,所以我知道 TCP 有效:
AT+CIPSTART="TCP","www.vishnusharma.com", "80"
我使用的 IP 是否错误?我对此很陌生,但如果它有所作为,我在我的 Mac OSX 上使用 Ubuntu 16.04 分区。我还检查了 T-mobile 的 APN,看起来还不错。
任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: python tcp arduino at-command gprs