Kommunikation GPS/GPRS/GSM-tracker mit dem server
Ich bin der Entwicklung eines Fahrzeug-tracking-system mit GPS/GPRS/GSM. Die tracking-Gerät, das ich momentan verwende ist GV100, ein GPS - /GPRS - /GSM-tracker von Quectel ([www.quectel.com][1].)
Ich bin nicht in der Lage, die Verbindung zwischen dem Gerät und dem backend-server. Meine Frage vor allem ist:
- Wie sende ich Befehle (AT-Befehle), um das Gerät vom server?
- Wie kann ich akzeptieren der Antwort (Berichte und acknowledgement-Nachrichten) aus dem Gerät, um es zu speichern in die Datenbank?
Schickte ich den Befehl an das Gerät mit der MGV100 Verwalten-Tool (Software von Quectel) über die serielle Schnittstelle. Und ich bekam die Bestätigungs-SMS-Nachricht über GSM-fähige Mobiltelefon. Nun, ich möchte, um eine Nachricht zu senden, vom server und akzeptieren die Antwort auf dem server (nicht per SMS). Ich weiß nicht, wie Sie den Befehl senden und empfangen der Antwort. Ich habe keine Vorherige Erfahrung in der Entwicklung solcher Systeme.
Wäre es toll, wenn ich ein Beispiel-code und setup-Verfahren, wenn es erforderlich ist.
Wo bekomme ich einen entsprechenden Lehrgang für den Fall, den ich erwähnt?
Dank jhonkola
Zu verstehen, wie server empfängt und sendet Daten an das Gerät, ich entschied mich zunächst implementieren Sie die Kommunikation zwischen dem client (derzeit mein PC) und-server. Obwohl mein oberstes Ziel ist die Kommunikation mit dem Gerät, derzeit versuche ich eine Verbindung herstellen von meinem PC zum server. Wenn das mir gelingt, ich werde mich bemühen, zu kommunizieren, um die server aus dem Gerät, das muss IP-Adresse und port-Nummer des Servers zum senden und empfangen von Daten.
Das ist meine Vermutung, wie es zu tun:
- Kann ich einen port öffnen auf dem server aus .cs-code so zu kommunizieren
über TCP/UDP. - Client kann dann Daten senden und empfangen über das
port. - Kann ich speichern Sie die gesendeten Daten vom client auf dem server die Datei
system und überprüfen Sie es jederzeit. (Bin nicht die Speicherung der Daten in relationaler Datenbank, weil ich nicht wollen, um über die Mühe Datenbank jetzt Fragen.)
Dies ist, wie ich versucht umzusetzen:
Server eine C# - Anwendung:
Wenn auf eine Schaltfläche geklickt wird, öffnet es einen port und lauscht clientprotected void btnConnect_Click(object sender, EventArgs e) { try { continueListening = true; while (continueListening) { int port=Int32.Parse(txtPort.Text); lblOutput.Text = "Port is now " + port +". Waiting for connection"; TcpListener myList = new TcpListener(IPAddress.Parse(txtIpAddress.Text), port); myList.Start(); Socket s = myList.AcceptSocket(); lblOutput.Text="Connection accepted from " + s.RemoteEndPoint; byte[] b = new byte[100]; int k = s.Receive(b); lblOutput.Text = ("Recieved..."); String obtainedText = ""; for (int i = 0; i < k; i++) { obtainedText = obtainedText + " " + (Convert.ToChar(b[i])); } writeToTextFile("C:/Users/MekAtIbex/Desktop/TESTED/RECIEVED.txt", obtainedText); lblOutput.Text = obtainedText; ASCIIEncoding asen = new ASCIIEncoding(); lblOutput.Text = lblOutput.Text +" "+ ("The string was recieved by the server."); lblOutput.Text = lblOutput.Text +" "+ ("\r\nSent Acknowledgement"); }
Client: C# - Windows-Anwendung
private void btnSend_Click(object sender, EventArgs e)
{
try
{
TcpClient tcpClient = new TcpClient();
int port=Int32.Parse(txtPort.Text.Trim());
tcpClient.Connect(txtIpAddress.Text, port);
lblStatus.Text = ("Connected");
Stream stm = tcpClient.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] bytesToSend = asen.GetBytes(txtData.Text);
lblStatus.Text = ("Transmitting.....");
stm.Write(bytesToSend, 0, bytesToSend.Length);
byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);
for (int i = 0; i < k; i++)
{
txtaResponse.Text = txtaResponse.Text + "\n" + "Res... " + new DateTime() + " " + Convert.ToChar(bb[i]);
Console.Write(Convert.ToChar(bb[i]));
}
tcpClient.Close();
}
catch (Exception ex)
{
lblStatus.Text = ("Connected");
txtaRequest.Text = txtaRequest.Text + "\n" + "Err... " + new DateTime() + " " + ex.StackTrace;
}
}
Meine aktuellen Fragen sind:
- Ist meine Annahme richtig? Wenn nicht, wie sollte ich es tun?
- Habe ich zu retten versucht es mit dem obigen code habe ich aber nicht die Datei.
- Was ist der Vorteil und der Nachteil der Verwendung von UDP im Vergleich zu TCP für tracking-Anwendungen?
Ich habe gestöbert, aber ich konnte nicht finden einen Platz für einen guten start. Und, ich habe keine Erfahrung in solchen Anwendungen, konnte ich nicht Debuggen meiner Anwendung.
Haben Sie das gelöst? Ich bin auf der Suche nach etwas ähnliches. Können Sie mir helfen?
InformationsquelleAutor Mergia | 2012-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Ihre grundlegenden Annahmen korrekt sind. Der server würde einen listening-port und dann könnte der client mit diesem port verbinden und drop-off-Daten als erforderlich. Sie können die server-log diese in einer Datei für eine spätere überprüfung zu.
Ist die Datei schon erstellt? Die Methode, die Sie haben, schlägt fehl, wenn die Datei nicht vorhanden auf dem system.
UPD ist weniger teuer in Bezug auf Netzwerk-setup. Es ist das "schnelle und schmutzige" Methode der Kommunikation. Der Nachteil ist, dass du vielleicht nicht jede Meldung ordnungsgemäß geliefert. In einigen Anwendungen, das spielt einfach keine Rolle, und die Vorteile sind es Wert, diese Kosten.
Nun ein paar Dinge würde ich ändern:
So können Ihre Zuhörer die breiteste Möglichkeit zu fangen eingehenden Nachrichten und wird höchstwahrscheinlich keine Auswirkungen auf andere Systeme (da dies im wesentlichen die erste networking-Programm).
Werden Sie auch wollen, um Ihre Zuhörer spawn ein thread-handle der Datei schreiben und dann gehen Sie zurück zu hören. Dies ist eine sehr gängige Praxis und ermöglicht für Server mehrere verbindungen zu verarbeiten.
InformationsquelleAutor Rubix Rechvin
Ist es schwierig umfassend zu beantworten, weil eine gute Antwort würde erfordern detaillierte Kenntnisse über das Produkt. Ich schlage vor, dass Sie sich an den Hersteller /Händler für Unterstützung.
Ein paar Allgemeine Punkte:
Senden von Kommandos über das Netzwerk an das Gerät erfordert, dass Sie in der Lage, eine Verbindung zu dem Gerät aus dem internet. Dies ist nicht immer einfach über GSM-Netz, wie der Betreiber kann blockieren alle eingehenden Datenverkehr. Die Hersteller haben möglicherweise Lösungen für diese.
Können Sie eine Verbindung zu dem Gerät, das Protokoll, das verwendet wird, um Befehle (unter der Annahme, dass solche-Protokoll built-in) enthält auch einen Mechanismus zum empfangen von Antworten.
InformationsquelleAutor jhonkola