我有两个节点。地址 40 正在向地址 10 传输帧。当我使用 TxFrameNtf 时,我得到传输成功。但是节点 10 正在从 trace.nam 中删除它似乎的帧。我不知道为什么。以下是我为每个节点使用的代理:节点 40:
import org.arl.fjage.Message
import org.arl.unet.*
import org.arl.fjage.*
import org.arl.unet.PDU
import java.util.*
import org.arl.unet.phy.*
import static org.arl.unet.utils.MathUtils.*
class VBF_Agent extends UnetAgent {
private AgentID phy
final static int cluster_protocol = Protocol.USER
private AgentID node
public int addr
private final static PDU format = PDU.withFormat
{
uint8('source')
uint16('data')
}
void startup() {
phy = agentForService Services.PHYSICAL //to communicate between two nodes
subscribe topic(phy)
def node = agentForService(Services.NODE_INFO)
addr = node.Address
phy[1].powerLevel = 0.dB;
def datapacket = format.encode(source: addr, data: 51)
if(addr==40)
{
println "Sending data from source"
phy << new TxFrameReq(to: Address.BROADCAST, protocol: cluster_protocol, data: datapacket)
}
}
void processMessage(Message msg) {
}
节点 10:
import org.arl.fjage.Message
import org.arl.unet.*
import org.arl.fjage.*
import org.arl.unet.PDU
import java.util.*
import org.arl.unet.phy.*
import static org.arl.unet.utils.MathUtils.*
class VBF_hop extends UnetAgent {
private AgentID phy
final static int cluster_protocol = Protocol.USER
private AgentID node
public int addr
void startup() {
phy = agentForService Services.PHYSICAL //to communicate between two nodes
subscribe topic(phy)
def node = agentForService(Services.NODE_INFO)
addr = node.Address
phy[1].powerLevel = 0.dB
}
void processMessage(Message msg) {
if (msg instanceof RxFrameNtf && msg.protocol == cluster_protocol ) //notfication recieved
{
println "${msg.data} at node ${addr}"
}
}
}
我没有在屏幕上看到已收到数据的消息,并且 trace.nam 显示未检测到数据包。如您所见,我已将传输功率设置为无穷大。
我使用 DatagramReq 而不是 TxFrameReq,然后数据由节点 10 接收。问题是因为语法使用不当吗?我对 UnetStack 和 groovy 很陌生,所以我可能错过了这些问题。先感谢您。