2017-05-24 49 views
0

我很新的C#& .NET,我寫了幾個工作的應用程序,但需要移出界面(主管這樣說)爲更多的項目提供更多模塊化的重用。所以,第一個嘗試是一個串行接口,如下圖所示:初始化SerialPort類的一個新實例,嘗試將代碼移出接口

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.IO.Ports; 

namespace TestSensor 
{ 
    public System.IO.Ports.SerialPort serialPort1 = new SerialPort(); 

    public interface Iserial 
    {  
     // guess these are like function prototypes 
     bool isOpen(int p); 
     //bool open(int serialInstance, string comPortNo, int baud); 
     //bool close(int p); 
    } 

    public class port : Iserial 
    { 
     public bool isOpen(int port) 
     { 
      if (port == 1) 
      { 
       if (serialPort1.IsOpen) return true; 
       else return false; 
      } 
      else if (port == 2) 
      { 
       if (serialPort2.IsOpen) return true; 
       else return false; 
      } 
      else return false; 
     } 
    } 
} 

但我不能找到一種方法初始化串口的新實例沒有錯誤,很多搜索和實驗後。當前嘗試以上原因導致 「CS0116命名空間不能直接包含成員,如字段或方法」 感謝您的期待!

+0

錯誤告訴你問題是什麼:名稱空間不能包含成員,而你的'seralPort1'成員不是類的一部分。將它移動到你的'port'類的一部分,錯誤就會消失。另外,我不確定你爲什麼「猜測」事情。開發人員不應該完全確定他們的代碼在做什麼以及爲什麼。你應該閱讀一些接口。 – itsme86

+0

@ itsme86謝謝,我嘗試了很多不同的方式,是的,我現在需要做更多的事情閱讀,通常的問題沒有足夠的時間學習,需要完成工作 – chasher

+0

「猜測」評論更多的是一個筆記當我將數字接口連接到自己時 – chasher

回答

0

謝謝itsme86! 建議搬到港口班,一切都很好!

namespace TestSensor 
{ 


    public interface Iserial 
    {  
     bool isOpen(int p); 
     //bool open(int serialInstance, string comPortNo, int baud); 
     //bool close(int p); 
    } 

    public class port : Iserial 
    { 
     public System.IO.Ports.SerialPort serialPort1 = new SerialPort(); 
     public System.IO.Ports.SerialPort serialPort2 = new SerialPort(); 

     public bool isOpen(int port) 
     { 
      if (port == 1) 
      { 
       if (serialPort1.IsOpen) return true; 
       else return false; 
      } 
      else if (port == 2) 
      { 
       if (serialPort2.IsOpen) return true; 
       else return false; 
      } 
      else return false; 
     } 
    } 
}