一、串口通讯基本参数

1.波特率:每秒传输n个多少个二进制位。

例如 9600 b/s  = 1200 B/s=  1.172KB/S

2.传输数据格式

数据格式由起始位(start bit)、数据位(data bit)、奇偶校验位(parity bit)和停止位(stop bit)组成

在串行通信的信号线路上,共有两种状态,分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑1高电平状态。

(1)起始位:

起始位必须是持续一个比特时间的逻辑0(低电平),使数据线处于逻辑0低电平状态,提示接收器数据传输即将开始,即标志传输一个字符的开始。发送器通过发送起始位而开始一个字符传送,接收方可用起始位使自己的接收时钟与发送方的数据同步。

(2) 数据位:

数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数由通信双方共同约定,一般可以是6位、7位或8位,比如标准的ASCII码是0~127(7位),扩展的ASCII码是0~255(8位)。传输数据时先传送字符的低位,后传送字符的高位,即低位(LSB)在前,高位(MSB)在后

(3)奇偶校验位:

校验位一般用来判断接收的数据位有无错误,一般采用奇偶校验.

假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1);如果是偶校验,则偶校验位为1(要确保总共有偶数个1)

奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,好处是接收设备能够知道一个位的状态变化,从而判断是否有噪声干扰了通信以及传输的数据是否同步

奇偶检验位不是必须有的

(4)停止位:

这里要提到一个概念,单位时长;指的是此波特率下发送一次所需要的时间,例如 9600波特率理论上发送一个包需要 1/9600秒。

停止位在数据格式的最后,用以标志一个字符传送的结束,对应于逻辑1(高电平)状态。停止位可以是1位、1.5位或2位,可以由软件设定。但它一定是逻辑1高电平,标志着传输一个字符的结束

例如:如果停止位是1.5表示 1.5* 1/9600 秒的时间里一直发送1. 客户端就可以知道这个数据包发送完成了---个人理解

二、常用串口通讯协议

1.RS-232

一般个人PC机上会有一个9针的RS232。传输距离大概15米左右

2.RS-422

3.RS-485

用在工控机上比较多,可以个主机带多个口.传输距离可达1500米左右

三、C# SerialPort类

1.初始化设置

using System.IO.Ports;

SerialPort sp = new SerialPort();
sp.PortName = "COM1";//COM口名称
sp.BaudRate = ; //波特率
sp.DataBits = ;//每发送/接收一个字节的数据数目
sp.StopBits = StopBits.One;//每发送/接收一个字节的停止位数目

 

2.方法

打开端口连接

public void Open ();

关闭端口连接

public void Close ();

 

读取串口

public int Read (char[] buffer, int offset, int count);

参数1 buffer Char[] 将输入写入到其中的字符数组。
参数2 offset Int32 要写入字符的 buffer 中的偏移量。
参数3 count Int32 最多读取的字符数。 如果 count 大于输入缓冲区中的字符数,则读取较少的字符。
返回 Int32 读取的字符数

写入数据

查看机器COM口数量

    class Program
{
static void Main(string[] args)
{
string[] ports = SerialPort.GetPortNames();//遍历COM口返回数组 foreach (string port in ports)
{
Console.WriteLine(port);
} Console.ReadLine();
}
}

四、接受串口数据方式

(1)连续输出和命令输出

例如:

 (2)连续输出的格式

例如:托利多地秤串口通讯

代码:

(3)命令输出

代码:

(52) C# 串口通讯的更多相关文章

  1. 第20章 USART—串口通讯

    本章参考资料:<STM32F76xxx参考手册>USART章节. 学习本章时,配合<STM32F76xxx参考手册>USART章节一起阅读,效果会更佳,特别是涉及到寄存器说明的 ...

  2. 第20章 USART—串口通讯—零死角玩转STM32-F429系列

    第20章      USART—串口通讯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...

  3. C#串口通讯实例

    本文参考<C#网络通信程序设计>(张晓明  编著) 程序界面如下图: 参数设置界面代码如下: using System; using System.Collections.Generic; ...

  4. delphi之动态库调用和串口通讯

    串口通讯: Spcomm 控件属性: CommName  :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...

  5. 用SPCOMM 在 Delphi中实现串口通讯 转

      用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...

  6. 西门子plc串口通讯方式

    西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...

  7. 教程-Delphi MSComm 实时串口通讯

    Delphi  MSComm 实时串口通讯 MSComm控件具有丰富的与串口通信密切相关的属性,提供了对串口进行的多种操作,进而使串行通信变得十分简便.MSComm的控件属性较多,常用的属性如下:1) ...

  8. 浅析PC机串口通讯流控制

    转自浅析PC机串口通讯流控制 我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解 ...

  9. STM32F10x 学习笔记6(USART实现串口通讯 2)

    这次讲讲利用串口收发中断来进行串口通讯.STM32 上为每个串口分配了一个中断.也就是说无论是发送完成还是收到数据或是数据溢出都产生同一个中断.程序需在中断处理函数中读取状态寄存器(USART_SR) ...

随机推荐

  1. jmeter之--断言json响应&json path espressions的语法

    一.提取所需要断言的内容: 响应数据如下:加入需要提取id为90的值 { , "name" : "python", "url" : &quo ...

  2. css 导航菜单+下拉菜单

    一.导航菜单 1.横向导航 代码如下: <!doctype html> <html> <head> <meta charset="utf-8&quo ...

  3. P1476 休息中的小呆

    P1476 休息中的小呆 题目描述 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫“最初梦想”的游戏.游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王ch ...

  4. STM32 系统架构

    这里所讲的 STM32 系统架构主要针对的 STM32F103 这些非互联型芯片 STM32 主系统主要由四个驱动单元和四个被动单元构成. 四个驱动单元是: 内核 DCode 总线; 系统总线;通用  ...

  5. 15. Django连接Mysql数据库

    安装PyMySQL,打开cmd, pip install PyMySQL 在.../blog/init.py 目录下添加: import pymysql pymysql.install_as_MySQ ...

  6. upc组队赛6 Odd Gnome【枚举】

    Odd Gnome 题目描述 According to the legend of Wizardry and Witchcraft, gnomes live in burrows undergroun ...

  7. PAT甲级——A1146 TopologicalOrder【25】

    This is a problem given in the Graduate Entrance Exam in 2018: Which of the following is NOT a topol ...

  8. python中使用动态库

    首先,创建一个简单的动态库编程生成dll.so:   gcc -fPIC -O2 -shared dll.c -o dll.soC文件:dll.c  如下 #include <stdio.h&g ...

  9. AJAX 向后台发送带 List 集合的对象(转)

    var school = {};school.name = '清华大学';school.address = "北京";//此处使用的是 easyui 插件来获取数据var rows ...

  10. Android开发:图文分析 Handler通信机制 的工作原理

    前言 在Android开发的多线程应用场景中,Handler机制十分常用 下面,将图文详解 Handler机制 的工作原理 目录 1. 定义 一套 Android 消息传递机制 2. 作用 在多线程的 ...