详解C#串口监听的实现

C#串口监听的实现在 Visual Stdio 2005中,对于串口操作Framework提供了一个很好的类接口-SerialPort,在这当中,串口数据的读取与写入有较大的不同。C#串口监听的实现由于串口不知道数据何时到达,因此有两种方法可以实现C#串口监听之串口数据的读取。1.用线程实时读串口2.用事件触发方式实现。但由于线程实时读串口的效率不是十分高效,因此比较好的方法是事件触发的方式。在SerialPort类中有DataReceived事件,当串口的读缓存有数据到达时则触发DataReceived事件,其中SerialPort.ReceivedBytesThreshold属性决定了当串口读缓存中数据多少个时才触发DataReceived事件,默认为1。

创新互联成都企业网站建设服务,提供成都网站建设、成都做网站网站开发,网站定制,建网站,网站搭建,网站设计,成都响应式网站建设公司,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18982081108

此外,SerialPort.DataReceived事件运行比较特殊,其运行在辅线程,不能与主线程中的显示数据控件直接进行数据传输,必须用间接的方式实现。

C#串口监听实现一、创建WIndow项目,设计界面

C#串口监听实现二、编写实现代码

 
 
 
 
  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#串口监听
  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#串口监听之实例化委托对象
  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#串口监听
  73. else
  74. ...{
  75. MessageBox.Show("请输入正确的端口号和波特率!");
  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#串口监听
  88. }

C#串口监听具体的实现操作就向你介绍到这里,希望对你了解和学习C#串口监听的实现有所帮助。

网页题目:详解C#串口监听的实现
网站网址:http://www.shufengxianlan.com/qtweb/news1/517851.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联