2

元の質問:

Silverlight フレームワークを使用して tcp で modbus デバイスに接続する方法を示す Silverlight ライブラリまたは例を探しています。

tcpClient を使用する複数のライブラリを見つけましfrom system.net.sockets.tcpclientたが、この名前空間は Silverlight では利用できません。したがって、.net ライブラリではうまくいきません。

また、背景情報として、私は Windows Phone アプリを作成しています。msdn サイト(リンク)の「Windowsphone でソケットを使用する」の例を既に調べています。


編集1:

しばらくプログラミングした後、System.net.socketsライブラリのみを使用して modbus デバイスの保持レジスタに書き込むことができます。問題は、modbus デバイスからリターン バイトを受け取ることです。また、バイトを返すmodbusデバイスのレジスタを読み取る受信機能もありました。

私はこのようなバイトをキャッチしていました(使用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;
    }

私が求めているのは次のことです: 1. System.net.SocketsNetworkstream.Readbyte と同じ機能を持つ関数はありますか? 2. 同じことができる関数がない場合。他の方法はありますか?もしそうなら、例はありますか?誰かが私を始めさせることができますか?

ありがとう :)


4

1 に答える 1

0

TcpClientではなく、Socketを直接使用する必要があります。コードはもう少し冗長になりますが、それほど悪くはありません。既存のModbusコードのセットを使用する場合は、FFx/CFバージョンと同じインターフェイスを持つTcpClient置換を作成するだけです。

編集

modbusの使用から、raw Socketを使用してバイトを受信する方法に変更して、編集で質問を多少変更したため、これは少し奇妙です。このクラスは、同期メソッドと非同期メソッドをSocket公開します。ReceiveBeginReceive

コンストラクターの1つを介してNetworkStreamからを作成することもできます。SocketNetworkStream

于 2012-04-03T17:44:03.187 に答える