Easylink api 无线发送和接收的问题
在cc1310的例程中,同时创建两个任务,一个利用EasyLink_transmit() 不断的发送数据,一个利用EasyLink_receive()接收数据,两个都在一个while(1)循环里面,但是 EasyLink_receive()老是返回busy的error_code,请问各位怎么解决这个问题?
task在while1里?
嗯,我创建了两个任务,A任务中,不断地在while中执行发送;另一个B任务设想是等待接收node上报的数据,调用receive()函数,但是发送和接收一旦同时调用,发送函数就返回busy,如果B任务不调用接收函数,让其周期性地点灯,是可以的。想借鉴参考concentratot里no_blocking receive,现在实现不了,去掉发送的任务就可以,是信号互斥的问题吗?怎么解决这个问题?刚接触不熟悉,还望高手不吝赐教!
你的接收用的是EasyLink_receiveAsync?
例程中用的是EasyLink_receiveAsync,但是我试了EasyLink_receiveAsync和EasyLink_receive,两个都会导致busy的问题
异步的时候即使rf没有完成也会执行其他的task,但是收发应该是不能同时进行的,所以最好放在同一个task中顺序执行
谢谢解答,想问一下你说的同一个task中顺序执行,什么意思?我试了在同一个任务中的while(1)里进行非阻塞接收和阻塞发送,还是不行,返回busy
你是不是删除了信号量相关代码?具体的没法细看不过这个例程可能对你有帮助
http://www.deyisupport.com/question_answer/wireless_connectivity/f/45/p/106253/300427.aspx#300427
不管阻塞还是非阻塞接收,你接收启动后,如果没有收到数据他那个rf core 就一直在等待接收数据,如果要进行发送或者再次进行接收动作,都必须先要用abort一下(调用EasyLink_abort()),不然就会一直返回busy
好的,谢谢
好的,有点明白了,谢谢你