关于RemoTI协议栈里面SimpleApp例程内点对点通信的问题,这里记录一下解决方法。SimpleApp内包含2个工程,一个名为controller,即控制节点,另一个名为target,即目标节点。在基本的测试中,controller可以发信息给target,但是,若想target发信息给controller,按照里面API的用法在target中添加相应的发送函数以及在controller中添加接收函数,却发现controller并不能接受信息。经过调试发现,target的确已经把信息发送出去了,问题出在controller。
解决办法:
如上图的函数里,需要修改一下RTI_BUILD_NODE_CAPABILITIES的值,这里面可能涉及到了较底层的函数实现,需要把它的第一个参数改为1,正如注释所说,0代表的是controller,1代表的是target。
然后修改编译选项如下图,
将标志位FEATURE_CONTROLLER_ONLY去掉,我这里是直接在前面加一个x相当于去掉了。这时候编译应该会link错误,说一些函数未定义,其实这是引用库的问题,这里面我纠结了相当长的时间,主要是没有注意到它有多个可以引用的库。
最后也是最关键的一步,修改引用的库,如下图:
这里面竟然有4个库……原来选择的是rcnctrl-CC2530-banked.lib,把它去掉并添加rcnsuper-CC2530-banked.lib,这样就激动地发现controller终于可以收到target的信息了……
有时候陷入了死胡同,即使是小问题,花很长时间还是有可能走不出来的。