原题:
我正在寻找一个Silverlight库或示例,演示如何使用Silverlight框架通过TCP连接到Modbus设备。
我找到了多个使用tcpclientfrom system.net.sockets.tcpclient的库,但是这个名称空间在silverlight中不可用。所以.NET库不会成功
另外,为了获取背景信息,我正在构建一个Windows Phone应用程序,并且我已经准备好研究msdn站点上的示例“在WindowsPhone中使用套接字”(Link)
编辑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.Sockets中是否有与networkstream.readbyte具有相同功能的函数?
2。如果没有功能可以做同样的事情。还有其他的方法吗?如果有的话,有例子吗?或者有人能帮我开始吗?
谢谢:)

最佳答案

必须直接使用套接字,而不是tcpclient。这段代码最后会更详细一些,但也没那么糟糕。如果要使用现有的一组Modbus代码,只需创建一个与ffx/cf版本具有相同接口的tcpclient替换。
编辑
这有点奇怪,因为您在编辑时已经稍微改变了问题,从使用Modbus到如何使用原始套接字接收字节。Socket类公开了同步Receive和异步BeginReceive方法。
还可以通过一个NetworkStream构造函数从Socket创建NetworkStream

关于silverlight - Modbus Tcp适用于silverlight,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9990035/

10-11 08:48