2012-05-24 1 views
2

Моя программа должна получать строки через последовательный порт. Проблема в том, что программа застревает в ReadLine, когда нет ввода. Есть ли способ вызвать функцию startReading, когда строка считывается SP.ReadLine?Как вызвать функцию при получении readLine

void GetInput() 
{ 
     SerialPort SP = new SerialPort(); 
     SP.PortName = "COM3"; 
     SP.Open(); 
     string Line = string.Empty; 
     While(Line == "") 
     { 
        Line = SP.ReadLine(); 
        Application.DoEvents(); 
     } 
      StartReading(); 
} 

void StartReading() 
{ 
} 
+0

Так что вы хотите 'метод StartReading' выполняться параллельно с' while' цикла? – Tudor

+0

просто просмотрите предоставленные события http://msdn.microsoft.com/de-de/library/system.io.ports.serialport.datareceived.aspx и изучите асинхронное чтение из потоков в C# /. Net. –

ответ

1
private void GetInput() 
    { 
     SerialPort SP = new SerialPort(); 
     SP.PortName = "COM3"; 
     SP.DataReceived += new SerialDataReceivedEventHandler(SP_DataReceived); 
     SP.Open(); 
    } 

    private void SP_DataReceived(object sender, SerialDataReceivedEventArgs e) 
    { 
     SerialPort serialPort = (SerialPort)sender; 
     string line = serialPort.ReadLine(); 
     StartReading(); 
    } 

    private void StartReading() 
    { 
    } 
+0

Спасибо, что я искал! :) – snorifu