2019-07-17 18:16发布
fantek 发表于 2013-12-29 18:55 把Txd和Rxd短接,发送数据后再读取。判断发送和接收的数据或长度是否相等。如果相等,再发送下一条命令。如 ...
最多设置5个标签!
我的试验的程序框图如下:
目的就是把DTR置低后,发送数据,然后把DTR置高,接收数据。(这是根据下位机要求而做)
我能在结果中看到我写的数据与write后返回的长度是一致的,说明当返回wirte时,全部数据已经写到发送缓冲区去了,可当程序跑到DTR置高时,在示波器上测得Txd还一直在发送数据(此时在示波器上检测DTR已经是高电平了,而因为此时DTR已是高电平,所以下位机也收不到数据了),所以,这就与我的出发点不一致了,它们也不同步。
PS:我的下位机是半双工的485,当它检测到DTR是低电平时,它就会接收数据,然后根据数据命令返回数据给我,当它返回数据给我时,DTR电平必须为高(也就是我必须把DTR置高,我才能收到返回的数据,否则我收不到数据,简单说就是相当于下位机是发了数据,但因DTR不等于高,所以数据发不出来,给丢掉了。我的下位机不会去设置DTR的任务状态,全靠我这方去设置)
不能用延时的方法,因为这时间点确实很难掌控,当下位机收到命令时会马上返回数据,而它返回的时候,DTR必须为高我才能收到。
一周热门 更多>