【问题标题】:How do I have a two way communication in sensor node using tinyOS?如何使用 tinyOS 在传感器节点中进行双向通信?
【发布时间】:2016-10-03 16:29:55
【问题描述】:

使用 AMSend.send(AM_BROADCAST_ADDR, msg, len) 可以通过无线电发送数据包。在 receive.receive 中,我可以检查我从哪个节点收到消息。但是如何将消息发送回我收到消息的同一节点。我有节点 ID,如何获取接收数据的网络地址并将其发回给它。不仅仅是确认数据包。收到数据后,我需要发送数据。任何帮助将不胜感激。

【问题讨论】:

    标签: tinyos nesc


    【解决方案1】:

    AMSend.send的签名是:

    command error_t send(am_addr_t addr, message_t* msg, uint8_t len);
    

    addr 被记录为发送数据包的地址AM_BROADCAST_ADDR 是一个常量,表示广播地址:发送到该地址的数据包被无线电范围内的所有节点接收。一旦您收到一个数据包并获得了发件人的 ID(通过AMPacket.source),提供为addrAMSend.send。它具有相同的类型am_addr_t,基本上是一个整数(8 位或 16 位)。

    请注意,通常在编译或编程节点期间分配 id(请参阅this presentation,幻灯片 61),并且通常默认情况下所有节点都具有相同的 id,除非您明确分配。

    【讨论】:

    • 如果我在这个 sn-p 中错了,请纠正我。这是你的意思吗? uses{ interface AMSend; interface SplitControl as AMControl; interface Packet; interface AMPacket; }Receive.receive(msg_t* msg, void *payload, uint8_t len) {msg_t* data = (msg_t*)payload; am_addr_t addr = call AMPacket.source(msg); send_message(addr); //rest of the code } void send_message(addr){ //send msg to source now using AMSend.send() }
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多