C#串口编程.doc
《C#串口编程.doc》由会员分享,可在线阅读,更多相关《C#串口编程.doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#串口编程.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了。他只是比对方更珍惜这份感情。 本文由陶一铭贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#中串口通信编程 收藏 本文将介绍如何在.NET 平台下使用 C#创建串口通信程序, .NET 2.0 提供了串口通信的功能, 其命名 空间是 System.IO.Ports.这个新的框架不但可以访问计算机上的串口,还可以和串口设备进 行通信. 我们将使用标准的 RS 232 C 在 PC 间通信.它工作在全双工模式下,而且我们不打算使用 任何的握手 或流控制器,而是使用无 modem
2、 连接. 命名空间 System.IO.Ports 命名空间中最重用的是 SerialPort 类. 创建 SerialPort 对象 通过创建 SerialPort 对象,我们可以在程序中控制串口通信的全过程. 我们将要用到的 SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回 NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: /create a Serial Port object SerialPort sp = new SerialPort (); 默认情况下,
3、DataBits 值是 8,StopBits 是 1,通信端口是 COM1.这些都可以在下面的属 性中重新设置 : BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间.单位,毫秒 还有不少其它公共属性,自己查阅 MSDN. 串口的硬件知识 在数据传输的时候, 每个字节的数据通过单个的电缆线传输. 包包括开始位, 数据, 结束为. 一旦 开始位传出,后面就会传数据,可能是 5,6,7 或 8 位,就看你的设定了.发送和接收必须 设定同样 的波特率和数据位数. 无猫模式 没有 Modem 模式的电缆只是简单地交叉传送和接收线
4、.同样 DTR & DSR, 和 RTS & CTS 也需要交叉. RS232 针图 这里,我们三条线.互连 2 和 3(一段的 2pin 连接 3pin) ,连接两端的 5pin. 示例程序 主程序 如果想使用默认属性,按Save Status按钮,如果想改变属性按Property .它会弹出下 图: 设定好之后,可以通信了. 主窗口的代码 Code: #region Using directives using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;
5、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 obj
6、ect 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.WriteLin
7、e(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(); ca
8、tch(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)
9、 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 = BaudRat
10、e = + sp.BaudRate.ToString(); readTimeOutLabel.Text = StopBits = + sp.StopBits.ToString(); else dataBitLabel.Text = BaudRate = + pp.bRate; readTimeOutLabel.Text = StopBits = + pp.sBits; parityLabel.Text = DataBits = + sp.DataBits.ToString(); stopBitLabel.Text = Parity = + sp.Parity.ToString(); readT
11、imeOutLabel.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
12、 = ex.Message; 属性设置对话框代码: Code: #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 /variabl
13、es 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() InitializeC
14、omponent(); 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 = stopBitComboB
15、ox.Text; / this.Close(); 一.概述 在 Visual Studio 6.0 中编写串口通讯程序,一般都使用 Microsoft Communication Control(简 称 MSComm)的通讯控件,只要通 过对此控件的属性和事件进行相应编程操作,就可以轻 松地实现串口通讯.但在 Microsoft.Net 技术广泛应用的今天,Visual Studio.Net 没有将此控 件加入控件库,所以人们采用了许多方法在 Visual Studio.Net 来编写串口通讯程序:第一种 方法是通过采用 Visual Studio 6.0 中原来的 MSComm 控件这是最简
16、单的,最方便的方法, 但需要注册;第二种方法是采用微软在.NET 推出了一个串口控件,基于.NET 的 P/Invoke 调用方法实现;第三种方法是自己用 API 写串口通信,虽然难度高,但可以方便实现自己 想要的各种功能. 现在微软推出了最新版本的 Visual Studio 2005 开发工具,可以不再采用第三方控件的方法 来设计串口通讯程序. NET Framework 2.0 类库包含了 SerialPort 类,方便地实现了所需要串 口通讯的多种功能,为了使 MSComm 编程方法快速转换到以 SerialPort 类为核心的串口通 讯的设计方法, 本文着重讨论了 Visual St
17、udio 6.0 的 MSComm 控件和 SerialPort 类设计方法 的异同点. 二.SerialPort 常用属性,方法和事件 1.命名空间 System.IO.Ports 命名空间包含了控制串口重要的 SerialPort 类,该类提供了同步 I/O 和事件 驱动的 I/O,对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起 始位置需加入 Using System.IO.Ports. 2.串口的通讯参数 串口通讯最常用的参数就是通讯端口号及通讯格式(波特率,数据位,停止位和校验位),在 MSComm 中相关的属性是 CommPort 和 Settings.Seri
18、alPort 类与 MSComm 有一些区别: a.通讯端口号 PortName属性获取或设置通信端口, 包括但不限于所有可用的 COM 端口, 请注意该属性 返回类型为 String,不是 Mscomm.CommPort 的 short 类型.通常情况下,PortName 正常返 回的值为 COM1,COM2,SerialPort 类最大支持的端口数突破了 CommPort 控件中 CommPort 属性不能超过 16 的限止,大大方便了用户串口设备的配置. b. 通讯格式 SerialPort 类对分别用BaudRate,Parity,DataBits,StopBits属性设置通讯格式中的
19、波 特率,数据位,停止位和校验位,其中Parity和StopBits分别是枚举类型 Parity,StopBits, Parity 类型中枚举了 Odd(奇),Even(偶),Mark,None,Space,Parity 枚举了 None,One, OnePointFive,Two. SerialPort 类提供了七个重载的构造函数,既可以对已经实例化的 SerialPort 对象设置上述相 关属性的值, 也可以使用指定的端口名称, 波特率和奇偶校验位数据位和停止位直接初始化 SerialPort 类的新实例. 3.串口的打开和关闭 SerialPort 类没有采用 MSComm.PortOp
20、en=True/False 设置属性值打开关闭串口, 相应的是调 用类的 Open()和 Close()方法. 4. 数据的发送和读取 Serial 类调用重载的 Write 和 WriteLine 方法发送数据,其中 WriteLine 可发送字符串并在字 符串末尾加入换行符,读取串口缓冲区的方法有许多,其中除了 ReadExisting 和 ReadTo,其 余的方法都是同步调用,线程被阻塞直到缓冲区有相应的数据或大于 ReadTimeOut 属性设 定的时间值后,引发 ReadExisting 异常. 5.DataReceived 事件 该 事 件 类 似 于 MSComm 控 件 中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 串口 编程
限制150内