2017-05-24 45 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; 
     } 
    } 
}