温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#中怎么创建一个串口通信程序

发布时间:2021-07-08 14:34:00 来源:亿速云 阅读:175 作者:Leah 栏目:编程语言

C#中怎么创建一个串口通信程序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创建C#串口通信程序之命名空间

System.IO.Ports命名空间中最重用的是SerialPort 类。

创建C#串口通信程序之创建SerialPort 对象

通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。

我们将要用到的SerialPort 类的方法:

ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL

WriteLine(string):写入输出缓冲

Open():打开一个新的串口连接

Close():关闭

//create a Serial Port object  SerialPort sp = new SerialPort ();

默认情况下,DataBits 值是8,StopBits 是1,通信端口是COM1。这些都可以在下面的属性中重新设置:

BaudRate:串口的波特率

StopBits:每个字节的停止位数量

ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒

还有不少其它公共属性,自己查阅MSDN。

创建C#串口通信程序之串口的硬件知识

在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦

开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样

的波特率和数据位数。

创建C#串口通信程序之无猫模式

没有Modem模式的电缆只是简单地交叉传送和接收线。同样DTR & DSR, 和 RTS & CTS也需要交叉。

这里,我们三条线。互连2和3(一段的2pin连接3pin),连接两端的5pin。

创建C#串口通信程序示例程序

如果想使用默认属性,按“Save Status”按钮,如果想改变属性按“Property”。设定好之后,可以通信了。

主窗口的代码

#region Using directives   using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Windows.Forms;  using System.IO.Ports;   #endregion   namespace Serialexpample  {  partial class Form1 : Form  {  //create instance of property page  //property page is used to set values for stop bits and  //baud rate   PropertyPage pp = new PropertyPage();   //create an Serial Port object  SerialPort sp = new SerialPort();   public Form1()  {  InitializeComponent();  }   private void propertyButton_Click(object sender, EventArgs e)  {  //show property dialog  pp.ShowDialog();   propertyButton.Hide();  }   private void sendButton_Click(object sender, EventArgs e)  {  try {  //write line to serial port  sp.WriteLine(textBox.Text);  //clear the text box  textBox.Text = "";  }  catch (System.Exception ex)  {  baudRatelLabel.Text = ex.Message;  }   }   private void ReadButton_Click(  object sender, EventArgs e)  {  try {  //clear the text box  textBox.Text = "";  //read serial port and displayed the data in text box  textBox.Text = sp.ReadLine();  }  catch(System.Exception ex)  {  baudRatelLabel.Text = ex.Message;  }  }   private void Form1_Load(object sender, EventArgs e)  {   }   private void Form1_FormClosing(  object sender, FormClosingEventArgs e)  {  MessageBox.Show("Do u want to Close the App");  sp.Close();  }   private void startCommButton_Click(  object sender, EventArgs e)  {  startCommButton.Hide();  sendButton.Show();  readButton.Show();  textBox.Show();  }   //when we want to save the status(value)  private void saveStatusButton_Click_1(  object sender, EventArgs e)  {  //display values  //if no property is set the default values  if (pp.bRate == "" && pp.sBits == "")  {  dataBitLabel.Text = "BaudRate = " +   sp.BaudRate.ToString();  readTimeOutLabel.Text = "StopBits = " +   sp.StopBits.ToString();  }  else {  dataBitLabel.Text = "BaudRate = " +   pp.bRate;  readTimeOutLabel.Text = "StopBits = " + pp.sBits;  }  //创建C#串口通信程序 parityLabel.Text = "DataBits = " +   sp.DataBits.ToString();  stopBitLabel.Text = "Parity = " +   sp.Parity.ToString();  readTimeOutLabel.Text = "ReadTimeout = " +    sp.ReadTimeout.ToString();   if (propertyButton.Visible == true)  propertyButton.Hide();  saveStatusButton.Hide();  startCommButton.Show();   try {  //open serial port  sp.Open();  //set read time out to 500 ms  sp.ReadTimeout = 500;  }  catch (System.Exception ex)  {  baudRatelLabel.Text = ex.Message;  }  }  }  }

创建C#串口通信程序之属性设置对话框代码:

#region Using directives   using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Text;  using System.Windows.Forms;   #endregion   namespace Serialexpample  {  partial class PropertyPage : Form  {  //variables for storing values of baud rate and stop bits  private string baudR="";  private string stopB="";   //property for setting and getting baud rate and stop bits  public string bRate  {  get {  return baudR;  }  set {  baudR = value;  }  }   public string sBits  {  get {  return stopB;  }  set {  stopB = value;  }  }   public PropertyPage()  {  InitializeComponent();  }   private void cancelButton_Click(  object sender, EventArgs e)  {  this.bRate = "";  this.sBits = "";  //close form  this.Close();  }   private void okButton_Click_1(  object sender, EventArgs e)  {  //here we set the value for stop bits and baud rate.  this.bRate = BaudRateComboBox.Text;  this.sBits = stopBitComboBox.Text;  //  this.Close();   }  }  }

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI