如何使用C#讀取串口資訊

來源:互聯網
上載者:User

最近受朋友委託,幫他寫一個讀取串口的程式。以前只知道需要調用Windows API來實現,查詢了MSDN之後發現,從.Net framework 2.0開始,.Net內部已經封裝了SerialPort類,使得讀取串口內容變得非常容易。

SerialPort位於System.IO.Ports namspace下面。常用的建構函式為

   1:  public SerialPort(
   2:      string portName,
   3:      int baudRate,
   4:      Parity parity,
   5:      int dataBits,
   6:      StopBits stopBits
   7:  )
  1. portName:連接埠號碼,如COM1,COM2,COM3……
  2. baudRate:每秒資料位元,如9600
  3. parity:是否有同位
  4. dataBits:資料位元
  5. stopBits:停止位

這些可以更據具體的硬體指標設定。

 

此外SerialPort類,還提供了以下屬性。

Handshake:設定握手協議,(None,XOnXOff,RequestToSend 和 RequestToSendXOnXOff

WriteTimeout:寫入資料時,多久逾時
ReadTimeout:讀取資料時,多久逾時

 

我主要是通過竄口讀取資料,所以使用了SerialPort類的DataReceived事件,這個事件調用的時候要注意一點。我們不可以再這個事件內直接更新UI內容,如給textbox賦值。微軟的官方解釋是,這個事件其實是在另外一個線程(非GUI線程)內觸發的。

 

以下是我的一個簡單範常式序:

 

   1:  using System;
   2:  using System.ComponentModel;
   3:  using System.Drawing;
   4:  using System.IO.Ports;
   5:  using System.Windows.Forms;
   6:   
   7:  namespace Reader
   8:  {
   9:      public partial class MainForm : Form
  10:      {
  11:          private static SerialPort _serialPort = null;
  12:   
  13:          public MainForm()
  14:          {
  15:              InitializeComponent();
  16:          }
  17:   
  18:          void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
  19:          {
  20:              this.Invoke(new EventHandler(DoUpdate));
  21:          }
  22:   
  23:          private void DoUpdate(object s, EventArgs e)
  24:          {
  25:              this.lbText.Text = _serialPort.ReadExisting();
  26:          }
  27:   
  28:          private void btnStart_Click(object sender, EventArgs e)
  29:          {
  30:              _serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
  31:              _serialPort.Handshake = Handshake.RequestToSendXOnXOff;
  32:              _serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
  33:              _serialPort.Open();
  34:   
  35:              this.btnStart.Enabled = false;
  36:          }
  37:      }
  38:  }
 
介面。代碼就不貼了。

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.