Timer1.Enabled = True
MSComm1.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
18 个解决方案
#1
首先,你得有一个概念,RS232和RS485在硬件电路上就有区别。就程序而言,两者没有什么区别。要改,就得从硬件改起,换芯片。
#2
除了传输距离远,RS485 协议还支持一主多从。比较容易的改法:
1 从机改用 485 接口芯片。
2 主机端加一台 RS232 上行口的 RS485 集线器。这种集线器可以级联,便于扩展。
3 主机端程序要改:
与任意一台从机会话时,必须先以地址帧(9-bit 格式)发送地址,然后切换回数据帧发送一条命令,接收一条应答。
使用 VB 的 MSComm 控件比较麻烦的是,切换帧格式的时候,需要关闭串口,再重新打开,速度较慢。可以采用 API 或者用 VC++ 做动态库。
1 从机改用 485 接口芯片。
2 主机端加一台 RS232 上行口的 RS485 集线器。这种集线器可以级联,便于扩展。
3 主机端程序要改:
与任意一台从机会话时,必须先以地址帧(9-bit 格式)发送地址,然后切换回数据帧发送一条命令,接收一条应答。
使用 VB 的 MSComm 控件比较麻烦的是,切换帧格式的时候,需要关闭串口,再重新打开,速度较慢。可以采用 API 或者用 VC++ 做动态库。
#3
恩,我上网查了下485的用法,但是不清楚的是用VB如何控制485的发和收~难道是用高低电平?我能不能用flag=0或者1来控制呢?
#4
这是驱动程序该做的事情,不用你操心。
#5
在232口上装个485转换器就完事了,也就几十块钱,
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
#6
就是DSP要控制的事?不需要我上位机做什么吗?
#7
不行的,232是全双工,485是半双工~~要是那么简单我就开心死了。。。
#8
一般,如果你的上下位机使用应答式通信,那么可以直接将232转485,如果不是应答式,收发如果有可能同时进行,则不能转换(可转为422进行通信)
方法:假设,你原来已经可以使用232进行通信,那么到电子城买两个232-485转换头,其232端直接接入上位机及其下位机,使用一485线两端分别连接到转换器的485端,即可,软件无须进行任何更改
方法:假设,你原来已经可以使用232进行通信,那么到电子城买两个232-485转换头,其232端直接接入上位机及其下位机,使用一485线两端分别连接到转换器的485端,即可,软件无须进行任何更改
#9
为什么不行,你两台电脑一直在同时交换数据?
#10
我以前做的是应答试,用的是232转485的,挺好的
#11
问题不在全双工还是半双工。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
#12
问题不在全双工还是半双工。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
#13
在232口上装个485转换器就完事了,也就几十块钱,
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
不行的,232是全双工,485是半双工~~要是那么简单我就开心死了。。。
为什么不行,你两台电脑一直在同时交换数据?
#14
一般,如果你的上下位机使用应答式通信,那么可以直接将232转485,如果不是应答式,收发如果有可能同时进行,则不能转换(可转为422进行通信)
方法:假设,你原来已经可以使用232进行通信,那么到电子城买两个232-485转换头,其232端直接接入上位机及其下位机,使用一485线两端分别连接到转换器的485端,即可,软件无须进行任何更改
#15
只接收的话没什么问题的
#16
问题不在全双工还是半双工。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
大姐你这个说法刚好是反的,问题的关键是在于工作于双工还是半双工,如果是工作于半双工还是双工,那么无论,是单从机还是多从机,都可以转换为485
如果是工作于双工模式,那么只能是使用232,并且,无法使用多从机
#17
只接收的话没什么问题的
#18
不是只接收,我还要用上位机给DSP设置温度的,所以还是有发送的
只接收的话没什么问题的
半双工并不是单向发送数据或接收数据,而是,有收有发,只是收发不会在同一瞬间发生;比如两个人对话,你一句,我一句,两个人不会同时说,一般,总是要等到对方说完你再说,收和发在时间上错开,这就是半双工。
但是如果你是控制视频装置,并通过串口接收视频数据(假设的操作,实际可能很难实现,因为串口标准的速度太慢),视频数据连续不断的传人串口,控制命令随时发送给装置,在任意的瞬间,允许双向数据流,这就是双工
#1
首先,你得有一个概念,RS232和RS485在硬件电路上就有区别。就程序而言,两者没有什么区别。要改,就得从硬件改起,换芯片。
#2
除了传输距离远,RS485 协议还支持一主多从。比较容易的改法:
1 从机改用 485 接口芯片。
2 主机端加一台 RS232 上行口的 RS485 集线器。这种集线器可以级联,便于扩展。
3 主机端程序要改:
与任意一台从机会话时,必须先以地址帧(9-bit 格式)发送地址,然后切换回数据帧发送一条命令,接收一条应答。
使用 VB 的 MSComm 控件比较麻烦的是,切换帧格式的时候,需要关闭串口,再重新打开,速度较慢。可以采用 API 或者用 VC++ 做动态库。
1 从机改用 485 接口芯片。
2 主机端加一台 RS232 上行口的 RS485 集线器。这种集线器可以级联,便于扩展。
3 主机端程序要改:
与任意一台从机会话时,必须先以地址帧(9-bit 格式)发送地址,然后切换回数据帧发送一条命令,接收一条应答。
使用 VB 的 MSComm 控件比较麻烦的是,切换帧格式的时候,需要关闭串口,再重新打开,速度较慢。可以采用 API 或者用 VC++ 做动态库。
#3
恩,我上网查了下485的用法,但是不清楚的是用VB如何控制485的发和收~难道是用高低电平?我能不能用flag=0或者1来控制呢?
#4
恩,我上网查了下485的用法,但是不清楚的是用VB如何控制485的发和收~难道是用高低电平?我能不能用flag=0或者1来控制呢?
这是驱动程序该做的事情,不用你操心。
#5
在232口上装个485转换器就完事了,也就几十块钱,
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
#6
引用 3 楼 ddw111 的回复:恩,我上网查了下485的用法,但是不清楚的是用VB如何控制485的发和收~难道是用高低电平?我能不能用flag=0或者1来控制呢?
这是驱动程序该做的事情,不用你操心。
就是DSP要控制的事?不需要我上位机做什么吗?
#7
在232口上装个485转换器就完事了,也就几十块钱,
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
不行的,232是全双工,485是半双工~~要是那么简单我就开心死了。。。
#8
一般,如果你的上下位机使用应答式通信,那么可以直接将232转485,如果不是应答式,收发如果有可能同时进行,则不能转换(可转为422进行通信)
方法:假设,你原来已经可以使用232进行通信,那么到电子城买两个232-485转换头,其232端直接接入上位机及其下位机,使用一485线两端分别连接到转换器的485端,即可,软件无须进行任何更改
方法:假设,你原来已经可以使用232进行通信,那么到电子城买两个232-485转换头,其232端直接接入上位机及其下位机,使用一485线两端分别连接到转换器的485端,即可,软件无须进行任何更改
#9
在232口上装个485转换器就完事了,也就几十块钱,
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
不行的,232是全双工,485是半双工~~要是那么简单我就开心死了。。。
为什么不行,你两台电脑一直在同时交换数据?
#10
我以前做的是应答试,用的是232转485的,挺好的
#11
问题不在全双工还是半双工。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
#12
问题不在全双工还是半双工。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
#13
在232口上装个485转换器就完事了,也就几十块钱,
貌似以前写的时候485发送的时候,接收区缓存被写入了送的数据,不过那时候不懂,没确定485口好坏,后来干脆用232转485的办法来处理了
不行的,232是全双工,485是半双工~~要是那么简单我就开心死了。。。
为什么不行,你两台电脑一直在同时交换数据?
#14
一般,如果你的上下位机使用应答式通信,那么可以直接将232转485,如果不是应答式,收发如果有可能同时进行,则不能转换(可转为422进行通信)
方法:假设,你原来已经可以使用232进行通信,那么到电子城买两个232-485转换头,其232端直接接入上位机及其下位机,使用一485线两端分别连接到转换器的485端,即可,软件无须进行任何更改
#15
只接收的话没什么问题的
#16
问题不在全双工还是半双工。
重要的是你的线路上是多从机还是单从机。
如果你的通讯线上是单一从机,那就很简单,你的主机只要使用数据帧发送命令,接收应答。格式与 RS232 相同,你加一个 RS232-485 转换器就可以了。
如果必须多从机,但是可以分开连线。那么,从机程序不用改,加 RS485 Hub。主机程序需要分地址和数据帧。地址帧用来使 Hub 分支数据信号。
如果多从机并联在同一线路中,则从机的程序也要改,要获取广播的地址帧,来判断是否应答。这种情况可以不用 Hub,用转接芯片或转接线即可。
如果你原来不是主从应答协议,两段都可以主动发送,就需要使用两路 RS485。也就是两端都要使用 2 个 RS232 接口,分别用于发送和接收。
大姐你这个说法刚好是反的,问题的关键是在于工作于双工还是半双工,如果是工作于半双工还是双工,那么无论,是单从机还是多从机,都可以转换为485
如果是工作于双工模式,那么只能是使用232,并且,无法使用多从机
#17
只接收的话没什么问题的
#18
不是只接收,我还要用上位机给DSP设置温度的,所以还是有发送的
只接收的话没什么问题的
半双工并不是单向发送数据或接收数据,而是,有收有发,只是收发不会在同一瞬间发生;比如两个人对话,你一句,我一句,两个人不会同时说,一般,总是要等到对方说完你再说,收和发在时间上错开,这就是半双工。
但是如果你是控制视频装置,并通过串口接收视频数据(假设的操作,实际可能很难实现,因为串口标准的速度太慢),视频数据连续不断的传人串口,控制命令随时发送给装置,在任意的瞬间,允许双向数据流,这就是双工