通过串口2拿到的图像:
通过wireshark抓取的udp数据包:
在udp数据包里面只能找到FFD8,看不到FFD9
我是通过合并摄像头实验和网络通信实验,形成的代码:
核心代码如下:
[mw_shl_code=c,true]OV2640_JPEG_Mode();
My_DCMI_Init();
DCMI_DMA_Init((u32)&jpeg_buf,jpeg_buf_size,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);
OV2640_OutSize_Set(jpeg_img_size_tbl[size][0],jpeg_img_size_tbl[size][1]);
DCMI_Start();
while(1)
{
if(jpeg_data_ok==1)
{
p=(u8*)jpeg_buf;
LCD_ShowString(30,210,210,16,16,"Sending JPEG data...");
udp_demo_senddata(p);//udp发送JPEG数据
for(i=0;i<jpeg_data_len*4;i++)
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,p ); //串口输出
key=KEY_Scan(0);
if(key)break;
} [/mw_shl_code]
[mw_shl_code=c,true] ……
[/mw_shl_code]
[mw_shl_code=c,true]}[/mw_shl_code]
[mw_shl_code=c,true]
[mw_shl_code=c,true]void udp_demo_senddata(u8 *jpeg_buf)
{
struct pbuf *ptr;
u8 msgbuf[30];
sprintf((char*)msgbuf,"Packet Size:%d",jpeg_data_len*4);
LCD_ShowString(30,250,200,16,16,msgbuf);
ptr=pbuf_alloc(PBUF_TRANSPORT,jpeg_data_len*4,PBUF_POOL);
if(ptr)
{
sprintf((char*)msgbuf,"Send Packet:%d",jpeg_data_len*4);
LCD_ShowString(30,270,200,16,16,msgbuf);
ptr->payload=(void*)jpeg_buf;//tcp_demo_sendbuf;
udp_send(udppcb,ptr);
pbuf_free(ptr);
}
} [/mw_shl_code]
[/mw_shl_code]
其余代码没有特别大的改动,原子哥怎么破??????
我是小白啊,这水太深了,我伤不起!
|