出现的错误是队列没有初始化成功,也就是说在initQueue后,队列还是为空。麻烦那位大虾帮忙看看,谢谢!!!
代码如下:
ATcommand at_struct={"AT+CPIN?",1};
int initQueue(sqqueue *q)
{
if((q=(sqqueue *)malloc(sizeof(sqqueue)))==NULL) return 0;
printf("the size of q %d\n",sizeof(q));
q->front = 0;
q->rear = 0;
q->s = 0;
printf("%d %d \n",q->front,q->rear);
return 1;
}
int append(sqqueue *q, ATcommand at)
{
printf("%d %d \n",q->front,q->rear);
if((q->rear+1)%MAXNUM ==q->front )return 0;
q->atcommand[q->rear] = at;
q->rear = (q->rear+1)%MAXNUM;
return 1;
}
ATcommand delete(sqqueue *q)
{
ATcommand at;
if(q->s == 0)return ;
if(q->front == q->rear) q->s=0;
at = q->atcommand[q->front];
q->front = (q->front+1)%MAXNUM;
return at;
}
int
main (int argc, char *argv[])
{
sqqueue *q_queue = NULL;
g_type_init();
if (!g_thread_supported ())
g_thread_init (NULL);
ResponseProcess *proc = response_process_new("/dev/ttyACM0");
ResponseMessage *mess;
int i = 0,j = 0;
struct timeval timeout;
timeout.tv_sec = 1;
timeout.tv_usec = 0;
if(initQueue(q_queue))
{
printf("q_queue is init? %d %d \n",q_queue->front,q_queue->rear);
int k = append(q_queue,at_struct);
}
printf("sssssssss222\n");
while (1)
{
if(i%300 == 0)
{//struct
response_process_terminate(proc);
response_process_restart (proc);
}
if (!response_process_initial_finish (proc))
continue ;
else
{
response_process_input_command (proc,at_struct.At_cmd);
select(0,NULL,NULL,NULL,&timeout);
while (!response_process_is_empty (proc))
{
mess = response_process_get_message (proc);
g_print("the message is: %s\n",mess->data);
g_free (mess);
j++;
}
i++;
if(j>0)
{
break;
}
}
usleep(100000);
}
//g_free(q_queue);
return 0;
}
ai0909 于 2011-11-01 14:18:58发表:
{:2_97:}
cuiweixie 于 2011-03-31 00:52:18发表:
这是什么???
meenzi 于 2011-03-29 22:14:20发表:
我也想了解一下这个东西,现在不太明白
Earth_Nie 于 2009-02-11 09:54:48发表:
解?了