2

原始问题:

我正在寻找一个 silverlight 库或示例,它向我展示了如何使用 silverlight 框架通过 tcp 连接到 modbus 设备。

我找到了多个使用 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.Sockets与 Networkstream.Readbyte 具有相同功能的函数?2. 如果没有功能可以做同样的事情。还有其他方法吗,如果有,是否有示例,或者有人可以让我开始吗?

谢谢 :)


4

1 回答 1

0

您必须直接使用 Socket,而不是 TcpClient。代码最终变得更加冗长,但并不是那么糟糕。如果您想使用现有的 Modbus 代码集,您可以创建一个与 FFx/CF 版本具有相同接口的 TcpClient 替换。

编辑

这有点奇怪,因为您在编辑中改变了问题,从使用 modbus 到如何使用原始套接字接收字节。该类Socket公开了一个同步Receive和一个异步BeginReceive方法。

您还可以通过其中一个构造函数NetworkStream从 a创建一个。SocketNetworkStream

于 2012-04-03T17:44:03.187 回答