2017-03-24 2 views
-1

Dieser Code kann ausgeführt werden, druckt jedoch nur 0, obwohl das Gerät einen Wert hat. Das Gerät ist eine Rollenmaschine, wo es den Rollzähler zum Hafen Nummer 3 geben soll; aber mein Code immer liest die Ausgabe als 0.Der COM3-Port kann nicht gelesen werden. Die Ausgabe ist immer 0

using System; 
using System.Text; 
using System.IO.Ports; 
using System.Collections.Generic; 
namespace ConsoleApplication3 
{ 
    class Program 
    { 
     static SerialPort sp; 
     string InputData = string.Empty; 
     static void Main(string[] args) 
     { 
      sp = new SerialPort("COM3", 4800, Parity.None, 8, StopBits.One); 
      sp.DiscardNull = false; 
      sp.RtsEnable = true; 
      sp.ReadTimeout = 500; 
      sp.Handshake = Handshake.None; 
      sp.Encoding = Encoding.UTF8; 
      sp.DtrEnable = true; 
      sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);    
      sp.Open(); 
      //sp.DataReceived += sp_DataReceived; 
      string InputData = sp.ReadExisting(); 
      while (sp.IsOpen) 
      { 
       try 
       { 
        System.Threading.Thread.Sleep(300); 
        int bytes = sp.BytesToRead; 
        byte[] buffer = new byte[bytes]; 
        Console.WriteLine("Value - " + sp.Read(buffer, 0, bytes)); 
       } 
       catch (Exception ex) 
       { 
        Console.WriteLine(ex.Message); 
       } 
      } 
     } 
     private static void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) 
     { 
      SerialPort sport = (SerialPort)sender; 
      string indata = sport.ReadExisting(); 
      Console.WriteLine(indata); 
     } 
    } 
} 

Der Code Console.WriteLine("Value - " + sp.Read(buffer, 0, bytes)); druckt immer 0.

Antwort

0

Während diese Codezeile Console.WriteLine("Value - " + sp.Read(buffer, 0, bytes)); Ausführung können Sie nicht, dass es garantiert Bytes empfangen zu lesen, Sie sollte nur von der Event-Handler abhängen lsp_DataReceived

+0

Danke Abdullah! Soweit ich kann, habe ich hier alles bereinigt, aber kein Glück. Es würde sehr geschätzt werden, wenn Sie mir helfen können, den korrekten Wert zurückzugeben. – user9454796

+0

Erhalten Sie Daten über den Event-Handler? –

Verwandte Themen