# Ethernet Zugriff C# Vegamet



## jambalaya (21 April 2011)

Hallo,

ich möchte über C# auf ein Vegamet zugreifen. Über Hyperterminal funktioniert es bereits. Wenn ich es allerdings in C# Versuche bleibt mein Programm immer bei ReadLine hängen. Wenn ich im Hyperterminal $ eingebe und mit Enter bestätige wird mir der aktuelle Messwert angezeigt.

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Server");
            TcpClient serverSocket = new TcpClient("192.168.2.12", 503);
            NetworkStream ns = serverSocket.GetStream();
            StreamReader sr = new StreamReader(ns);
            StreamWriter sw = new StreamWriter(ns);
            sw.Write("$");
            string textout = sr.ReadLine();
            Console.WriteLine(textout);
            sw.Flush();
            sw.Close();
            ns.Close();
            Console.ReadLine();
        } 
    }

Wo könnte mein Fehler stecken? Oder gehe ich die Sache falsch an?
Gruß


----------



## Jochen Kühner (21 April 2011)

Versuch doch mal ein "$\r" zu senden!


----------



## jambalaya (21 April 2011)

immer noch das gleiche bei ReadLine bleibt das Programm ohne Fehler stehen


----------



## Ralle (21 April 2011)

Ich würde es dann an einen anderen PC mit laufendem Hyperterminal schicken, um zu sehen, was genau ankommt!


----------



## Jochen Kühner (21 April 2011)

Oder probier noch "$\r\n" oder nur "$\n"


----------



## vierlagig (21 April 2011)

Jochen Kühner schrieb:


> Oder probier noch "$\r\n" oder nur "$\n"



oder 
	
	



```
+ Enviroment.NewLine
```


----------



## Jochen Kühner (21 April 2011)

vierlagig schrieb:


> oder
> 
> 
> 
> ...



Das würd Ich wiederum nicht nehmen, da dann auf einem anderen System (falls dies passieren sollte) andere Zeichen (unter Linux zumindest) an den Vegamet geschickt werden und dann die Kopplung nicht läuft!


----------



## LowLevelMahn (22 April 2011)

*warum nicht einfach prüfen was über die leitung geht?*

Hercules ist ein etwas technischeres Hyperterminal - da kannst du besser/genauer sehen was über die Leitung geht:
http://www.hw-group.com/products/hercules/index_en.html

ansonsten würde ich WireShark verwenden um zu schauen was genau, und wie übertragen wird
http://www.wireshark.org/


----------



## jambalaya (26 April 2011)

Danke für die Tipps bin der Lösung wieder ein STück näher gerückt
wenn ich den StreamWriter schließe wird der Befehl gesendet und es kommt auch eine Antwort habe ich mit Wireshark herausgefunden die ich jedoch nicht lesen kann. Wenn ich den StreamReader nach sw.close() erzeuge kommt beim Debugging "Der Vorgang ist für nicht verbundene Sockets unzulässig." Und wenn er oben erzeugt wird kommt bei readLine "Auf das verworfene Objekt kann nicht zugegriffen werden.
Objektname: "System.Net.Sockets.NetworkStream"."
In WireShark kommt eine Meldung mit "ZeroWindow" in der mein Rückgabewert steckt.

        {
            Console.WriteLine("Server");
            TcpClient serverSocket = new TcpClient("192.168.2.12", 503);
            NetworkStream ns = serverSocket.GetStream();
            StreamReader sr = new    StreamReader(serverSocket.GetStream());
            StreamWriter sw = new StreamWriter(ns);

            sw.Write("$\r\n");
            sw.Flush();
            sw.Close();


            string textout = sr.ReadLine();
            Console.WriteLine(textout);
            sr.Close();
            ns.Close();
        } 

Gruß


----------



## jambalaya (26 April 2011)

Danke für die Tipps habe es mit Hilfe von Wire Shark hinbekommen

Gruß


----------

