2012-10-14 43 views
0

運行下面的代碼時,我得到以下NullReferenceException。我錯過了什麼?NullReferenceException:未將對象引用設置爲SerialPort.ReadLine()方法上的對象實例

System.NullReferenceException was unhandled 
    Message=Object reference not set to an instance of an object. 
    Source=Silkworm 
    StackTrace: 
     at UnhandledExceptionLogger.UnhandledDomainException(Object sender, UnhandledExceptionEventArgs args) 

代碼:

//Fields 
      List<string> myReceivedLines; 

      //subscriber method for the port.DataReceived Event 
      private void DataReceivedHandler(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
      { 
       SerialPort sp = (SerialPort)sender; 
       while (sp.BytesToRead > 0) 
       { 
        try 
        { 
         myReceivedLines.Add(sp.ReadLine()); 
        } 
        catch (TimeoutException) 
        { 
         break; 
        } 
       } 
      } 



      protected override void SolveInstance(IGH_DataAccess DA) 
      { 

       string selectedportname = default(string); 
       DA.GetData(1, ref selectedportname); 
       int selectedbaudrate = default(int); 
       DA.GetData(2, ref selectedbaudrate); 
       bool connecttodevice = default(bool); 
       DA.GetData(3, ref connecttodevice); 


       SerialPort port = new SerialPort(selectedportname, selectedbaudrate, Parity.None, 8, StopBits.One); //Create the serial port 
       port.DtrEnable = true; //enables the Data Terminal Ready (DTR) signal during serial communication (Handshaking) 

       port.Open();    //Open the port 


       if ((port.IsOpen) && (connecttodevice == true)) 
       { 
        port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); 
        DA.SetDataList(0, myReceivedLines); 
       } 

回答

4
myReceivedLines = new List<string>() 
+0

非常感謝你,我收到以下消息:'無效的標記=在類,結構或接口成員聲明' –

+0

你如何初始化myReceivedLines? –

3

myReceivedLines聲明,但從未賦值,所以它仍然無效。您可能想要初始化它,如:

List<string> myReceivedLines = new List<string>(); 

然後,您可以繼續使用它。

+0

只是爲了讓你知道..你應該刪除var myReceivedLines,因爲它不會編譯。你不能使用var來聲明字段。 –

+0

@LewsTherin啊,確實如此。奇怪的格式和(有效)缺乏明確的訪問修飾符必須拋出我。 –

相關問題