.NET串口通信 RS232 、RS485,及serialport

在这里插入图片描述

》》》RS232

3线制(RXD、TXD、GND)、全双工、点对点通讯(因点对点通讯方式而无法联网,导致出现RS485)

》》》RS422

4线制、全双工、点对多主从通讯(实际上还有一根信号地线,共5根线)

1.RS232是全双工的,RS485是半双工的,RS422是全双工的。
在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。波特率是传输通道频宽的指标。
波特率9600与波特率19200的区别就是:波特率19200传输快但传输距离近,波特率9600传输相对远但速率慢。
比如一个英文字母,所以:9600的波特率的信道,理论上每秒可以传输9600个二进制位,也就是9600/8个英文字母的数据量,也就是1200个字节,大约1.2KB。而19200则是每秒可传输2400字节,大约2.4KB。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {        
        SerialPort com = new SerialPort();
        private void button1_Click(object sender, EventArgs e)
        {                 
            com.BaudRate = 115200;
            com.PortName = "COM2";
            com.DataBits = 8;
            com.Parity = Parity.None;
            com.StopBits = StopBits.One;
            com.WriteTimeout = 3000;
            com.ReadTimeout = 3000;
            //触发DataReceived条件
            com.ReceivedBytesThreshold = 1;
            com.RtsEnable = true;
            com.DtrEnable = true;
            com.DataReceived += new SerialDataReceivedEventHandler(com_DataReceived);
            com.Open();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                //首先判断串口是否开启
                if (com.IsOpen)
                {
                    //串口处于开启状态,将发送区文本发送
                    com.Write("12321321");
                }
            }
            catch (Exception ex)
            {
                //捕获到异常,创建一个新的对象,之前的不可以再用
                com = new System.IO.Ports.SerialPort();
                //刷新COM口选项
                comboBox1.Items.Clear();
                comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
                //响铃并显示异常给用户
                System.Media.SystemSounds.Beep.Play();
                button1.Text = "打开串口";
                button1.BackColor = Color.ForestGreen;
                MessageBox.Show(ex.Message);               
            }
        }

        private void com_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                //因为要访问UI资源,所以需要使用invoke方式同步ui
                this.Invoke((EventHandler)(delegate
                {
                   // 非中文
                    textBox_receive.AppendText(com.ReadExisting());
                    // 接受中文
                    int str = com.BytesToRead;//byte方式读
                    //接收到的str数据中有中文,编码成GB2312,可正常显示中文
                    byte[] bytes = new byte[str];
                    com.Read(bytes, 0, str);
                    string str1 = System.Text.Encoding.Default.GetString(bytes);
                    //添加内容。AppendText函数等同:textBox1.Text += str;即在尾部添加,不清空前面接收的字符
                    textBox_receive.AppendText(str1);
                    
                }
                   )
                );

            }
            catch (Exception ex)
            {
                //响铃并显示异常给用户
                System.Media.SystemSounds.Beep.Play();
                MessageBox.Show(ex.Message);

            }
        }       
    }
}

ReceivedBytesThreshold

》》ReceivedBytesThreshold 是 SerialPort 类的一个属性,它表示在读取操作开始之前,串口缓冲区中必须有多少字节的阈值。当接收到的字节数达到这个阈值时,将触发一个 DataReceived 事件。
在这里插入图片描述

》》 串口数据不读取,是累计存在缓冲区的。 一旦读缓冲区,缓存区数据就清空了。

在这里插入图片描述

RtsEnable DtrEnable ;

在这里插入图片描述

书名:《Visual C#.NET串口通信及测控应用典型实例》(电子工业出版社.李江全.邓红涛.刘巧.李伟) PDF格式扫描版,全书分为8章,共369页。2012年5月出版。 全书压缩打包成3部分,这是第1部分 内容简介 本书从工程应用的角度出发,通过8个典型应用实例,包括PC与PC、PC与单片机、PC与PLC、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用SerialPort控件和MSComm控件编写C#.NET串口通信程序,并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信的基本概念 1.1.2 RS-232C接口标准 1.1.3 RS-422/485接口标准 1.1.4 串口通信线路连接 1.1.5 PC中的串行端口 1.1.6 虚拟串口的使用 1.2 VC++.NET串行通信控件与API函数 1.2.1 MSComm控件的使用 1.2.2 SerialPort控件的使用 1.2.3 串行通信API函数 1.3 PC与PC串口通信实例 1.3.1 两台PC串口通信 1.3.2 一台PC双串口互通信 第2章 PC与单片机串口通信 2.1 典型单片机开发板简介 2.1.1 单片机测控系统的组成 2.1.2 单片机开发板B的功能 2.1.3 单片机开发板B的主要电路 2.2 PC与单片机串口通信实例 2.2.1 PC与单个单片机串口通信 2.2.2 PC与多个单片机串口通信 2.3 PC与单片机串口通信测控应用实例 2.3.1 模拟量输入 2.3.2 模拟量输出 2.3.3 开关量输入 2.3.4 开关量输出 第3章 PC与西门子PLC串口通信 3.1 西门子PLC模拟量扩展模块与通信协议 3.1.1 西门子PLC模拟量输入模块 3.1.2 西门子PLC PPI通信协议 3.2 PC与西门子PLC串口通信测控应用实例 3.2.1 模拟量输入 3.2.2 模拟量输出 3.2.3 开关量输入 3.2.4 开关量输出 第4章 PC与三菱PLC串口通信 4.1 三菱PLC特殊功能模块与通信协议 4.1.1 FX2N系列PLC的特殊功能模块 4.1.2 三菱PLC编程口通信协议 4.2 PC与三菱PLC串口通信测控应用实例 4.2.1 模拟量输入 4.2.2 模拟量输出 4.2.3 开关量输入 4.2.4 开关量输出 第5章 PC与分布式I/O模块串口通信 5.1 典型分布式I/O模块简介 5.1.1 集散控制系统的结构与特点 5.1.2 ADAM4000远程数据采集控制系统 5.1.3 ADAM4000系列模块简介 5.1.4 ADAM4000系列模块的软件安装 5.2 PC与分布式I/O模块串口通信测控应用实例 5.2.1 模拟量输入 5.2.2 模拟量输出 5.2.3 数字量输入 5.2.4 数字量输出 第6章 PC与智能仪器串口通信 6.1 典型智能仪器简介 6.1.1 智能仪器的结构与特点 6.1.2 XMT-3000A型智能仪器的通信协议 6.2 PC与智能仪器串口通信测控应用实例 6.2.1 PC与单台智能仪器温度测控 6.2.2 PC与多台智能仪器温度测控 第7章 PC与无线数据传输模块串口通信 7.1 典型无线数传模块简介 7.1.1 无线数传技术概述 7.1.2 DTD46X系列无线数传模块 7.2 PC与无线数传模块串口通信测控应用实例 7.2.1 设计任务 7.2.2 线路连接 7.2.3 利用C51语言实现基于DS18B20的单片机温度测控 7.2.4 利用汇编语言实现基于DS18B20的单片机温度测控 7.2.5 利用VC++.NET实现PC与无线数传模块温度测控 第8章 USB串行总线模块测控应用 8.1 USB总线在数据采集系统中的应用 8.1.1 USB总线及其数据采集系统的特点 8.1.2 采用USB传输的数据采集系统 8.1.3 典型USB数据采集模块及应用 8.1.4 VC++.NET数据采集与控制的方式 8.2 PC与USB数据采集模块测控应用实例 8.2.1 模拟量输入 8.2.2 模拟量输出 8.2.3 数字量输入 8.2.4 数字量输出 参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值