Serial port 模块未通过UART、TinyOS程序接收数据

Serial port 模块未通过UART、TinyOS程序接收数据,serial-port,uart,tinyos,nesc,Serial Port,Uart,Tinyos,Nesc,模块未通过UART接收数据,请参阅TinyOS的帮助 Postby Telosb»2014年7月15日星期二6:47 亲爱的各位: 我是tinyos编程新手。我与KMoteB合作的地点是: 我使用YETI2插件和TinyOS编译器 问题是,如果我通过串行接口通过printf将数据发送到计算机,我就能够接收发送的数据。另一方面,PC到Mote的通信不起作用。RX LED亮起,但数据,例如通过ubuntu发送的“u”不会触发接收事件 event message_t* UartReceive.

模块未通过UART接收数据,请参阅TinyOS的帮助

Postby Telosb»2014年7月15日星期二6:47

亲爱的各位:

我是tinyos编程新手。我与KMoteB合作的地点是:

我使用YETI2插件和TinyOS编译器

问题是,如果我通过串行接口通过printf将数据发送到计算机,我就能够接收发送的数据。另一方面,PC到Mote的通信不起作用。RX LED亮起,但数据,例如通过ubuntu发送的“u”不会触发接收事件

    event message_t* UartReceive.receive(message_t* bufPtr, void* payload, uint8_t len)
    {
        call Leds.led2On();
        printf("Receive\n");
        printfflush();
        return bufPtr;
    }
我正在尝试实现以下代码:


有人知道问题出在哪里吗?

如何将数据从PC发送到mote?根据您的描述,我假设您只是使用minicom应用程序发送原始字节。这种方法行不通。TinyOS将只接收包含页眉、有效负载和页脚的整个数据包。要发送这样的消息,您需要在PC端编写Java应用程序。请参阅本教程中的“远程PC通信”一章:

另一个问题是将接收接口与printf函数一起使用。上述教程说明,从PC发送到mote的数据包由mote确认。当然,他们也承认使用串行通信。这可能会导致这样的问题:TinyOS PrintfClient必须接收和处理printf数据,而java应用程序必须接收和处理确认。根据我的经验,如果在应用程序中使用printf,则不能使用串行通信堆栈,因为PrintfC模块拥有并使用它。当接收事件发生时,您可以将自定义数据包发送到PC,并通过Java应用程序进行处理