2015-06-22 2 views
-1

У меня есть датчик, который имеет ip и порт 192.168.2.44:3000.streamread не может прочитать данные из NetworkStream в C#,

Я использовал 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- с-острый косяк-получить-любые-данные-из-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(); 
     } 
    }