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:

  1. Wie sende ich Befehle (AT-Befehle), um das Gerät vom server?
  2. 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 client

    protected 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:

  1. Ist meine Annahme richtig? Wenn nicht, wie sollte ich es tun?
  2. Habe ich zu retten versucht es mit dem obigen code habe ich aber nicht die Datei.
  3. 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.
Als ich verstehen, es scheint die tracking-Gerät ist ein serielles Gerät. Ich würde empfehlen, das ausbrechen der Geräte-Kommunikation in ein separates Projekt, wo Sie konzentrieren sich auf den Teil des Projekts, ohne die TCP-oder UDT client - /server-code. Schließen Sie das Gerät direkt an Ihren computer Entwicklung, und kommen Sie voran. Es gibt viele Beispiele für serielle Kommunikation, die herum schwimmt.
Haben Sie das gelöst? Ich bin auf der Suche nach etwas ähnliches. Können Sie mir helfen?

InformationsquelleAutor Mergia | 2012-09-10

Schreibe einen Kommentar