预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

没有百度文库财富值请到 文库帮手网www.365xueyuan.com 免费帮下载百度文库积分资料 本文由陶一铭贡献 doc1。 C#中串口通信编程收藏本文将介绍如何在.NET平台下使用C#创建串口通信程 序,.NET2.0提供了串口通信的功能,其命名空间是System.IO.Ports.这个新的框 架不但可以访问计算机上的串口,还可以和串口设备进行通信.我们将使用标准的R S232C在PC间通信.它工作在全双工模式下,而且我们不打算使用任何的握手或 流控制器,而是使用无modem连接.命名空间System.IO.Ports命名空间中最重用的 是SerialPort类.创建SerialPort对象通过创建SerialPort对象,我们可以在 程序中控制串口通信的全过程.我们将要用到的SerialPort类的方法:ReadLine() :从输入缓冲区读一新行的值,如果没有,会返回NULLWriteLine(string):写入输出缓 冲Open():打开一个新的串口连接Close():关闭Code://createaSerialPorto bjectSerialPortsp=newSerialPort(); 默认情况下,DataBits值是8,StopBits是1,通信端口是COM1.这些都可以在 下面的属性中重新设置:BaudRate:串口的波特率StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间.单位,毫秒还有不少其它公共属性,自 己查阅MSDN.串口的硬件知识 在数据传输的时候,每个字节的数据通过单个的电缆线传输.包包括开始位,数 据,结束为.一旦开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设 定了.发送和接收必须设定同样的波特率和数据位数.无猫模式没有Modem模式的 电缆只是简单地交叉传送和接收线.同样DTR&DSR,和RTS&CTS也需要交叉.RS 232针图 这里,我们三条线.互连2和3(一段的2pin连接3pin),连接两端的5pin. [示例程序]主程序 如果想使用默认属性,按"SaveStatus"按钮,如果想改变属性按"Property".它 会弹出下图: 设定好之后,可以通信了. 主窗口的代码Code:#regionUsingdirectives usingSystem;usingSystem.Collections.Generic;usingSystem.Componen tModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Windows.Form s;usingSystem.IO.Ports;#endregionnamespaceSerialexpample{partialcl assForm1:Form{//createinstanceofpropertypage//propertypageisu sedtosetvaluesforstopbitsand//baudratePropertyPagepp=newProp ertyPage();//createanSerialPortobjectSerialPortsp=newSerialPort( );publicForm1(){InitializeComponent();}privatevoidpropertyButton_C lick(objectsender,EventArgse){//showpropertydialogpp.ShowDialog(); propertyButton.Hide();}privatevoidsendButton_Click(objectsender,Eve ntArgse){try{//writelinetoserialportsp.WriteLine(textBox.Text); //clearthetextboxtextBox.Text=""; }catch(System.Exceptionex){baudRatelLabel.Text=ex.Message;}} privatevoidReadButton_Click(objectsender,EventArgse){try{//clear thetextboxtextBox.Text="";//readserialportanddisplayedthedata intextboxtextBox.Text=sp.ReadLine();}catch(System.Exceptionex){ baudRatelLabel.Text=ex.Message;}}privatevoidForm1_Load(objectsende r,EventAr