串口通信

串口通信之超时

ぃ、小莉子 提交于 2020-04-06 05:50:41
  超时分串口读超时和串口写超时,主要是读超时,即ReadTimeout与Read方法之间的超时。下面谈谈他们之间的意义和实现。   Read方法是阻塞的,它一直在读串口接收缓冲区中的数据,如果接收缓冲区有数据,Read方法则返回一个或多个字节数据;如果Read方法在等待ReadTimeout毫秒时间内,串口接收区一直没有任何数据,则Read方法将甩ExceptionTimeout异常。注意,Read(outBuf, offset, count)阻塞读取的不是非等到count个字节数据,而是当前接收缓冲区大于等于1小于等于count个字节数据,即只要有数据Read方法就立刻返回。   由于Read方法的阻塞性,所以我们必须防止(如串口物理断开) Read永远不返回,而导致程序卡死。方法有:   1. 设置ReadTimeout属性为合理值,其默认值为-1,即Read永不可能因为ReadTimeout而超时返回。   2. 先判断serialPort.BytesToRead大于0,再调用Read方法,则Read肯定会返回。 代码段一: int nStartTime = Environment.TickCount; while(true) { int nNowTime = Environment.TickCount;     if(nNowTime – nStartTime > 360

RS232串口通信详解

只愿长相守 提交于 2020-03-21 05:31:48
RS232串口通信详解:串口是计算机上一种非常通用的通信协议 9芯 信号方向来自 缩写 描述 1 调制解调器 CD 载波检测 2 调制解调器 RXD 接收数据 3 PC TXD 发送数据 4 PC DTR 数据终端准备好 5 GND 信号地 6 调制解调器 DSR 通讯设备准备好 7 PC RTS 请求发送 8 调制解调器 CTS 允许发送 9 调制解调器 RI 响铃指示器 两个串口连接时,接收数据针脚与发送数据针脚相连,彼此交叉,信号地对应相接即可. 串口的电气特性 : 1)RS-232串口通信最远距离是50英尺=15m 2)RS232可做到双向传输,全双工通讯,最高传输速率20kbps 3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ~-15V 逻辑0:+3~+15V 所以与单片机连接时常常需要加入电平转换芯片: 串口通信参数 : a)波特率:RS-232-C标准规定的数据传输速率为每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特。 b)数据位:标准的值是5、7和8位,如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位);扩展的ASCII码是0~255(8位)。 c)停止位:用于表示单个包的最后一位,典型的值为1,1.5和2位。由于数是在传输线上定时的

串口通信

孤街醉人 提交于 2020-03-17 14:41:14
串口通信:外设与软件之间的通讯协议 1、先上一张串口的数据格式图 ①起始位:用于标志传输一个字符的开始,接收方可用起始位使自己的时钟和发送方的数据同步; ②数据位:依次为D0-D6(低位到高位), ③校验位:D7位数据校验位可有可无(奇校验,数据位的1的数量为奇数,则用0表示;偶校验,数据位的1的数量为偶数,则用1表示),好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及 ④传输的数据是否同步 ⑤停止位:停止位可以是是1位、1.5位或2位,可以由软件设定。它一定是逻辑1电平,标志着传输一个字符的结束。 ⑥空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充,也就是用逻辑1电平填充。 2、异步通信的发送数据的过程 ①当初始化以后或者没有数据要发送的时候,发送端的起始位用逻辑1电平来填充,表示线路空闲,后边可以有多个空闲位 ②当发送端接收到指令需要发送数据时,则置发送端起始位为0,后边跟5-7位的数据位(D0-D6),D7奇偶校验位可有可无,停止位为1 ③如果后续没有数据要发送,则空闲位用逻辑1电平来填充,相反则置位0,表示新的数据需要传输 3、异步通信的接收数据的过程 ① 来源: https://www.cnblogs.com/OSKnown/p/7463312.html

51单片机复习:串口通信

浪子不回头ぞ 提交于 2020-03-10 10:23:18
计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。(比如电脑和单片机) 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 并行通信(通常是将数据字节的各位用多条数据线同时进行传送 ) 比如这样说,一个字节有八位,我有八根线,一根传一位,八位同时传递 优缺点: 并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。 串行通信(一个字节八位,一位一位传送) 串行通信是将数据字节分成一位一位的形式在 一条传输线上逐个地传送。 并行通信这里不多谈 我们下面谈谈串行通信,串行通信分异步通信与同步通信 异步通信与同步通信: 异步通信: 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。 为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的, 但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系, 但同一字符内的各位之间的距离均为“位间隔”的整数倍。 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位, 各帧之间还有间隔,因此传输效率不高。 同步通信: 同步通信时要建立发送方时钟对接收方时钟的直接控制

51单片机串口通信

我只是一个虾纸丫 提交于 2020-03-10 10:21:18
1.通信方式分类 (1)并行通信 发送方和接收方用多根数据线连接,多位数据同时发送。传输线多,长距离传输时成本大。 (2)串行通信 单根数据线发送数据,逐位发送。长距离传送成本低,但控制相对复杂。 串行通信又可分为: 异步串行通信 和 同步串行通信 。 异步串行通信 :所谓“异步”,指的是双方设备使用各自的时钟,以字符为单位传输,采用一种特殊的格式称为“帧”(如下图),且各字符之间的间隙不等。 一帧数据由起始位,数据位,校验位和停止位构成。 常态下,数据线上为高电平。起始位为低电平,也就是说,起始位出现,表示有一帧数据要传输了。 校验方式 有奇偶校验、和校验和循环冗余校验三种方式。 其中“和校验”是指,对数据块求和,产生一个字节的校验数据存到数据块末尾,接收方接受数据时对数据块再求和,和末尾的校验数据比较,不一致就表示传输发生错误。 同步串行通信:双方的时钟严格一致,传送的字符数据间没有间隙,双方实现同步。 2.RS232和TTL电平的转换 RS232是美国电子工业协会于1962年发布的串行通信接口标准,RS即Recomend Standard,推荐标准,232为标示号。RS232用的是 负电平逻辑 ,-3V ~ -15V 为1,+3 ~ +15V为0。 TTL是Transistor-Transistor Logic的简写,晶体管-晶体管逻辑。工作电压5V。规定: 对于输出电路

Android串口通信

岁酱吖の 提交于 2020-03-06 02:58:00
Android模拟器Root,Android7.1.1 Android模拟器如何安装app Android模拟器实现串口通信 使用AndroidStudio自带模拟器挂载串口不能接收超过8字节的数据 来源: CSDN 作者: szl_song 链接: https://blog.csdn.net/qq_32269393/article/details/104675510

【9】、串口通信

让人想犯罪 __ 提交于 2020-02-26 15:50:17
简述: 串行通信的分类: 全双工:同一时刻,两个设备可以同时收发数据(双向车道) 半双工:两个设备可以收发数据,但不能在同一时刻进行(比如一次只能过一辆车的双向车道) 单工:单方向通信,一个为发,另个为收(单向车道) 数据同步方式分类: 同步数据 异步数据: 区别:有没有时钟线; 有:同步; 无:异步; 传输速率: 通讯性能的重要参数 比特率(Bitrate),即每秒钟传输的二进制位数,单位:比特每秒(bit/s); 波特率(Baudrate),表示 每秒钟传输了多少个码元; 码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元; 注意:比特率=波特率 * 单个调制状态对应的二进制位数; 因为UART是按一个个二进制位发送数据的,所以在此情况下:比特率=波特率; 切记:数值相同,意义不同; 来源: CSDN 作者: 我是来写博客的 链接: https://blog.csdn.net/Linux_ARM9/article/details/104514385

51单片机 串口通信

ε祈祈猫儿з 提交于 2020-02-15 11:13:54
说明 平台:windows 10教育版64位 开发工具:普中科技 HC6800-ES V2.0 、keil uVision2 原理 哔哩哔哩视频教程: 串口通信原理 文档: 普中科技51单片机教程 步骤 1、确定定时器T1的工作方式(TMOD) 这里我们用的是T1定时器的工作方式2,自动重装初值 2、计算T1的初值(TH1,TH2) 计算公式: SMOD = 0波特率正常。SMOD = 1波特率增倍。T1溢出率就是T1定时器溢出一次的时间T的倒数,T1溢出率 = 1/T; 设X为初值,因为8位数据,所以,一次溢出时间 = 【256-X】*12/晶振频率,得出T1的溢出率再运用之前的公式,就可以算出定时器 初值。 这里给出一个常用的表格: 需要注意的是,普中这块开发板用的晶振是12Mhz的,所以选择值的时候要注意,另外因为用的是12Mhz的晶振,不是11.0592Mhz,计算出来的T1定时的初值将不是一个整数,这样进行通信时会产生累计误差。在实践过程中,笔者发现,在4800及以下波特率通信时,因为误差较小,所以产生的影响很小,在通信时没有发生过异常现象,但是高于4800时,则会产生明显误差,通信时传输的数据会严重失真,建议采用4800以下的波特率。 3、启动定时器T1 4、确定串行口工作方式(SCON) 之类可以有两种代码: 一是按位设置,而是整块设置,但其实本质都是按位设置。

C#学习--项目实战之数据储存

試著忘記壹切 提交于 2020-02-05 04:05:07
C#学习--项目实战之数据储存 写在前面 关于硬件储存数据的原理 关于数据的存储模式 写在结尾 写在前面 上一篇文章讲解了串口通信的一些专业衍生内容,然后涉及到了一个问题,就是我觉得初学者比较难理解的数据储存,为什么说难理解呢,因为各大语言的IDE越来越强大,我们日常写的代码多是控制上层的,对底层了解不够,还有一个原因就是,它涉及到一个抽象的概念储存空间,这个空间可以抽象到一个模拟的堆栈,也能实际到一张内存卡。 关于硬件储存数据的原理 在写项目的时候,我们经常会遇到这样的情况,C#要用到C++,python写的方法库,类库。既然要相互兼容,那么语言和语言之间一定要有一个交点,通过这个交点来实现兼容,这个交点就是计算机原理,这个太过复杂,记住一点即可,电脑上所有一切软件,归根结底是一串二进制数,是现实中电路上的一个电压脉冲(关于这个知识点同学们可以百度关键字,第一代到第四代计算机,这个还是蛮有意思的),既然知道了这个,那我们就知道了,不管是什么类型,最终内存里的就是一个二进制,有些同学可能会有质疑,那么上代码 int demo = 100 ; //在内存中m = 0110 0100(HEX) int result = demo >> 8 ; //>>将二进制向右移动八位,空位补零=》0000 0000 result => 0 一个简单的例子就帮我们证明了,二进制才是万物的源头

BC26接入电信云平台流程

故事扮演 提交于 2020-01-25 15:31:58
目录 前言 一、电信平台注册 二、BC26串口收发 三、注意事项 前言 最近一直在做NB模块对接电信云平台的项目,在此分享下NB模块接入云平台流程,这次介绍的是移远BC26芯片,电信的云平台也换到了他们的新平台。 一、电信平台注册 登录电信新平台后( https://www.ctwing.cn/page.html#/aepuserhelp ),先创建产品。产品分类以具体产品为准,产品选项中选择网络类型为NB-IOT,通信协议是LWM2M,其他选项参考图1-1.其中是否透传按实际需求为准。 图1-1 创建产品成功后,需要在该产品下定义属性列表以及服务列表。两者是平台对设备上报数据的解析,所以如果是设置为透传模式,则无法定义属性列表和服务列表。最后再进行添加设备,在云平台上设备以对应的IMEI码做区分。注意:必须要先在平台上添加好设备,相应的实体设备才能连接上。 二、BC26串口收发 在电信IOT注册好相应产品和设备后,再对BC26模组进行串口通信实现网络连接。BC26模组,通过设置PWRKEY引脚进行开机,开机后收到上电初始化信息如图2-1所示。即可以通过接收图中字符串来判断NB模块是否上电初始化成功。 图2-1 其串口通信过程参考网络文档和BC26的LWM2M手册,其手册中例子如图2-2所示,其云平台接收数据如图2-3所示。具体串口通信的收发内容如下测试记录所示: TX: AT /