在開始寫序列埠程式之前有一些我們需要能夠先有基礎瞭解的東西,關於 RS232 接腳的認識在前一篇已經談過了,這篇則列示一些我們該有的事前準備。
在開始寫序列埠程式之前有一些我們需要能夠先有基礎瞭解的東西,關於 RS232 接腳的認識在前一篇已經談過了,這篇則列示一些我們該有的事前準備。
ASCII字碼表
當然不是要把這字碼表背起來,只是當我們需要查字碼的時候總要有個地方可以查,或是有些書籍中也有附上ASCII字碼表,我通常是直接用MSDN文件庫的資料 [ASCII 字元碼];當然你也可以自己寫一個轉換程式。
序列埠通訊監聽工具
在測試實際通訊過程中為了確認通訊內容是否正確常需要監聽序列埠的通訊,璉大在他的文章[通訊必備監聽軟體 AccessPort]推薦了一個滿不錯的免費軟體(AccessPort下載連結) 。 很可惜的是這套軟體目前在64位元下似乎是無法使用,這是一點小小的缺憾。
.Net多執行緒與非同步架構
寫通訊程式對於多執行緒有基本的瞭解是很必要的,至少要能知道如何產生一個新的執行緒及其簡單的應用。以Thread類別為例,起碼需要瞭解到如何使用此類別產生執行緒、Thread.IsBackground屬性的運用以及跨執行緒委派如何撰寫,關於這一類的技巧建議大家可以看一下MSDN文件庫的 [Managed 執行緒處理] 章節內容。
資料轉換的相關.Net類別
這類的程式常都會有把資料轉換來轉換去的需求,有幾個常用到的類別:
(2) System.Convert
陣列的運用
Array類別中有一些常用的方法,例如 Array.Resize(T) 方法 、Array.Copy 方法 等等都是時常應用到的。
List(T) 類別的運用
某些情形會使用Array與List(T)交互運用,尤其是List(T).ToArray 方法算是常用的。
我的一個小習慣
這是我個人的習慣,對於所有關於通訊的程式不論是SerialPort或是Socket在傳接資料時都一律使用Byte型別來完成;也就是說除非很特別的情況,否則像是SerialPort.ReadLine 方法、 SerialPort.ReadExisting 方法或 SerialPort.WriteLine 方法等等是一概不用的,這也是我特別會列出 ASCII字碼與資料轉換相關類別為基本知識的原因。大部份的狀況下我只會使用 SerialPort.Write 方法 (Byte[], Int32, Int32) 與 SerialPort.Read 方法 (Byte[], Int32, Int32) 。