有关信号量,内存划分的问题
下面是一个串口接收数据的程序,我希望在接收当前数据的过程中,如果再来一组数据,需要把当前的数据接收完毕之后再接收后来的数据,保证数据正确性,用了2进制信号量
semRecv = semBCreate(SEM_Q_PRIORITY, SEM_FULL);
int tyRecv(int fd)
{
int readCnt0;
char rd;
char buff[512];
int i;
semRecv = semBCreate(SEM_Q_PRIORITY, SEM_FULL);
FOREVER
{
i=0;
taskDelay(50);
ioctl(fd,FIONREAD,(int) &readCnt0);
semTake(semRecv, WAIT_FOREVER);
if(readCnt0>0)
{
while(readCnt0>0)
{
read(fd,&rd,1);
readCnt0--;
buff[i++]=rd;
}
buff[i]='\0';
printf("%s\n",buff);
}
semGive(semRecv);
}
}