91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中怎么實現監聽串口

發布時間:2021-07-08 14:34:29 來源:億速云 閱讀:314 作者:Leah 欄目:編程語言

C#中怎么實現監聽串口,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

C#串口監聽的實現在 Visual Stdio 2005中,對于串口操作Framework提供了一個很好的類接口-SerialPort,在這當中,串口數據的讀取與寫入有較大的不同。C#串口監聽的實現由于串口不知道數據何時到達,因此有兩種方法可以實現C#串口監聽之串口數據的讀取。1.用線程實時讀串口2.用事件觸發方式實現。但由于線程實時讀串口的效率不是十分高效,因此比較好的方法是事件觸發的方式。在SerialPort類中有DataReceived事件,當串口的讀緩存有數據到達時則觸發DataReceived事件,其中SerialPort.ReceivedBytesThreshold屬性決定了當串口讀緩存中數據多少個時才觸發DataReceived事件,默認為1。

此外,SerialPort.DataReceived事件運行比較特殊,其運行在輔線程,不能與主線程中的顯示數據控件直接進行數據傳輸,必須用間接的方式實現。

C#串口監聽實現一、創建WIndow項目,設計界面

C#中怎么實現監聽串口

C#串口監聽實現二、編寫實現代碼

using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Text;  using System.Windows.Forms;  using System.IO.Ports;  //using Microsoft.VisualBasic.Devices;   //C#串口監聽  namespace Demo  ...{  public partial class Form1 : Form  ...{  public Form1()  ...{  InitializeComponent();  }   private SerialPort Sp = new SerialPort();  public delegate void HandleInterfaceUpdataDelegate(string text);  private HandleInterfaceUpdataDelegate interfaceUpdataHandle;   private void Form1_Load(object sender, EventArgs e)  ...{  tbID.Focus();  BtPause.Enabled = false;  }   private void UpdateTextBox(string text)  ...{  tbData.Text = text;  }   public void Sp_DataReceived(object sender,  System.IO.Ports.SerialDataReceivedEventArgs e)  ...{  byte[] readBuffer = new byte[Sp.ReadBufferSize];  Sp.Read(readBuffer, 0, readBuffer.Length);  this.Invoke(interfaceUpdataHandle,   new string[] ...{ Encoding.UTF8.GetString(readBuffer) });  }   private void Form1_FormClosing(  object sender, FormClosingEventArgs e)  ...{  Sp.Close();  }   private void btENT_Click(object sender, EventArgs e)  ...{  if ((tbID.Text.Trim() != "") &&   (cmRate.Text != ""))  ...{  interfaceUpdataHandle =   new HandleInterfaceUpdataDelegate(UpdateTextBox);  //C#串口監聽之實例化委托對象  Sp.PortName = tbID.Text.Trim();  serialPort1.BaudRate =   Convert.ToInt32(cmRate.Text.Trim());  Sp.Parity = Parity.None;  Sp.StopBits = StopBits.One;  Sp.DataReceived +=   new SerialDataReceivedEventHandler(Sp_DataReceived);  Sp.ReceivedBytesThreshold = 1;  try ...{  Sp.Open();  tbID.ReadOnly = true;  BtPause.Enabled = true;  btENT.Enabled = false;  }  catch ...{  MessageBox.Show(  "端口" + tbID.Text.Trim() + "打開失敗!");  }  }//C#串口監聽  else ...{  MessageBox.Show("請輸入正確的端口號和波特率!");  tbID.Focus();  }  }   private void BtPause_Click(  object sender, EventArgs e)  ...{  Sp.Close();  tbID.ReadOnly = false;  btENT.Enabled = true;  BtPause.Enabled = false;  }  }//C#串口監聽  }

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛扎县| 上蔡县| 呼图壁县| 增城市| 乐山市| 曲阜市| 辽阳市| 繁昌县| 南召县| 伊吾县| 德令哈市| 富平县| 宜良县| 九江县| 新兴县| 东源县| 姚安县| 德钦县| 宣恩县| 富锦市| 肃南| 信阳市| 深泽县| 西和县| 广安市| 晋州市| 名山县| 成武县| 南安市| 沙湾县| 赫章县| 当阳市| 锦屏县| 永城市| 东乌珠穆沁旗| 福安市| 固安县| 永新县| 富源县| 浦东新区| 自贡市|