如题,在调用ossempend时,等待时间内,系统会去进行别的任务调度吗?还有我的一任务中,连续调用ossempend这样可以吗(二进制信号量)?比如说如下:
while(1)
{
。。。。。。。(省略)
can_msg_send(coder);//对传感器数据进行采集
ossempend{
&can_ok,
200,
err;(具体格式忘啦,大家明白意思就行,一个是信号量名称,一个是时间,一个是错误)
}
for(i=0;i<8;i++)
{
printf("接收到的编码器数据为:%d
",buffer[i]);//打印接收到的传感器数据
}
memset(buffer,0,sizeof(buffer));
can_msg_send(leak);//对传感器数据进行采集
ossempend{
&can_ok,
200,
err;(具体格式忘啦,大家明白意思就行,一个是信号量名称,一个是时间,一个是错误)
}
for(i=0;i<8;i++)
{
printf("接收到的编码器数据为:%d
",buffer[i]);//打印接收到的传感器数据
}
memset(buffer,0,sizeof(buffer));
。。。。。。。。。。
}
然后我的思路是,上位机发送查询指令,然后传感器(用51+mcp2515+tja1050+传感器 做的)回传数据,回传一个正确数据后,释放信号量ossempost,然后接着查询下一个传感器的数据(当然通讯的协议使我们自己做的,有校验和帧头)
请问这样做可以吗?能在一个任务中请求多次信号量吗(信号量用的是二进制信号量)
请大声指点迷津啊,数据一直不是很正常
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>