2015-06-22 75 views
-1

我有一個傳感器,它具有一個IP和端口192.168.2.44:3000。streamread無法從C#中的NetworkStream讀取任何數據,

我用herculas連接到設備,你可以在圖片中看到:這裏

輸入圖像描述 enter image description here

我需要C#實現這個軟件,所以我寫這篇文章的代碼:

private static void Main(string[] args) 
     { 
      try 
      { 
       byte[] buffer = new byte[2048]; // read in chunks of 2KB 
       int bytesRead; 
       var listener = new TcpListener(IPAddress.Any, 3000); 
       listener.Start(); 
       NetworkStream network_stream; 
       StreamReader read_stream; 
       StreamWriter write_stream; 
       var client = listener.AcceptTcpClient(); 
       network_stream = client.GetStream(); 

       read_stream = new StreamReader(network_stream); 
       write_stream = new StreamWriter(network_stream); 

       write_stream.WriteLine("00010002000B0300010004C380"); 
       write_stream.Flush(); //veriyi gönderiyor 

       string gelen; 
       gelen = read_stream.ReadLine(); 
       Console.WriteLine(gelen); 
       Console.ReadLine(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 
       Console.ReadLine(); 
      } 
     } 

當我把一個斷點gelen = read_stream.ReadLine();回報null enter image description here

http://www.hw-group.com/products/hercules/index_en.html

+0

的[C#的不能接收來自任何的NetworkStream數據]可能重複(http://stackoverflow.com/questions/31005914/the- C-尖銳斜面-接收-任何-數據從最的NetworkStream) –

回答

0

最終代碼:

class Program 
    { 
     static void Main(string[] args) 
     { 
      TcpListener server = null; 
      try 
      { 
       Int32 port = 3000; 
       // IPAddress localAddr = IPAddress.Parse(IPAddress.Any); 

       server = new TcpListener(IPAddress.Any, port); 

       server.Start(); 

       // Buffer for reading data 
       Byte[] bytes = new Byte[256]; 
       String data = null; 

       while (true) 
       { 
        Console.Write("Waiting for a connection... "); 
        TcpClient client = server.AcceptTcpClient(); 
        Console.WriteLine("Connected!"); 


        data = null; 

        NetworkStream stream = client.GetStream(); 

        byte[] aaa = { 0, 1, 0, 2, 0, 11, 3, 0, 1, 0, 4, 195, 128 }; 
        stream.Write(aaa, 0, aaa.Length); 
        int i; 

        while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) 
        { 
         data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); 
         Console.WriteLine("Received: {0}", data); 

         data = data.ToUpper(); 
         byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); 
         stream.Write(msg, 0, msg.Length); 
         Console.WriteLine("Sent: {0}", data); 
        } 

        client.Close(); 
       } 
      } 
      catch (SocketException e) 
      { 
       Console.WriteLine("SocketException: {0}", e); 
      } 
      finally 
      { 
       server.Stop(); 
      } 


      Console.WriteLine("\nHit enter to continue..."); 
      Console.Read(); 
     } 
    }