2012-04-03 10 views
2

Ursprüngliche Frage:Modbus TCP für Silverlight

Ich bin für eine Silverlight-Bibliothek oder ein Beispiel suchen, zeigt mir, wie die Silverlight-Framework verwenden, um ein Modbus-Gerät von tcp zu verbinden.

Ich habe mehrere Bibliotheken mit dem tcpClient from system.net.sockets.tcpclient gefunden, aber dieser Namespace ist in Silverlight nicht verfügbar. So .net librarys wird nicht der Trick

auch, nur für Hintergrundinformationen, ich baue ein windows phone app, und ich habe allready in dem Beispiel „unter Verwendung von Sockets in Windows Phone“ auf der Website Msdn sah (Link)


Edit 1:

nach einiger Zeit Programmierung, ich bin in der Lage nur die Halteregister des Modbus-Geräts mit der System.net.sockets Bibliothek zu schreiben. Problem ist, ich bekomme ein Rückgabe-Byte von meinem Modbus-Gerät. Außerdem hatte ich eine Empfangsfunktion, um Register auf dem Modbus-Gerät zu lesen, die auch Bytes zurückgibt.

ich so fangen verwendet, um Bytes (mit System.Net.Sockets.TcpClient:

// Making a new netwerk stream named ns 
    NetworkStream ns; 

    // Function for receiving 
    protected override int ReceiveByte() 
    { 
     // Check for byte, if byte, read it and put it in a byte array. 
     if (ns.DataAvailable) 
      return ns.ReadByte(); 

     // If there's no data left, return; 
     else 
      return -1; 
    } 

Was für frage ich diese Dinge sind: 1. Gibt es eine Funktion in den System.net.Sockets, die die gleiche Funktionalität wie das Network hat .Readbyte? 2. wenn es keine Funktion der Lage ist, das gleiche zu tun. gibt es otherways, und wenn ja, gibt es Beispiele, oder kann mir jemand anfangen?

Thanks :)


+0

Auf welche Version zielen Sie? Sockets können nur für Anwendungen verwendet werden, die auf WP7.1 (a.k.a. Mango) oder höher abzielen. –

+0

@DragosCalin Ich bin auf WP7.1 und höher ausgerichtet :) so ist das nicht das Problem. Das Problem liegt darin, dass alle libs, die ich finden kann, auf dem system.net.sockets.tcpclient beruhen. Welches Telefon 7.1 hat –

+1

ich habe diesen Ansatz vorher gesehen und ich werde die Frage wieder stellen - warum gehen direkt zu modbus von einem Telefon? SPS sind ein hochspezialisierter und primitiver Teil der Infrastruktur. Warum nicht einen geeigneteren Punkt in der Infrastruktur für die Schnittstelle auswählen - so etwas wie eine lokale HMI/Server? Dies macht das gesamte System viel robuster, flexibler und sicherer. Es vereinfacht auch Ihre Aufgabe massiv. –

Antwort

0

Sie müssen einen Socket direkt verwenden, keinen TcpClient. Der Code endet ein wenig mehr, aber es ist nicht so schlimm. Wenn Sie einen vorhandenen Modbus-Code verwenden möchten, können Sie einfach einen TcpClient-Ersatz erstellen, der die gleiche Schnittstelle wie die FFx/CF-Version hat.

EDIT

Das ist ein bisschen seltsam, wie Sie etwas hat die Frage mit Ihrem bearbeiten geändert, verwendet modbus zu gehen, wie ein Byte mit einem Raw-Socket zu erhalten. Die Socket Klasse legt eine synchrone Receive und eine asynchrone BeginReceive Methode offen.

Sie können auch einen NetworkStream von einem Socket über einen der NetworkStream Konstruktoren erstellen.

+0

Oké kann ich irgendwo ein Beispiel finden, wie man die Schnittstelle als FFx/CF Version benutzt? –

+0

@ alle, ich habe meine Frage aktualisiert. –