创建C#串口通信程序详解
摘要:创建C#串口通信程序需要注意什么呢?创建C#串口通信程序的步骤是什么?那么本文就向你详细介绍创建C#串口通信程序集体的内容。
在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。我们将使用标准的RS 232 C 在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手或流控制器,而是使用无modem连接。创建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(); } } }
C#串口通信程序创建的相关内容就向你介绍到这里,希望对你了解创建C#串口通信程序的步骤和需要注意的事宜。
个人主要研究:金融系统、MIS系统、人力资源管理系统、数据采集系统、权限管理系统等等系统。主攻C#开发语言,Oracle、Sql Server,WCF和Remoting通信。
如需联系可加QQ:442389681 Email:lxc880615@163.com 手机:18922735098
QQ群交流:186841119 (请注明来自博客园)
博客园地址:http://www.cnblogs.com/jara/ http://www.cnblogs.com/luoyuhao/
提示:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
如果对文章有任何问题,都可以在评论中留言,我会尽可能的答复您,谢谢您的阅读