源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#串口通信程序实例详解

  • 时间:2020-12-27 10:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#串口通信程序实例详解
创建C#串口通信程序之命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类。 创建C#串口通信程序之创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭
[u]复制代码[/u] 代码如下:
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”。设定好之后,可以通信了。 主窗口的代码
[u]复制代码[/u] 代码如下:
#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#串口通信程序之属性设置对话框代码:
[u]复制代码[/u] 代码如下:
#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();         }     } }
C#串口通信程序创建的相关内容就向你介绍到这里,希望对你了解创建C#串口通信程序的步骤和需要注意的事宜。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部