Labview如何判断RS232发送缓冲区中的数据已经发送完毕?

2019-07-17 18:16发布

如题,在labview 串口通讯中,write.vi返回成功并不代表数据已经发送完毕(write.vi 返回成功只是说明把数据写到数据缓冲区了,但没有真正发送完毕),有没有办法可以知道发送缓冲区中的数据已经发送完毕了?谢谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
utdhome
1楼-- · 2019-07-18 08:32
fantek 发表于 2013-12-29 23:37
在串口配置下的流控制模式设置为DTR/DSR,在VISA Write函数之前加延时,VISA Write设置为同步模式。如果还 ...

谢谢版主,我用你的方法去试,可连数据都发不出去,有错误发生。我现在给你说说我所做的:
假如我程序框图如下: 程序框图1 (write的I/O设为同步,read的也设为同步)

前面版: 2013-12-30 08.29.301.JPG

在示波器上看到的是: 示波器概图

放大它看是: 2013-12-30 08.28.25.jpg

从示波器上看到,1线(即黄 {MOD}线)是DTR的检测线,2线(即天蓝 {MOD}线)是Txd的检测线,它们并不同步,在DTR线变为高电平时,Txd线还一直发送数据。

如果把流控制模式设置为DTR/DSR,也把write的I/O设为同步,如下图
2013-12-30 08.30.171.JPG

则会出现错误:
2013-12-30 08.30.501.JPG


以上接示波器的方式都是:RS232的第四脚DTR接示波器的第1线CH1,RS232的第三脚Txd接示波器的CH2,它们的地共接RS232的第五脚(共地)。
utdhome
2楼-- · 2019-07-18 12:19
各位大侠,有人可以帮忙再看看是什么原因吗?有什么办法解决这问题?
fantek
3楼-- · 2019-07-18 14:57
本帖最后由 fantek 于 2013-12-31 15:03 编辑
utdhome 发表于 2013-12-30 12:14
各位大侠,有人可以帮忙再看看是什么原因吗?有什么办法解决这问题? ...

1.串口硬件流控握手过程
   串口输出信号共有Txd,DTR,RTS, 下面资料中的图3是硬件握手示意图。
Understanding Power Requirements in RS-232 Applications.pdf (325.53 KB, 下载次数: 78) 从图3中可以看出RTS的不同电平状态,代表串口处于接收或发送的过程,文中也有说明。也就是说用RTS线作为与下位机收发控件线比较合式。
   1.1.RTS-CTS流控接线方式
    串口硬件流控 RTS-CTS.png
   1.2.DTR-DSR DCD流控接线方式
    串口硬件流控 DTR-DSR DCD.png
    1.3.串口回环模式接线方式
    串口引脚接线 Loopback Mode.png
2.通过RTS线作为收发控制的串口通信实验
  2.1上位机串口的接线方式
  (1)RTS与CTS短接,同时RTS接到下位机。
  (2)DTR-与DSR,DCD短接,同时DTR接到下位机。
   问题是目前上位机如何通过RS485与下位机连接的,也就是DTR如何和下位机接线的。Txd和Rxd通过RS232到RS485转换器以半双式方式与下位机连接,那么DTR是用另一个转换器与下位机连接吗?
    调试时,(1)和(2)可以同时或分别连接。
   2.2上位机软件串口配置及程序设计
    (1)串口配置为RTS/CTS硬件流控模式, 异步或同步读写收发。发送不同长度的字符串(0x55),用示波器观察RTS与Txd的同步关系,如果有滞后长度是否是固定的还是变化的。
    (2)串口配置为DTR/DSR硬件流控模式,异步或同步读写收发。发送不同长度的字符串(0x55),用示波器观察DTR与Txd的同步关系,如果有滞后长度是否是固定的还是变化的。
    (3)程序中需要置位或复位RTS、DTR状态。如果RTS、DTR与Txd的同步滞后时间几乎是固定的,这个时间可以用示波器测量出来。在写入串口之后和DTR-RTS置高之前在程序中加入延时,不断调整,达到完全同步状态。

这种用法比较新颖,实验比较繁琐,希望楼主成功!





utdhome
4楼-- · 2019-07-18 17:52
fantek 发表于 2013-12-31 14:38
1.串口硬件流控握手过程
   串口输出信号共有Txd,DTR,RTS, 下面资料中的图3是硬件握手示意图。
从图3中可 ...

非常感谢fantek的帮助,我会参照你说的方法去试试,
云翎流苏
5楼-- · 2019-07-18 18:27
 精彩回答 2  元偷偷看……
天然花生豆
6楼-- · 2019-07-18 23:23
fantek 发表于 2013-12-29 15:37
在串口配置下的流控制模式设置为DTR/DSR,在VISA Write函数之前加延时,VISA Write设置为同步模式。如果还不行,能否发一下你的端口连线图。

好好爱好啊哈奥好啊好啊好懊悔

一周热门 更多>