Realtid GPS Tracker med integrerad Google Maps (4 / 7 steg)
Steg 4:
TCP SERVER
Den TCP Server är kodad i python. Det är mycket enkel i drift, i princip öppnar upp en TCP-port och väntar anslutningen från GPS trackers GSM-modul. När den tar emot, anslutningen, det accepterar det och som och när GPS paketen gäller, i den analyserar det ut och lagrar latitud och longitud i en MySQL-tabell (som vi ska skapa i nästa avsnitt). TCP servern kommer att köras på någon python 2.x, ladda ner den från http://www.python.org/. Det är värt att notera att Python 3 har stora Syntaxändringar, därför koden körs inte förrän du justera den för att göra den kompatibel med Python 3. Det använder en python kallas MySQLdb, som du kan ladda ner från MySQLdb från http://www.zope.org/Members/adustman/Products/MySQLdb . Följ instruktionerna för att installera det på din python installation.
Skriv följande kod i en fil som heter tcpServer.py och du kan köra det genom att skriva python tcpServer.py på kommandoraden. Ersätt "your_ip_address" med den maskin du kör TCP Server på IP-adress. Observera att om din maskin i på LAN och du har en router/brandvägg, kanske du måste port framåt TCP-port 32000 med IP-adressen för maskinen som TCP Server körs. I annat fall paketen kommer från utanför nätverket kommer aldrig att nå TCP Server maskinen. Kör inte serverkoden nu, vi har fortfarande massor av kodning för att göra. Spara filen och gå vidare till nästa avsnitt.
Observera också att du slipper använda TCP. Du kan också använda UDP eller några andra transportprotokoll. TCP-paket har en 20 byte header UDP har endast 8 byte. TCP också är ett komplext protokoll och en overkill för denna applikation. Jag använde den, men känn dig fri att använda UDP.
#! / usr/bin/env python
import socket
importera MySQLdb
TCP_IP = "your_ip_address" "
TCP_PORT = 32000
BUFFER_SIZE = 40
# ClearDB. Tar bort tabellen hela uppföljning
def ClearDB (curs, d):
curs.Execute ("" "
Sätt in i gmaptracker (lat, lon)
VÄRDEN (0.0,0.0) "" ")
d.commit()
# Ansluta till mySQL databas
def tServer():
försök:
DB = MySQLdb.connect (host = "your_host",
User = "your_user",
passwd = "your_password",
DB = "gmap")
utom MySQLdb.Error, e:
Print "Fel % d: %s" % (e.args[0], e.args[1])
sys.Exit(1);
markören = db.cursor()
# Börja med färska spårning bord
ClearDB(cursor,db)
# Ställ in lyssnande Socket
försök:
s = socket.socket (socket.AF_INET, uttag. SOCK_STREAM)
s.Setsockopt (socket. SOL_SOCKET, uttag. SO_REUSEADDR, 1)
s.BIND ((TCP_IP, TCP_PORT))
skriva ut "Lyssnar..."
s.listen(1)
Conn, addr = s.accept()
skriva ut "accepterat anslutning från adress:', addr
Förutom socket.error:
om s:
s.Close()
skriva ut "kunde inte öppna socket:"
cursor.Close()
Conn.Close()
DB.Close()
sys.Exit(1)
försök:
medan 1:
data = conn.recv(BUFFER_SIZE)
om inte data: paus
str1, str2 = data.split ("Long:")
str1 = str1.split ("Lat:") [1]
Latitude = float(str1)
longitud = float(str2)
cursor.Execute ("" "
Sätt in i gmaptracker (lat, lon)
VÄRDEN (%s, %s) "" ", (latitud, longitud))
DB.commit()
Förutom KeyboardInterrupt:
ClearDB(cursor,db);
cursor.Close()
Conn.Close()
DB.Close()
om __name__ == "__main__":
tServer()