- 论坛徽章:
- 0
|
我重新烧了板子,又把程序跑了几遍,依然是在跑一段时间以后图像就会卡死,
if((queue_receive[consumer_idx]->frame_number>0)&&(queue_receive[consumer_idx]->frame_number<=1024))
{
while(totalreceive<(RCV_NUM*int_buf_rcv_num[consumer_idx]))
{
totalreceive%=(RCV_NUM*int_buf_rcv_num[consumer_idx]);
hasreceive=recv(connsock,(char *)queue_receive[consumer_idx]+totalreceive,RCV_NUM,0);
//hasreceive=recvfrom(listensock,(char *)queue_receive[consumer_idx]+totalreceive,RCV_NUM,0,&serveraddr,&len);
if(hasreceive)
{
totalreceive+=hasreceive;
}
//printf("hasreceive=%d,totalreceive=%d\n",hasreceive,totalreceive);
}
printf("queue_receive[%d],receive_size=%d ok,hasreceive=%d\n",consumer_idx,totalreceive,hasreceive);
totalreceive%=(1024*int_buf_rcv_num[consumer_idx]);
consumer_idx++;
consumer_idx %= SHARED_BUF_NUM;
sem_post(&full);
}
else
{
printf("index[%d],frame_number=%d,frame_size =%d\n",consumer_idx,queue_receive[consumer_idx]->frame_number,queue_receive[consumer_idx]->size);
printf("receive error\n\n");
totalreceive=0;
sem_post(&empty);
}
根据串口的打印消息,应该是在这一段有问题,当queue_receive[consumer_idx]->frame_number在0到1024范围外时,接收错误,图像卡死,不知道你觉得是不是硬件的问题呢humjb_1983 发表于 2014-03-24 15:28
这是有可能的,所以建议你先将添加的驱动卸掉。 |
|