This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

有关SerialApp例程的问题

TI工程师,

     你好!

    我的网络只有两个设备:协调器和路由器各一个,在调试SerialApp例程时发现一个问题,请帮忙解答:

    1. 刚开始协调器和路由器进行串口透传都正常,但是关闭路由器电源,协调器再发送数据,这时协调器是不能收到路由器的ACK的,然后再将路由器上电,确认路由器已经重新入网(见下图),但是协调器这个时候发送数据,路由器却收不到。

   2. 同样的情况,如果关闭路由器电源后,协调器不发送数据,等到路由器上电后再发送,这时路由器又可以收到数据。

我的疑问是出现上面第1种情况是什么原因造成的,是协议栈本身的原因还是SerialApp应用程序的问题?有没有办法将第1种情况改成和第2种情况一样,路由器上电就都能收到数据。我的协议栈版本是2.3.0-1.4.0,抓包结果如下,01 CC 00 0A是协调器发送的数据。

  • 你好,能把抓包的数据发上来,非常好,但是一定要把抓包文件另外为,然后附件发,否则我们没法用软件打开做解析。

    第一种情况,在路由上电以后,等15s后,协调器发送数据是否可以让路由收到?

    谢谢!

  • VV:

        你好!

        很抱歉因为工作原因这么久才给你回复!

        对于第1种情况,我已经找到原因。这个问题与协议找无关,是SerialApp应用程序的问题,具体原因是因为接收方设备断电,无法发送应答帧给发送方。发送方未收到应答帧,则不能执行SerialApp_TxLen = 0;指令,如果SerialApp_TxLen一直为非零状态,则发送方不再执行SerialApp_Send()函数,不再从串口读取新数据,更不会发送无线数据。

        实际测试接收方上电以后,等15s后,仍然不能收到数据。我现在的问题是:

        1. 根据上面所述,将SerialApp_TxLen清零程序就可以恢复发送了。我想有两种方法:发送方检测到接收方长时间无回应时SerialApp_TxLen清零;或者发送方一直发送上一帧数据直到接收方上电后发送应答帧给发送方将SerialApp_TxLen清零,这两种方法哪种好些?具体怎么实现啊?

        2. 根据抓包结果,接收方(协调器)没有上电时,我点一次串口发送,发送方(路由器)为什么每次会连续发送8次数据啊?看了程序没看见哪里有发送次数的。

        具体抓包结果如附件,其中0123456789abcde 是我发送的数据。

        请帮忙解答,盼复!

    关闭协调器后路由器发送数据,再打开协调器.psd
  • 这是正常通讯时的抓包图

    串口透传正常通讯时.psd