首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 串口通訊實戰:基於 MSComm 控件的完整 WinForms 範例

     編輯:關於C語言

專案架構概覽

使用 Microsoft Communications Control 6.0 (MSComm) 控件實現串口通訊測試程式,包含參數設定、資料發送/接收、封包顯示功能。

核心程式碼結構

public class Form1 : Form {
    private AxMSCommLib.AxMSComm axMSComm1; // MSComm 控件
    private TextBox msg;                    // 通訊日誌顯示
    private TextBox t_send;                 // 發送資料輸入
    // 參數設定控件:Port、BaudRate、ByteSize、StopBits、Parity...
    
    public mycom mycom1 = new mycom();      // 通訊邏輯封裝類
    public byte[] recb;                     // 接收緩衝區
}

關鍵功能實現

表單載入初始化

private void Form1_Load(...) {
    mycom1.PortNum = 1; mycom1.BaudRate = 9600;
    mycom1.ByteSize = 8; mycom1.Parity = 0; mycom1.StopBits = 1;
    mycom1.ReadTimeout = 1000;
    msg.AppendText(OpenCom() ? "串口初始化成功……\r\n" : "串口初始化失敗!\r\n");
}

發送資料(十六進位字串)

private void button1_Click(...) {
    if (string.IsNullOrEmpty(t_send.Text)) return;
    byte[] data = ParseHexString(t_send.Text); // 移除空格、兩字元一組轉 byte
    int sent = mycom1.Write(data);
    msg.AppendText($"\r\n發送資料({sent}):{FormatHex(data)}");
    recb = mycom1.Read(50);
    if (recb.Length > 0) msg.AppendText($"\r\n接收封包:{FormatHex(recb)}");
}

注意:發送格式為十六進位,如 02 45 66 FA,空格可有可無,但必須為偶數字元數。

參數動態調整

「應用設定」按鈕即時更新 mycom1 屬性並重新開啟串口。

完整原始碼

文章包含完整 Form1 類別原始碼(含設計器生成代碼),可直接複製建立專案測試。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved