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

2019-07-17 18:16发布

如题,在labview 串口通讯中,write.vi返回成功并不代表数据已经发送完毕(write.vi 返回成功只是说明把数据写到数据缓冲区了,但没有真正发送完毕),有没有办法可以知道发送缓冲区中的数据已经发送完毕了?谢谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
utdhome
2019-07-18 03:14
fantek 发表于 2013-12-29 18:55
把Txd和Rxd短接,发送数据后再读取。判断发送和接收的数据或长度是否相等。如果相等,再发送下一条命令。如 ...

我的试验的程序框图如下:
DTR.JPG
目的就是把DTR置低后,发送数据,然后把DTR置高,接收数据。(这是根据下位机要求而做)
我能在结果中看到我写的数据与write后返回的长度是一致的,说明当返回wirte时,全部数据已经写到发送缓冲区去了,可当程序跑到DTR置高时,在示波器上测得Txd还一直在发送数据(此时在示波器上检测DTR已经是高电平了,而因为此时DTR已是高电平,所以下位机也收不到数据了),所以,这就与我的出发点不一致了,它们也不同步。
PS:我的下位机是半双工的485,当它检测到DTR是低电平时,它就会接收数据,然后根据数据命令返回数据给我,当它返回数据给我时,DTR电平必须为高(也就是我必须把DTR置高,我才能收到返回的数据,否则我收不到数据,简单说就是相当于下位机是发了数据,但因DTR不等于高,所以数据发不出来,给丢掉了。我的下位机不会去设置DTR的任务状态,全靠我这方去设置)

不能用延时的方法,因为这时间点确实很难掌控,当下位机收到命令时会马上返回数据,而它返回的时候,DTR必须为高我才能收到。

一周热门 更多>