2024年5月31日 星期五

10.VB.NET 核心篇 筆記 - 類別(Class)

VB.NET 類別(Class)筆記(核心篇)

VB.NET 類別(Class) 筆記(核心篇)

Class 是用來定義「一種資料結構與對應行為」的語法。資料放在屬性裡,行為放在方法裡;建立物件後,每個物件都可以保存自己的資料,並使用類別定義好的方法處理這些資料。

類別的重點不是把程式碼隨便包起來,而是讓資料、規則與操作有清楚的位置。Windows Forms 中若所有邏輯都塞進按鈕事件,程式很快會變得難讀;把資料與計算搬進類別後,表單可以專心處理輸入與顯示。

2024年5月30日 星期四

9.VB.NET 精進篇 筆記 - Socket

VB.NET Socket 筆記(精進篇)

VB.NET Socket 筆記(精進篇)

Socket 是程式進行網路通訊時使用的端點。伺服器端負責等待連線,客戶端負責主動連線;連線建立後,雙方就可以透過 Socket 傳送與接收位元組資料。

Socket 程式容易卡住的地方,不只是「能不能連上」。更重要的是:資料是不是完整、接收動作會不會卡住畫面、連線中斷時能不能正常結束,以及 TCP 串流要如何切出一筆一筆訊息。

2024年5月28日 星期二

8.VB.NET 精進篇 筆記 - 執行緒(Thread)

VB.NET 執行緒(Thread)筆記(精進篇)

VB.NET 執行緒 筆記(精進篇)

Thread 可以先從「畫面為什麼會卡住」開始理解。Windows Forms 的畫面、按鈕點擊、Label 更新與視窗互動,主要都由 UI 執行緒處理。當一段耗時工作也放在 UI 執行緒執行時,畫面就會暫時沒有空回應操作。

執行緒本身是程式執行期間的工作單位。程式碼只是寫好的指令;真正讓指令往下執行的是執行緒。一個應用程式可以只有主要執行緒,也可以另外建立背景執行緒,讓耗時工作不要佔住畫面。

這篇的閱讀重點是先建立操作感:UI 執行緒負責畫面,背景執行緒負責耗時工作,畫面更新必須安全回到 UI 執行緒。 後面再逐步看 ThreadSyncLockThreadPoolTaskCancellationToken

2024年5月27日 星期一

7.VB.NET 進階篇 筆記 - 串列埠(Serial Port)

VB.NET SerialPort 串列埠筆記(基礎篇)

VB.NET SerialPort 串列埠 筆記(基礎篇)

串列埠通訊常用於桌面程式與外部設備連線,例如條碼掃描器、電子秤、PLC、感測器、儀表設備、測試治具與工控模組。VB.NET 可透過 System.IO.Ports.SerialPort 類別完成 COM 埠掃描、參數設定、連線開關、資料送出與資料接收。

SerialPort 的重點不是只有「打開 COM 埠」。完整流程通常包含:確認通訊參數、選擇埠號、開啟連線、送出資料、接收資料、跨執行緒更新畫面、關閉並釋放資源。

2024年5月24日 星期五

6.VB.NET 進階篇 筆記 - WithEvents 關鍵字

VB.NET WithEvents 關鍵字 筆記(進階篇)

VB.NET WithEvents 關鍵字 筆記(進階篇)

Windows Forms 的程式多半不是一次從上到下執行完就結束,而是先顯示畫面,接著等待事件發生。按鈕被點擊、Timer 到時間、自訂物件完成工作,都是事件發生的時機。

事件發生後,需要有一段 Sub 負責接收並處理。WithEvents 的核心作用,就是讓某個類別層級變數成為可被 Handles 追蹤的事件來源。換句話說,WithEvents 不是事件本身,而是讓「某個物件的事件」可以被表單中的事件處理程序接住。

整件事可整理成一句話:物件發出事件,WithEvents 保留事件來源,Handles 指定事件發生後要執行哪個方法。

2024年5月22日 星期三

5.VB.NET 精進篇 筆記 - 數據類型轉換

VB.NET 數據類型轉換筆記(精進篇)

VB.NET 數據類型轉換 筆記(精進篇)

VB.NET 程式常會遇到資料型別不一致的情況。例如表單輸入是文字,但計算需要數字;資料庫欄位是日期,但畫面需要格式化文字;二進位封包是位元組陣列,但程式需要還原成整數。

型別轉換的重點不只是「能不能轉」,而是轉換後是否安全、是否會遺失資料、失敗時是否能保留流程。這篇整理常見轉換方式,包含 CTypeDirectCastTryCastParseTryParseParseExactBitConverter、裝箱拆箱與自訂轉換。

2024年5月21日 星期二

4.VB.NET 進階篇 筆記 - 佇列(Queue)

VB.NET Queue 佇列 (Queue) 筆記(基礎篇)

VB.NET Queue 佇列 筆記(基礎篇)

有些資料不能隨意挑選處理順序,而是必須按照進來的先後依序處理。例如櫃台叫號、待辦工單、背景任務、訊息排隊,都屬於「先排隊、先處理」的流程。

Queue 就是用來處理這種排隊資料的集合。Queue 的核心規則是 先進先出(FIFO, First In First Out):最早加入的資料,會最先被取出。

2024年5月18日 星期六

3.VB.NET 基礎篇 筆記 - 委派 (Delegate)

VB.NET 委派(Delegate)筆記(基礎篇)

VB.NET 委派(Delegate) 筆記(基礎篇)

一般按鈕事件常會直接寫死處理內容,例如按下按鈕後固定顯示成功訊息,或固定計算折扣金額。這種寫法很直覺,但當同一個流程需要切換不同處理方式時,程式容易變成一堆 IfSelect Case

Delegate 的用途,是讓某個處理步驟先保留彈性。流程本身先寫好,真正要執行哪一個方法,之後再指定。換句話說,委派可以把「要執行的方法」變成一個可替換的設定。

2024年5月15日 星期三

2.VB.NET 基礎篇 筆記 - 陣列 (Array)

VB.NET 陣列 (Array) 筆記(基礎篇)

VB.NET 陣列 (Array) 筆記(基礎篇)

VB.NET 中處理多筆同型態資料時,如果每一筆內容都用獨立變數保存,後續的統計、輸出與維護會很快失去一致性。Array 陣列的主要用途,就是把相同型別的資料集中管理,並透過索引位置讀寫指定元素。

陣列的基礎可先抓住三件事:資料型別固定、位置由索引管理、宣告時的括號數字代表「最大索引」而不是「總筆數」。只要這三點清楚,後續的一維陣列、二維陣列、ReDim 與索引邊界判斷,都會比較容易理解。

2024年5月12日 星期日

1.VB.NET 基礎篇 筆記 - For Each 迴圈

VB.NET For Each 迴圈筆記(基礎篇)

VB.NET For Each 迴圈 筆記(基礎篇)

處理多筆資料時,常見需求包括逐筆列出內容、累計統計值、篩選符合條件的項目,以及將物件集合整理成可讀結果。VB.NET 的 For Each 迴圈就是用來處理這類「依序走訪集合」的語法。

For Each 的核心特性,在於由執行環境依序取出集合中的元素,不必自行撰寫索引變數、起始值、終止值與遞增邏輯。因此,當需求重點在「讀取資料內容」而不是「控制索引位置」時,通常會比傳統 For 更清楚。