STM32
直播中

爱吃果冻

13年用户 884经验值
私信 关注
[问答]

如何去实现一种基于STM32F429的网络摄像头设计

如何去实现一种基于STM32F429的网络摄像头设计?怎样去采用TCP方式传输图像呢?

回帖(1)

王露

2021-10-21 17:31:35
重点:实现从内网到外网穿透
从本地到阿里云服务器实现
由于本人是学生,还需要突破校园网认证。
校园网认证 通过配置路由器的静态IP,而不使用DHCP,从而突破校园网认证
采用TCP方式传输图像,附TCP传输代码
void netcamera_task(void *arg)
{
err_t err;

static ip_addr_t server_ipaddr,loca_ipaddr;
static u16_t    server_port,loca_port;
   
    u8 res=0;
u32 *tbuf;
   
LWIP_UNUSED_ARG(arg);
server_port = REMOTE_PORT;  //服务器的端口
IP4_ADDR(&server_ipaddr, lwipdev.remoteip[0],lwipdev.remoteip[1], lwipdev.remoteip[2],lwipdev.remoteip[3]); //服务器公网IP地址

    while(1)    //等待连接
    {
      tcp_clientconn = netconn_new(NETCONN_TCP);  //创建一个TCP链接
   err = netconn_connect(tcp_clientconn,&server_ipaddr,server_port);//连接服务器
   if(err != ERR_OK)
   {
    netconn_delete(tcp_clientconn); //返回值不等于ERR_OK,删除tcp_clientconn连接
   }
   else if(err==ERR_OK) //成功检测到连接
       {
            camera_init();
            delay_ms(1000); //此延时一定要加!!
            while(1)        //开始视频传输
            {
                res=netcam_fifo_read(&tbuf);    //读取FIFO中的数据
                if(res)     //有数据要发送
                {
                    err=netconn_write(tcp_clientconn,tbuf,NETCAM_LINE_SIZE*4,NETCONN_COPY);//发送数据
                    if((err==ERR_CLSD)||(err==ERR_RST))//关闭连接,或者重启网络
                    {
                        camera_deinit();//复位网络摄像头
                        netconn_close(tcp_clientconn);
                        netconn_delete(tcp_clientconn);
                        break;
                    }                     
                }else
                {
                    OSTimeDlyHMSM(0,0,0,5);//延时2ms
                }
            }
        }
    }

}


举报

更多回帖

发帖
×
20
完善资料,
赚取积分