中级会员 
   
	- 积分
 - 251
 
        - 金钱
 - 251 
 
       - 注册时间
 - 2019-8-7
 
      - 在线时间
 - 51 小时
 
 
 
 | 
 
 
 楼主 |
发表于 2022-3-8 16:14:15
|
显示全部楼层
 
 
 
 
 
while(1) 
                { 
                        if(jpeg_data_ok == 1)        //已经采集完一帧图像了 
                                { 
                                        p = (u8*)jpeg_data_buf; 
                                        printf("jpeg_data_len:%d\r\n", jpeg_data_len * 4); //打印帧率 
                                        LCD_ShowString(30, 210, 210, 16, 16, "Sending JPEG data..."); //提示正在传输数据 
                                        jpglen = 0;        //设置jpg文件大小为0 
                                        headok = 0;        //清除jpg头标记 
 
                                        for(i = 0; i < jpeg_data_len * 4; i++) //查找0XFF,0XD8和0XFF,0XD9,获取jpg文件大小 
                                                { 
                                                        if((p == 0XFF) && (p[i + 1] == 0XD8)) //找到FF D8 
                                                                { 
                                                                        jpgstart = i; 
                                                                        headok = 1;        //标记找到jpg头(FF D8) 
                                                                } 
 
                                                        if((p == 0XFF) && (p[i + 1] == 0XD9) && headok) //找到头以后,再找FF D9 
                                                                { 
                                                                        jpglen = i - jpgstart + 2; 
                                                                        break; 
                                                                } 
                                                } 
                                        if(jpglen)        //正常的jpeg数据 
                                                { 
                                                        p += jpgstart;                        //偏移到0XFF,0XD8处 
 
                                                        for(i = 0; i < jpglen; i++)        //发送整个jpg文件 
                                                                { 
                                                                        USART2->TDR = p; 
 
                                                                        while((USART2->ISR & 0X40) == 0);        //循环发送,直到发送完毕 
 
                                                                        key = KEY_Scan(0); 
 
                                                                        if(key)break; 
                                                                } 
                                                } 
 
                                        else LCD_ShowString(30, 210, 210, 16, 16, "Send data complete!!"); //提示传输结束设置 
 
                                        jpeg_data_ok = 2;        //标记jpeg数据处理完了,可以让DMA去采集下一帧了. 
                                } 
                } 
 
 
在主循环这,发送完jpeg到串口就改成2 
 
 |   
 
 
 
 |