文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#中怎么实现监听串口

2023-06-17 23:15

关注

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#串口监听  }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯