上位机软件控制下位机PHP,分享个用STM32F429做的网络摄像头(含上位机下位机代码)...

/**

* @brief  TCP服务器任务

* @param

* @retval None

*/

void TCP_Server_task(void *arg)

{

err_t err=0;

err_t recv_err;

struct netconn *server_coon; //服务器连接

struct netbuf *recvbuf;             //接收数据netbuf指针

struct pbuf *bufptr;                  //pbuf数据缓冲区指针

server_coon = netconn_new(NETCONN_TCP);                               //创建一个TCP链接

netconn_bind(server_coon,IP_ADDR_ANY,TCP_SERVER_PORT);  //绑定端口

netconn_listen(server_coon);                                                       //进入监听模式

server_coon->recv_timeout = 10;                                             //禁止阻塞线程 等待10ms

while (1)

{

err = netconn_accept(server_coon,&client_conn);        //接收连接请求

//printf("\r\nerr=0x%x\r\n",err);

if (err == ERR_OK)                                                         //正确说明有客户端联入

{

while(1)

{

if((recv_err = netconn_recv(client_conn,&recvbuf)) == ERR_OK)          //接收到数据且正确

{

bufptr=recvbuf->p;                                                                      //得到数据指针

memcpy(Data_buff,bufptr->payload,bufptr->tot_len);                //拷贝数据

Data_buff[bufptr->tot_len]='\0';                                                //加入结束符

if(!memcmp(Data_buff,Video_Start,9))               //开始采集

{

Video_flag=1;                                   //标志位值1

CamFrame=0;                                   //帧率清零

cam_start();                                   //开始采集

RTC_ITConfig(RTC_IT_WUT,ENABLE);

}

else if(!memcmp(Data_buff,Video_Stop,8))            //关闭采集

{

Video_flag=0;                                     //标志位值0,自动采集完最后一帧,自动停止

RTC_ITConfig(RTC_IT_WUT,DISABLE);

}

netbuf_delete(recvbuf);                             //清除缓冲netbuf

}

else if(recv_err == ERR_CLSD)       //关闭连接

{

netconn_close(client_conn);     //关闭连接

netconn_delete(client_conn);    //删除连接

break;

}

}

}

}

}

/*********************分割线*************************/

/**

* @brief  发送数据任务

* @param

* @retval None

*/

void CAM_Send_task(void *arg)

{

u16  len,i,temp;

u8  *ptr;

u8   flag;

while(1)

{

if(Buf_DoutPtr!=Buf_DinPtr)

{

len=(*Buf_DoutPtr);

ptr=(u8 *)(Buf_DoutPtr+1);                  //指向CAMbuf

flag=0;

for(i=0;i

{

if((ptr==0xFF)&&(ptr[i+1]==0xD9))      //找数据尾

{

ptr[i+2]='\r';

ptr[i+3]='\n';

temp=i+4;                               //有效数据长度

flag=1;

break;

}

}

if(flag)

{

netconn_write(client_conn ,ptr,temp,NETCONN_COPY);  //发送数据

CamFrame++;                                       //帧率+1

}

Buf_DoutPtr+=BUFF_SIZE;

if(Buf_DoutPtr==Buf_EndPtr)  Buf_DoutPtr=Buf_StartPtr;  //到最后一个了

//回到开头

}

OSTimeDly(1);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值