char buffer[1];
void read_file(u8 *path)
{
u8 res;
u16 time=0;
u8 t;
f_opendir(&dir,(TCHAR*)"0:/PHOTO");
f_open(&fp,(const TCHAR*)"0:/PHOTO/PIC00000.bmp",FA_OPEN_ALWAYS | FA_READ);
while(1)
{
if(time==0)
{
uartsend("AT+CIPSEND");//准备发送程序
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,">"))
{
// LCD_ShowString(60,190,200,200,16,"CONNECT OK");
break;
}
}
}
res=f_read(&fp,buffer,sizeof(buffer),&bw);
if(res||bw==0)
{
sendchar(0x1a);//以0x1a结?
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,"SEND OK"))
{
break;
}
}
USART_RX_STA=0;
break;
}
save[time]=buffer[0];
delay_ms(2);
printf("%c",buffer[0]);
time++;
if(time==10)
{
sendchar(0x1a);//以0x1a结?
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,"SEND OK"))
{
time=0;
break;
}
else if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,"ERROR"))
{
uartsend("AT+CIPSEND");
while(1)//等待收到的连接成功的信息,连接成功就会跳出循环
{
if(USART_RX_STA&0x80 && strstr(USART_RX_BUF,">"))
{
// LCD_ShowString(60,190,200,200,16,"CONNECT OK");
break;
}
}
for(t=0;t<time;t++)
{
printf("%c",save[t]);
}
sendchar(0x1a);
USART_RX_STA=0;
}
}
// delay_ms(1000);
}
}
}
标红的地方不知道为什么经常出现当time==9要加一变10的时候拿上一句printf就会莫名其妙的跳过去 一共就只能输出9个字符 总是少一个 但我用jtag模拟的时候却没问题 但也有时会跳过去 请问这是怎么回事?
|