zoukankan      html  css  js  c++  java
  • 创建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():关闭

    1. //create a Serial Port object  
    2. 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”。设定好之后,可以通信了。

        主窗口的代码

    1. #region Using directives  
    2.  
    3. using System;  
    4. using System.Collections.Generic;  
    5. using System.ComponentModel;  
    6. using System.Data;  
    7. using System.Drawing;  
    8. using System.Windows.Forms;  
    9. using System.IO.Ports;  
    10.  
    11. #endregion  
    12.  
    13. namespace Serialexpample  
    14. {  
    15. partial class Form1 : Form  
    16. {  
    17. //create instance of property page  
    18. //property page is used to set values for stop bits and  
    19. //baud rate  
    20.  
    21. PropertyPage pp = new PropertyPage();  
    22.  
    23. //create an Serial Port object  
    24. SerialPort sp = new SerialPort();  
    25.  
    26. public Form1()  
    27. {  
    28. InitializeComponent();  
    29. }  
    30.  
    31. private void propertyButton_Click(object sender, EventArgs e)  
    32. {  
    33. //show property dialog  
    34. pp.ShowDialog();  
    35.  
    36. propertyButton.Hide();  
    37. }  
    38.  
    39. private void sendButton_Click(object sender, EventArgs e)  
    40. {  
    41. try 
    42. {  
    43. //write line to serial port  
    44. sp.WriteLine(textBox.Text);  
    45. //clear the text box  
    46. textBox.Text = "";  
    47. }  
    48. catch (System.Exception ex)  
    49. {  
    50. baudRatelLabel.Text = ex.Message;  
    51. }  
    52.  
    53. }  
    54.  
    55. private void ReadButton_Click(  
    56. object sender, EventArgs e)  
    57. {  
    58. try 
    59. {  
    60. //clear the text box  
    61. textBox.Text = "";  
    62. //read serial port and displayed the data in text box  
    63. textBox.Text = sp.ReadLine();  
    64. }  
    65. catch(System.Exception ex)  
    66. {  
    67. baudRatelLabel.Text = ex.Message;  
    68. }  
    69. }  
    70.  
    71. private void Form1_Load(object sender, EventArgs e)  
    72. {  
    73.  
    74. }  
    75.  
    76. private void Form1_FormClosing(  
    77. object sender, FormClosingEventArgs e)  
    78. {  
    79. MessageBox.Show("Do u want to Close the App");  
    80. sp.Close();  
    81. }  
    82.  
    83. private void startCommButton_Click(  
    84. object sender, EventArgs e)  
    85. {  
    86. startCommButton.Hide();  
    87. sendButton.Show();  
    88. readButton.Show();  
    89. textBox.Show();  
    90. }  
    91.  
    92. //when we want to save the status(value)  
    93. private void saveStatusButton_Click_1(  
    94. object sender, EventArgs e)  
    95. {  
    96. //display values  
    97. //if no property is set the default values  
    98. if (pp.bRate == "" && pp.sBits == "")  
    99. {  
    100. dataBitLabel.Text = "BaudRate = " +  
    101.  sp.BaudRate.ToString();  
    102. readTimeOutLabel.Text = "StopBits = " +   
    103. sp.StopBits.ToString();  
    104. }  
    105. else 
    106. {  
    107. dataBitLabel.Text = "BaudRate = " +  
    108.  pp.bRate;  
    109. readTimeOutLabel.Text = "StopBits = " + pp.sBits;  
    110. }  //创建C#串口通信程序
    111.  
    112. parityLabel.Text = "DataBits = " +  
    113.  sp.DataBits.ToString();  
    114. stopBitLabel.Text = "Parity = " +  
    115.  sp.Parity.ToString();  
    116. readTimeOutLabel.Text = "ReadTimeout = " +  
    117.   sp.ReadTimeout.ToString();  
    118.  
    119. if (propertyButton.Visible == true)  
    120. propertyButton.Hide();  
    121. saveStatusButton.Hide();  
    122. startCommButton.Show();  
    123.  
    124. try 
    125. {  
    126. //open serial port  
    127. sp.Open();  
    128. //set read time out to 500 ms  
    129. sp.ReadTimeout = 500;  
    130. }  
    131. catch (System.Exception ex)  
    132. {  
    133. baudRatelLabel.Text = ex.Message;  
    134. }  
    135. }  
    136. }  
    137. }  

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

    1. #region Using directives  
    2.  
    3. using System;  
    4. using System.Collections.Generic;  
    5. using System.ComponentModel;  
    6. using System.Data;  
    7. using System.Drawing;  
    8. using System.Text;  
    9. using System.Windows.Forms;  
    10.  
    11. #endregion  
    12.  
    13. namespace Serialexpample  
    14. {  
    15. partial class PropertyPage : Form  
    16. {  
    17. //variables for storing values of baud rate and stop bits  
    18. private string baudR="";  
    19. private string stopB="";  
    20.  
    21. //property for setting and getting baud rate and stop bits  
    22. public string bRate  
    23. {  
    24. get 
    25. {  
    26. return baudR;  
    27. }  
    28. set 
    29. {  
    30. baudR = value;  
    31. }  
    32. }  
    33.  
    34. public string sBits  
    35. {  
    36. get 
    37. {  
    38. return stopB;  
    39. }  
    40. set 
    41. {  
    42. stopB = value;  
    43. }  
    44. }  
    45.  
    46. public PropertyPage()  
    47. {  
    48. InitializeComponent();  
    49. }  
    50.  
    51. private void cancelButton_Click(  
    52. object sender, EventArgs e)  
    53. {  
    54. this.bRate = "";  
    55. this.sBits = "";  
    56. //close form  
    57. this.Close();  
    58. }  
    59.  
    60. private void okButton_Click_1(  
    61. object sender, EventArgs e)  
    62. {  
    63. //here we set the value for stop bits and baud rate.  
    64. this.bRate = BaudRateComboBox.Text;  
    65. this.sBits = stopBitComboBox.Text;  
    66. //  
    67. this.Close();  
    68.  
    69. }  
    70. }  

        C#串口通信程序创建的相关内容就向你介绍到这里,希望对你了解创建C#串口通信程序的步骤和需要注意的事宜。

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/gc2013/p/3968275.html
Copyright © 2011-2022 走看看