Zum Inhalt springen

Hardware über Netzwerk ansprechen/auslesen


murat1895

Empfohlene Beiträge

Hallo zusammen,

im Rahmen eines Hochschulprojekts sollen wir im Team von 5 Gruppen eine Auswertungssoftware für eine Zeitmessanlage entwickeln.

Die Zeitmessanlage wird von einem Verein zum Erfassen von Rundenzeiten entwickelt. An den enstrechenden Objekten wird ein Transponder der Marke MyLaps verwendet. Die Transponder werden bei überquerung einer Aktiv-Schleife an einen AMB-Decoder weitergeleitet.

Der AMB-Decoder kann per Netzwerkkabel an einen PC angeschlossen werden. (So wurde das bisher immer gemacht, es gibt auch eine bestehende Software aus Kanada, die ist allerdings teilweise schlecht umgesetzt) Wie kommen wir nun an die Daten ran? Hat da wer nen Stichwort, zu dem man sich schlau machen kann?

Danke und Gruß!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der AMB-Decoder kann per Netzwerkkabel an einen PC angeschlossen werden. (So wurde das bisher immer gemacht, es gibt auch eine bestehende Software aus Kanada, die ist allerdings teilweise schlecht umgesetzt) Wie kommen wir nun an die Daten ran? Hat da wer nen Stichwort, zu dem man sich schlau machen kann?

Ihr könnt ja mal mit Wireshark belauschen was das Ding so "spricht". Wenn das TCP/IP ist, dann ist das schon die halbe Miete. Es kann natürlich immernoch sein, dass das Anwendungsprotokoll irgendwie verschlüsselt ist.

Edit: So, ich habe ein wenig deine Arbeit gemacht: Das Ding müßte auch eine serielle Schnittstelle haben (vielleicht euer Modell nicht). Darüber müßte es einfacher sein an die Daten zu kommen.

Bearbeitet von afo
Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für deine Arbeit! :D

Ja das ding hat ne serielle Schnittstelle. Allerdings wird der Decoder ca. 20-25Meter vom Laptop, auf dem die Software laufen soll, entfernt sein (Zwischen den beiden Geräten wurde im letzten Jahr ein Cat7 Kabel verlegt).

Ich werde morgen mal Wireshark drüber laufen lassen. Aber ich gehe mal davon aus, das es TCP/IP sein wird....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der folgende Auszug stammt aus der Beschreibung.

++++++++++++++++++++++++++++++++++++++++++++++++

1.3.4. MENU Dataserver

This function enables the decoder to contact a server to

upload data to. Contact AMB i.t. for more details.

Within the server menu you can see/change:

-Enabled:

Live upload to a data server is enabled.

-Host:

Host name or IP address of a server to upload data

to.

-Port:

TCP/IP port where the server receives the data

-MyLaps practice code:

a unique code which should be used for registering on

MyLaps Practice website (Home - MYLAPS Sports Timing

practice). Please visit MyLaps.com for more

information about online race results

+++++++++++++++++++++++++++++++++++++++++++++++++

Also muss ich irgendwie diesen bestimmten Port "abhören". Aber da es ja nicht UDP sondern TCP ist, muss ich ja eine Verbindung erstmal aufbauen?! Und wie komme ich dann an die Daten? Ich habe bisher einfach keine Ahnung davon ... -.-

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber da es ja nicht UDP sondern TCP ist, muss ich ja eine Verbindung erstmal aufbauen?!
Nein, du sollst einen Server implementieren. Der Verbindungsaufbau geht vom Client aus.

Und wie komme ich dann an die Daten? Ich habe bisher einfach keine Ahnung davon ... -.-

->

Contact AMB i.t. for more details.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich das ganze als Server implementieren soll, müsste ich doch bei Wireshark sehen können, das der AMB Decoder versucht, eine Verbindung aufzubauen. Allerdings sehe ich bei Wireshark nichts. Habe die IP-Adresse vom Server entprechend angepasst. Lediglich wenn ich die alte Software zur Zeitmessung starte gibt´s bei Wireshark entsprechende Einträge. Hier mal ein Screenshot. IP vom Decoder: 192.168.1.10, IP vom PC: 192.168.1.11 post-70962-14430449963202_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Lediglich wenn ich die alte Software zur Zeitmessung starte gibt´s bei Wireshark entsprechende Einträge.
Diese Einträge zeigen aber, dass der Verbindungsaufbau vom PC ausgeht. Also ist das nicht der oben beschriebene "MENU Dataserver"-Mechanismus.

Also nochmal ins Handbuch gucken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Soo ich habe nun folgenden Quellcode verwendet:


using System;

using System.Net;

using System.Net.Sockets;

using System.Text;


public class ConsoleApplication1

{

    public static void Main()

    {


        string input, stringData;

        TcpClient server;


        try

        {

            server = new TcpClient("192.168.1.10", 5100);

        }

        catch (SocketException)

        {

            Console.WriteLine("Unable to connect to server");

            return;

        }

        NetworkStream ns = server.GetStream();

        byte[] data = new byte[server.ReceiveBufferSize];


        int recv = ns.Read(data, 0, data.Length);

        stringData = Encoding.ASCII.GetString(data, 0, recv);

        Console.WriteLine(stringData);


        while (true)

        {

            input = Console.ReadLine();

            if (input == "exit")

                break;

            ns.Write(Encoding.ASCII.GetBytes(input), 0, input.Length);

            ns.Flush();


            data = new byte[server.ReceiveBufferSize];

            recv = ns.Read(data, 0, data.Length);

            stringData = Encoding.ASCII.GetString(data, 0, recv);

            Console.WriteLine(stringData);

            Console.WriteLine("Neue Daten");

        }

        Console.WriteLine("Disconnecting from server...");

        ns.Close();

        server.Close();

    }

}

Nachdem startet die Console. Gibt auch etwas aus. Allerdings nur eine Zeile. Bei der While-Schleife hakt es dann.

Wenn ich Beispielsweise einen Transponder über die Zeitmessanlage fahre, sehe ich diesen nun auch bei Wireshark.

Aber in der Console erscheint nichts. Womit könnte das zu tun haben? Wahrscheinlich daran, dass das Progrämmchen nicht weiß, wann die Daten alle angekommen sind und geschrieben werden kann?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach sorry, habs nun hinbekommen und zwar so:


using System;

using System.Net;

using System.Net.Sockets;

using System.Text;

using System.Text.RegularExpressions;


public class ConsoleApplication1

{

    public static void Main()

    {


        string stringData;

        TcpClient server;


        try

        {

            server = new TcpClient("192.168.1.10", 5100);

        }

        catch (SocketException)

        {

            Console.WriteLine("Unable to connect to server");

            return;

        }

        NetworkStream ns = server.GetStream();

        byte[] data = new byte[server.ReceiveBufferSize];


        int recv = ns.Read(data, 0, data.Length);

        stringData = Encoding.ASCII.GetString(data, 0, recv);

        Console.WriteLine(stringData);


        while (true)

        {

            data = new byte[server.ReceiveBufferSize];

            recv = ns.Read(data, 0, data.Length);

            stringData = Encoding.ASCII.GetString(data, 0, recv);        

            Console.WriteLine(stringData);        

        }

        Console.WriteLine("Disconnecting from server...");

        ns.Close();

        server.Close();

    }

}


Ich füge nochmal ein Bild bei, wo man den ausgegebenen String erkennt.

Die 3973767 ist nun die ID vom Transponder.

Wie bekomme ich es nun ideal und schlau hin, nur die IDs zu bekommen.

Man könnte natürlich jetzt mit regulären Ausdrücken machen. Aber das macht man doch sicherlich nicht so oder?

post-70962-14430449969857_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann brauchst du ja kein Regex.

Okay, ging doch nicht. Erst waren die Daten, die übertragen wurden nur 42 Byte groß. Nach einiger Zeit werden sie allerdings schon 43 Byte. Und das Byte schiebt sich vorne mit ein. Vorne wird irgendetwas hochgezählt beim Übergang von 9 auf 10 hakt es dann. :( Da sich alles logischerweise um eine Stelle verschiebt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...