用VB作为上位机,本来是用RS232实现串口通信的,但是由于RS232的通信距离短,现在希望改成485的~我上网查了下资料,知道232是全双工工作,485是半双工工作的,但是对于通信协议还是有点迷茫~现在我将我232的通信协议发上来,希望大神们帮我改一下适合于485的~而且我想知道如果485是半双工的,那么怎么控制他来开和关呢~请指教。。谢谢了!!原程序如下
 Timer1.Enabled = TrueMSComm1.InBufferSize = 2
    
    MSComm1.InBufferCount = 0
    
    MSComm1.OutBufferCount = 0
    
    MSComm1.InputMode = comInputModeBinary 
    MSComm1.CommPort = 3
    MSComm1.Settings = "9600,N,8,1"
    
    MSComm1.RThreshold = 24
    
    MSComm1.InputLen = 24 
    
    MSComm1.OutBufferSize = 1
    
    Timer1.Interval = 20

解决方案 »

  1.   

    首先,你得有一个概念,RS232和RS485在硬件电路上就有区别。就程序而言,两者没有什么区别。要改,就得从硬件改起,换芯片。
      

  2.   

    除了传输距离远,RS485 协议还支持一主多从。比较容易的改法:1 从机改用 485 接口芯片。2 主机端加一台 RS232 上行口的 RS485 集线器。这种集线器可以级联,便于扩展。3 主机端程序要改:  与任意一台从机会话时,必须先以地址帧(9-bit 格式)发送地址,然后切换回数据帧发送一条命令,接收一条应答。  使用 VB 的 MSComm 控件比较麻烦的是,切换帧格式的时候,需要关闭串口,再重新打开,速度较慢。可以采用 API 或者用 VC++ 做动态库。
      

  3.   

    恩,我上网查了下485的用法,但是不清楚的是用VB如何控制485的发和收~难道是用高低电平?我能不能用flag=0或者1来控制呢?
      

  4.   

    就是DSP要控制的事?不需要我上位机做什么吗?
      

  5.   

    问题不在全双工还是半双工。重要的是你的线路上是多从机还是单从机。如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
      

  6.   

    不行的,232是全双工,485是半双工~~要是那么简单我就开心死了
    为什么不行,你两台电脑一直在同时交换数据?不是一直,就是我先用VB的上位机设置一个温度值发给DSP,然后DSP就开始给我传送实时的温度值,期间需要设置缓冲什么的,我就是怕在DSP给我传送数据的时候我设置缓冲什么的会有冲突!
      

  7.   

    不是只接收,我还要用上位机给DSP设置温度的,所以还是有发送的