Serial Port 系列(5) 基本篇--建構函式

SerialPort類別建構函式是建立SerialPort執行個體的基本,主要因為它有不少的多載,所以切出一篇來聊一下。

       SerialPort類別建構函式是建立SerialPort執行個體的基本,主要因為它有不少的多載,所以切出一篇來聊一下。

      

       下圖列出目前在.Net Framework中可用的建構函式,因為實在懶得打字,所以直接貼圖:

2012-01-11_175106

資料來源:MSDN 文件庫 [SerialPort 建構函式]

 

       這邊有三個是我常用的,一個是比較特別的,以下加以說明。

 

       常用的建構函式

       (1) SerialPort 建構函式 (無參數) :這個用法通常是以預設值建立一個SerialPort的執行個體,預設序列埠為COM1、DataBits 屬性預設值為 8,Parity 屬性預設值為 None 列舉值,StopBits 屬性預設值為 1。不過我的習慣是使用這個建構函式還是會把所有屬性都詳細明確定義,例如:


	Private comport As SerialPort
	Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
		comport = New SerialPort()
		comport.PortName = "COM1"
		comport.BaudRate = 9600
		comport.DataBits = 8
		comport.Parity = Parity.None
		comport.StopBits = StopBits.None
	End Sub

		SerialPort comport;
		private void Form1_Load(object sender, EventArgs e)
		{
			comport = new SerialPort();
			comport.PortName = "COM1";
			comport.BaudRate = 9600;
			comport.DataBits = 8;
			comport.Parity = Parity.None;
			comport.StopBits = StopBits.None;
		}

 

       (2) SerialPort 建構函式 (String):這個用法則在建立執行個體時傳入指定的序列埠名稱,其它屬性則為預設值:


	Private comport As SerialPort
	Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
		comport = New SerialPort("COM3")
		comport.BaudRate = 9600
		comport.DataBits = 8
		comport.Parity = Parity.None
		comport.StopBits = StopBits.None
	End Sub

 


		SerialPort comport;
		private void Form1_Load(object sender, EventArgs e)
		{
			comport = new SerialPort("COM3");
			comport.BaudRate = 9600;
			comport.DataBits = 8;
			comport.Parity = Parity.None;
			comport.StopBits = StopBits.None;
		}

       (3) SerialPort 建構函式 (String, Int32, Parity, Int32, StopBits):這個用法則是把指定序列埠和基本的屬性一次傳入:


	Private comport As SerialPort
	Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
		comport = New SerialPort("COM3", 9600, Parity.None, 8, StopBits.One)
	End Sub

		SerialPort comport;
		private void Form1_Load(object sender, EventArgs e)
		{
			comport = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
		}

 

       特別的建構函式

       SerialPort 建構函式 (IContainer):在MSDN上是這麼說的『使用指定的 IContainer 物件,初始化 SerialPort 類別的新執行個體。』,問題來了,傳入IContainer物件的原因是什麼?其實是為了讓這個SerialPort執行個體和所傳入的IContainer物件產生關連,詳情可以參照以前的文章 [Windows Form Designer 續篇 – components];當你是從工具箱拉一個SerialPort元件到Form上的時候Visual Studio就是用這個建構函式產生執行個體。

 

       附帶一提

       也許有人想問說為什麼工具箱就可以拉出SerialPort來卻還得學用程式宣告與建構SerialPort執行個體,如果你寫的序列埠程式只是個小測試或是交學校的小作業當然用工具箱拉是比較快,但在實際應用上這樣的用法缺乏彈性,UI和通訊會被綁在一起,以後會慢慢談到相關的問題。