日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解C#串口監(jiān)聽的實(shí)現(xiàn)

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

創(chuàng)新互聯(lián)成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站開發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),成都響應(yīng)式網(wǎng)站建設(shè)公司,網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:18982081108

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

C#串口監(jiān)聽實(shí)現(xiàn)一、創(chuàng)建WIndow項(xiàng)目,設(shè)計(jì)界面

C#串口監(jiān)聽實(shí)現(xiàn)二、編寫實(shí)現(xiàn)代碼

 
 
 
 
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.IO.Ports;
  9. //using Microsoft.VisualBasic.Devices;
  10. //C#串口監(jiān)聽
  11. namespace Demo
  12. ...{
  13. public partial class Form1 : Form
  14. ...{
  15. public Form1()
  16. ...{
  17. InitializeComponent();
  18. }
  19. private SerialPort Sp = new SerialPort();
  20. public delegate void HandleInterfaceUpdataDelegate(string text);
  21. private HandleInterfaceUpdataDelegate interfaceUpdataHandle;
  22. private void Form1_Load(object sender, EventArgs e)
  23. ...{
  24. tbID.Focus();
  25. BtPause.Enabled = false;
  26. }
  27. private void UpdateTextBox(string text)
  28. ...{
  29. tbData.Text = text;
  30. }
  31. public void Sp_DataReceived(object sender,
  32. System.IO.Ports.SerialDataReceivedEventArgs e)
  33. ...{
  34. byte[] readBuffer = new byte[Sp.ReadBufferSize];
  35. Sp.Read(readBuffer, 0, readBuffer.Length);
  36. this.Invoke(interfaceUpdataHandle,
  37.  new string[] ...{ Encoding.UTF8.GetString(readBuffer) });
  38. }
  39. private void Form1_FormClosing(
  40. object sender, FormClosingEventArgs e)
  41. ...{
  42. Sp.Close();
  43. }
  44. private void btENT_Click(object sender, EventArgs e)
  45. ...{
  46. if ((tbID.Text.Trim() != "") && 
  47. (cmRate.Text != ""))
  48. ...{
  49. interfaceUpdataHandle = 
  50. new HandleInterfaceUpdataDelegate(UpdateTextBox);
  51. //C#串口監(jiān)聽之實(shí)例化委托對(duì)象
  52. Sp.PortName = tbID.Text.Trim();
  53. serialPort1.BaudRate = 
  54. Convert.ToInt32(cmRate.Text.Trim());
  55. Sp.Parity = Parity.None;
  56. Sp.StopBits = StopBits.One;
  57. Sp.DataReceived += 
  58. new SerialDataReceivedEventHandler(Sp_DataReceived);
  59. Sp.ReceivedBytesThreshold = 1;
  60. try
  61. ...{
  62. Sp.Open();
  63. tbID.ReadOnly = true;
  64. BtPause.Enabled = true;
  65. btENT.Enabled = false;
  66. }
  67. catch
  68. ...{
  69. MessageBox.Show(
  70. "端口" + tbID.Text.Trim() + "打開失??!");
  71. }
  72. }//C#串口監(jiān)聽
  73. else
  74. ...{
  75. MessageBox.Show("請(qǐng)輸入正確的端口號(hào)和波特率!");
  76. tbID.Focus();
  77. }
  78. }
  79. private void BtPause_Click(
  80. object sender, EventArgs e)
  81. ...{
  82. Sp.Close();
  83. tbID.ReadOnly = false;
  84. btENT.Enabled = true;
  85. BtPause.Enabled = false;
  86. }
  87. }//C#串口監(jiān)聽
  88. }

C#串口監(jiān)聽具體的實(shí)現(xiàn)操作就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#串口監(jiān)聽的實(shí)現(xiàn)有所幫助。


名稱欄目:詳解C#串口監(jiān)聽的實(shí)現(xiàn)
網(wǎng)頁(yè)地址:http://www.dlmjj.cn/article/coojjsi.html