RS485与RS232编程区别

RS485与RS232的区别:

  • RS232是全双工通信的,在数据进行发送的时候,也可以进行接收数据,只是你可能你会觉得不清楚,比如在应用程序,你去操作串口写的同时,你并没有感觉到能读到串口的数据,因为CPU如果是单核的,CPU只有一个大脑,只有一个人在进行工作,所以你会感觉到你去操作串口写的时候,你读取不到串口来的数据,因为指令是一条一条运行的,只有一个人在工作。但是RS232又是全双工的,在数据发的时候,是可以接收数据的,这一点可以体现在硬件上,如果你在应用程序中感觉不出来的话,在应用程序中你去操作串口进行发数据,同时这个时刻对方也像你进行发数据了,你虽然在同一时刻在应用程序中读取不到这个数据,但是在硬件中,对方发来的数据已经被读取到了硬件的串口的读缓存区中。当应用程序串口发操作结束后,去读取串口数据的时候,就会从硬件串口的缓存区中将你发的同时对方发过来的数据,与对方后续发过来的数据,读取到。这就是RS232.全双工的体现,在应用程序中与硬件中的体现。
  • RS485是半双工通信的,在数据进行发送的时候,是读取不了数据的,在数据进行读数据的时候,是发送不了数据的,这一点体现在软件上,就是当你发送数据的时候,在你发送数据之前要将表示RS485能发数据的那个引脚给拉高或拉低,来切换状态到发数据状态,因为RS485是半双工,所以读状态和发状态要分清,所以有了表示RS485发送与接收状态的引脚,用拉高或拉低表示。当你发送数据之前,给这个引脚拉高或拉低,然后你调用写函数去进行将数据发串口,掉用完这个函数后,你要记得去延时一段时间后,在去将引脚拉高或拉低来切换成RS485读状态,因为如果你的数据还没有全部通过串口发送完毕,你就在硬件的写缓存区中,数据还在发送呢,但是在应用程序中,你的写函数已经返回了,但你却将RS485引脚切换成读状态了,这时在硬件层,发现485为读状态,就会切换成485读模式,而你的数据在硬件缓存区中即使没有发送完毕也发送不了了,因为硬件上已经给堵住了这条路。所以当你调用完串口写函数时,一定要延时一段时间后在去将引脚拉高或拉低来切换到485读状态,这个延时的时间,是根据你要发送多少数据,也就是数据的长度和串口的波特率与这个数据在介质中传输的时候是否包含校验位与停止位,因为如果包含了停止位于校验位,你的数据长度要将上这两位,因为你在发送的时候发送的只是数据区,长度是你发送的数据区的长度,但是在介质中传输的时候,还有可能有其他位的存在,你要考虑进去。之后根据发送的实际长度与当前串口的波特率,来算出这个要延时的时间。再每次调用完写串口函数后都要去延时这个时间后,在去将引脚拉高或拉低来切换到读状态。防止数据没有发送,你就不让他发送了,同时这个延时的时间也不能随意的给长,因为可能你在延时了那么长时间的间隔中,对方已经将数据发送给你了,但是你还是为发状态,并读不了他此时给你发过来的数据,这也就是为什么,这个延时的时间要拿发送的实际数据包括是否考虑停止位校验位,与波特率去进行计算的缘由了。
  • 总之:在工程上,如果一个串口,是RS232/RS485共用的话,你在程序上要按照RS485的方式去进行操作,因为RS485的程序跑在RS232上市没有问题的,但是RS232的方式操作串口的程序,用在RS485的情况下是不合适的。
时间: 2024-08-11 01:35:11

RS485与RS232编程区别的相关文章

【转】RS-232,RS-485,UART联系与区别

原文:http://www.elecfans.com/emb/jiekou/20160608422297.html Note:需要说明一下,很多人经常把RS-232.RS-422.RS-485 误称为通讯协议,这是很不应该的,其实它们仅是关于UART通讯的一个机械和电气接口标准(顶多是网络协议中的物理层面). 导读 串口通讯是电子工程师面对的最基本的一个通讯方式,RS-232是其中最简单的一种.然而,很多初学者往往搞不清楚UART和RS-232.RS-422.RS-485的联系和区别,本文将谈谈

IIC,RS485,RS232各种协议手册更新中

 RS485使用手册与指南.pdf  RS232协议标准详解.pdf IIC通信协议.pdf 链接:http://pan.baidu.com/s/1ccBtmA 密码:mwj6 IIC,RS485,RS232各种协议手册下载....更新中

UART和RS232、RS485的基础知识

博客目录: 1.UART和RS232.RS485的关系: 2.RS232和RS485的区别和引脚介绍 3.参考文献 正文如下 一.UART和RS232.RS485的关系: 通讯问题,和交通是一样的.串口通信,我们这里可以用公交来类比.        公交运行可以简单分成两个部分: 1.车站 2.公路 其中车站决定了车上装什么(人),怎么发送(班次)等. 当汽车跑在路上,就要遵守公路交通的规则,过桥有过桥的规则,高速有高速的规则,和车站没有关系了. 回到串口通讯,其实,UART就相当于车站,而RS

串口、COM口、TTL、RS-232、RS-485区别详解

1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号).    2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突.    3.PL2303.CP2102芯片是 USB 转 TTL串口 的芯片,用USB来扩展串口(TTL电平).    4.MAX232芯片是 TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL.    5.TTL标准是低电平

TTL、RS232、RS485、串口

Point: 1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突. 3.PL2303.CP2102芯片是 USB 转 TTL串口 的芯片,用USB来扩展串口(TTL电平). 4.MAX232芯片是 TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL. 5.TTL标准是低电平为0,高电

【转】win32,win64编程永恒;语言编程需要注意的64位和32机器的区别

原文网址:http://www.cnblogs.com/kex1n/archive/2010/10/06/1844737.html 一.数据类型特别是int相关的类型在不同位数机器的平台下长度不同.C99标准并不规定具体数据类型的长度大小,只规定级别.作下比较: 16位平台 char         1个字节8位 short        2个字节16位 int            2个字节16位 long         4个字节32位 指针         2个字节 32位平台 char 

RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)

前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview This article explains the general concepts of the serial communication protocols RS-232, RS-422, and RS-485, including basic concepts like baud rate,

TCP与UDP在socket编程中的区别 (网络收集转载)

http://blog.chinaunix.net/uid-26421509-id-3814684.html 一.TCP与UDP的区别 基于连接与无连接  对系统资源的要求(TCP较多,UDP少)  UDP程序结构较简单  流模式与数据报模式  TCP保证数据正确性,UDP可能丢包  TCP保证数据顺序,UDP不保证  部分满足以下几点要求时,应该采用UDP 面向数据报方式 网络数据大多为短消息  拥有大量Client  对数据安全性无特殊要求  网络负担非常重,但对响应速度要求高  具体编程时

TCP与UDP在socket编程中的区别

一.TCP与UDP的区别 基于连接与无连接  对系统资源的要求(TCP较多,UDP少)  UDP程序结构较简单  流模式与数据报模式  TCP保证数据正确性,UDP可能丢包  TCP保证数据顺序,UDP不保证  部分满足以下几点要求时,应该采用UDP 面向数据报方式 网络数据大多为短消息  拥有大量Client  对数据安全性无特殊要求  网络负担非常重,但对响应速度要求高  具体编程时的区别 socket()的参数不同  UDP Server不需要调用listen和accept  UDP收发数