中级会员
 
- 积分
- 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
|
|