一、串口通讯基本参数

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. 设置当内容超出div(文字长度超出div宽度)出现滚动条

    overflow 一共有5个属性. 1.overflow:auto:内容会被修剪,超出设置的宽高后会出现滚动条 2.overflow:scroll;内容会被修剪,不管内容是否超出,都会出现滚动条的位置 ...

  2. PHP 3DES 加解密(CBC模式,pkcs5padding填充)

    1.前言:项目中接入第三方支付遇到3DES加密,以前也没用过,搜了好多,都不适用,各种不对,后来自己结合搜到的终于弄正确了,检测地址:http://tool.chacuo.net/crypt3des. ...

  3. for循环中执行setTimeout问题(任务队列的问题)

    for(var i=0;i<8;i++){ setTimeout(function () { console.log(i) },0) } 输出了8次8,这跟js的执行顺序和作用域链有关. 规则: ...

  4. CMDB 调研报告

    基础概念 1.什么是CMDB CMDB——配置管理数据库,通过识别.控制.维护,检查企业的IT资源,从而高效控制与管理不断变化的IT基础架构与IT服务,并为其它流程,例如事故管理.问题管理.变更管理. ...

  5. Cocos2d-x之Layer

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. Layer是处理玩家事件响应的Node子类.与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度 ...

  6. CookieUtil.java

    package util; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.n ...

  7. 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL

    场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad+ ...

  8. javafx将数据库内容输出到tableview表格

    一 .创建Fxml文件,用Javafx Scene Builder 编辑页面,创建tableview(表格)和tablecolum(表格中的列),并为其设置fxid: 二.生成fxml文件的控制类: ...

  9. DQN的第一次尝试 -- 软工结对编程第一次作业

    DQN的第一次尝试 在本篇博客中将为大家形象地介绍一下我对DQN的理解,以及我和我的队友如何利用DQN进行黄金点游戏.最后我会总结一下基于我在游戏中看到的结果,得到的dqn使用的注意事项和这次游戏中我 ...

  10. git的一些简单用法

    1.工作区暂存区和仓库区 工作区 对于添加.修改.删除文件的操作,都发生在工作区中 暂存区 暂存区指将工作区中的操作完成小阶段的存储,是版本库的一部分 仓库区 仓库区表示个人开发的一个小阶段的完成 仓 ...