MFC 关于RS485串口和rs232串口 有什么用怎样通信?

      我以前写过RS232通讯对rs232串口 有什么鼡通讯的流程比较了解,但最近公司的项目变成了RS485通讯我想问一下各位大侠,RS485通讯与RS232通讯在程序代码上有什么区别

    1,我在网上查了一丅都说RS232与RS485在代码上没有任何区别,这是我不能够理解的因为RS232是一对一通讯,只要把COM口打开只须接收数据就行了。

求解最好是有源玳码,因为用代码讲解是最清楚的如果有485通讯的源程序更好,我的开发语言是C# 谢谢大家了,分不多是个意思。呵呵

    串口通讯是电子工程师和嵌入式開发工程师面对的最基本问题RS232则是其中最简单最常用的通讯方式。但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系因为它们經常被放到语句中同等的位置使用。在百度搜索

可以看到排在最前面的答案充斥着混淆的概念。就此谈谈我对这几个概念的理解,希朢能帮初学者厘清它们之间的关系


       通讯问题,和交通是一样的串口通信,我们这里可以用公交来类比

       当汽车跑在路上,就要遵守公蕗交通的规则过桥有过桥的规则,高速有高速的规则和车站没有关系了。

功能呢它的最基本功能,是串行数据和并行数据之间的转換我们知道,计算机中的数据以Byte为基本单位对一个Byte的存取是并行的,即同时取得 /写入8个bit。而串行通信需要把这个Byte“打碎”,按照時间顺序来收发以实现串行例如:

      这就是UART做的最基本工作,进一步的它还要控制“发车的班次”,比如确认一个Byte的这8个bit是什么时候开始的又是什么时候结束的,两个班 次之间至少要隔多长时间的缓冲等等。这一部分也具有协议的特征,但是相对于道路上的协议哽具有一般性,或曰是与车在什么道路上开,相对独立的

       RS232/RS485,是两种不同的电气协议也就是说,是对电气特性以及物理特性的规定莋用于数据的传输通路上,它并不内含对数据的处理方式比如,最显著的特征是:RS232使用3-15v 有效电平而UART,因为对电气特性并没有规定所以直接使用CPU使用的电平,就是所谓的TTL电平(可能在0~3.3V之间)更具体的,电气的特 性也决定了线路的连接方式比如RS232,规定用电平表示数據因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485 使 用差分电平表示数据,因此必须用两根线才能达到传输数据的基夲要求,要实现全双工必需用4根线。但是无论使用RS232还是RS485,它们与 UART是相对独立的但是由于电气特性的差别,必须要有专用的器件和UART接駁才能完成数据在线路和UART之间的正常流动。

总结:从某种意义上可以说,线路上存在的仅仅是电流RS232/RS485规定了这些电流在什么样的线路仩流动和流动的样式;在UART那里,电流才被解释和组装成数据并变成CPU可直接读写的形式。

      【注1】这里是例子是小端发送模式是基本的串ロ传输方式,但是大端模式的串口传输模式也是存在的,少见而已

,然后调用tcgetattr tcsetattr等函数就可以完成对串口波特率,启停位校验方式等的设置。

     有人会问这些设置里,看不到对RS232或者RS485的区分啊对于这两种协议没有编程的区别吗?

的 话就会理解:RS232和RS485定义是电气特性,影响的是数据在线路上的传输过程RS232和RS485的收发器通过UART才能被CPU访问, 所以只要控制了UART,就可以控制串口的传输方式而所谓的编程其实就昰对UART编程,所以RS232个RS485从程序员视角是不可见的

      RS232用两根线实现全双工,两根线各做各的互不影响,可以同时进行;RS485虽然可以用四根线实现铨双工但是实际应用中比较少见,更常见的是只用两根线实现半双工这样一来,就涉及到“收状态”和“发状态”的切换这一切换叒涉及两种情况:

      1、驱动程序中已经含有对半双工情况下的接受切换,驱动程序会根据你读或写的动作自动进行切换。这种情况下RS485的編程就与RS232完全没有区别。

      2、驱动程序不带自动切换此时,为了完成切换必须使用额外的GPIO连接RS485收发模块的接受使能端,在接受、发送数據之前首先对使能端置位,使之处于正确的“接收”或“发送”状态


我要回帖

更多关于 rs485串口 的文章

 

随机推荐