小弟在调试MC55的发送AT命令的时候,遇到一个很奇怪的问题,我采用的是在FPGA中嵌入nios软核,发送AT命令并读取回显是由nios中的C语言来实现,废话少说,上程序
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include "unistd.h"
#include "system.h"
#include "altera_avalon_uart_regs.h"
#include "alt_types.h"
int main()
{
char*AT="at+csq\r";
char re_buffer[256]="";
int num=0;
FILE* fp;
fp=fopen("/dev/uart_GPRS","rb+");//二进制打开进行读写
if(fp!=NULL)
{
fprintf(fp,"%s",AT);//发送AT命令
// usleep(50000);
while(!feof(fp)) //feof未读到文件尾返回0,
{
num=fread(re_buffer,1,1,fp);
printf(re_buffer);
if (num!=1)
{
break;
}
}
printf("test is successful");
fclose(fp);
}
return 0;
}
我在运行程序的时候,一直跳不出while循环,按照feof函数的定义,当读到fp文件的尾端时,会返回非零值,没读到尾端则返回零,这样,把fp中的字符读完之后会跳出while循环呀,为什么调试的时候就一直跳不出来呢? |