zoukankan      html  css  js  c++  java
  • C#串口控制

      串行口是计算机的标准接口,现在的PC机(个人电脑)一般至少有两个串行口COM1和COM2。串行口应用广泛,在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。本节通过几个实例,介绍串口应用的技术和方法。

      通过串口发送数据

      现在大多数硬件设备均采用串口技术与计算机相连,因此串口的应用程序开发越来越普遍。例如,在计算机没有安装网卡的情况下,将本机上的一些信息数据传输到另一台计算机上,那么利用串口通信就可以实现。运行本程序,在“发送数据”文本框中输入要传送的数据,单击【发送】按钮,将传送的数据发送到所选择的端口号中;单击【接收】按钮,传递的数据被接收到“接收数据”文本框中;如图:

    在.NET Framework 2.0中提供了SerialPort类,该类主要实现串口数据通信等。下面主要介绍该类的主要属性(表1)和方法(表2)。

    表1

    SerialPort类的常用属性  


    名称                    说明


    BaseStream                  获取SerialPort 对象的基础Stream 对象
    BaudRate                  获取或设置串行波特率
    BreakState                 获取或设置中断信号状态
    BytesToRead                 获取接收缓冲区中数据的字节数
    BytesToWrite                获取发送缓冲区中数据的字节数
    CDHolding                   获取端口的载波检测行的状态
    CtsHolding                  获取“可以发送”行的状态

    DataBits                   获取或设置每个字节的标准数据位长度
    DiscardNull                 获取或设置一个值,该值指示Null 字节在端口和接收缓冲区之间传输时是否被忽略
    DsrHolding                  获取数据设置就绪(DSR)信号的状态
    DtrEnable                  获取或设置一个值,该值在串行通信过程中启用数据终端就绪(DTR) 信号
    Encoding                   获取或设置传输前后文本转换的字节编码
    Handshake                   获取或设置串行端口数据传输的握手协议
    IsOpen                    获取一个值,该值指示
    SerialPort                  对象的打开或关闭状态
    NewLine                   获取或设置用于解释ReadLine( )和WriteLine( )方法调用结束的值
    Parity                    获取或设置奇偶校验检查协议

    ParityReplace                 获取或设置一个字节,该字节在发生奇偶校验错误时替换数据流中的无效字节
    PortName                   获取或设置通信端口,包括但不限于所有可用的 COM 端口
    ReadBufferSize                获取或设置 SerialPort 输入缓冲区的大小
    ReadTimeout                  获取或设置读取操作未完成时发生超时之前的毫秒数
    ReceivedBytesThreshold            获取或设置 DataReceived 事件发生前内部输入缓冲区中的字节数
    RtsEnable                   获取或设置一个值,该值指示在串行通信中是否启用请求发送 (RTS) 信号
    StopBits                    获取或设置每个字节的标准停止位数
    WriteBufferSize                获取或设置串行端口输出缓冲区的大小
    WriteTimeout                 获取或设置写入操作未完成时发生超时之前的毫秒数

    表2

    SerialPort类的常用方法


    方法名称                   说明


    Close                     关闭端口连接,将IsOpen 属性设置为False,并释放内部Stream 对象
    Open                     打开一个新的串行端口连接
    Read                     从SerialPort 输入缓冲区中读取
    ReadByte                   从SerialPort 输入缓冲区中同步读取一个字节
    ReadChar                   从SerialPort 输入缓冲区中同步读取一个字符
    ReadLine                   一直读取到输入缓冲区中的NewLine 值
    ReadTo                    一直读取到输入缓冲区中指定value 的字符串
    Write                      已重载。将数据写入串行端口输出缓冲区
    WriteLine                   将指定的字符串和
    NewLine                    值写入输出缓冲区

    注意:用跳线使串口的第2、3针连接,可以在本地计算机上实现串口通信,所以,通过串口的第2、3针的连接可以对程序进行检测。串口截面图如图所示

    实现过程

    (1)新建一个项目,命名为Ex13_01,默认窗体为Form1。
     
    (2)在Form1窗体中,主要添加两个Button控件,分别用于执行发送数据和接受数据,添加两个TextBox控件,用于输入发送数据和显示接收数据。

    (3)主要程序代码。
      
         private void button1_Click(object sender, EventArgs e) 
           {
              
         serialPort1.PortName = "COM1";  
                serialPort1.BaudRate = 9600; 
                serialPort1.Open();
       
                byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);  
                string str = Convert.ToBase64String(data);      
                serialPort1.WriteLine(str);
              
         MessageBox.Show("数据发送成功!","系统提示");   
         }
           
      private void button2_Click(object sender, EventArgs e) 
           {
            
           byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
                  textBox2.Text = Encoding.Unicode.GetString(data); 
                serialPort1.Close();
       
              MessageBox.Show("数据接收成功!","系统提示");

            }
     

  • 相关阅读:
    J2那几个E和Web基础
    PHP开发人员对JAVA的WEB开发入门(初版-基础知识)
    一个处理大数据的后台服务(已废弃)
    一个请求过来都经过了什么
    请一定记得升级java虚拟机
    面向对象之 结构体和类的区别
    Swift 结构体的使用
    iOS 波浪效果的实现
    iOS 常用三方(持续更新)
    Xshell 链接 Could not connect to '192.168.80.129' (port 22): Connection failed
  • 原文地址:https://www.cnblogs.com/D-LuFei/p/4581428.html
Copyright © 2011-2022 走看看