搜索
bottom↓
回复: 14

CC3200上传图片yeelink平台成功。如何实现平台这边的处理?

[复制链接]

出0入4汤圆

发表于 2015-5-4 08:45:24 | 显示全部楼层 |阅读模式
CC3200上传图片yeelink平台成功。大概流程是连接服务器80端口,先发一个包含文件长度等信息的包,然后拆分文件按顺序发送到服务器,具体可参考代码。
我的问题是,如果实现平台这边的处理,编代码的话怎么实现,需要学习哪些东西?有经验的朋友指点下,谢谢!

附件 :代码,上传CAMERA采集的图像数据
char yeelink_post_pic(const char *device_id,const char *sensors_id,unsigned int len,unsigned int HeaderLen,char * buf1,char * buf2)
{
        #define HOST_NAME               "www.yeelink.net"
        //int ret;
        //char* presult;
        char remote_server[] = "api.yeelink.net";
        char str_tmp[128] = {0};
        
        SlSockAddrIn_t  sAddr;
        int             iAddrSize;
        int             iSockID;
        int             iStatus;
        //long            lLoopCount = 0;
        //long            lNonBlocking = 1;
        long lRetVal = -1;
        
        // Http内容,表单内容
        //char http_content[32] = {0};
        sprintf(str_tmp,"/v1.1/device/%s/sensor/%s/datapoints",device_id,sensors_id);
        // 确定HTTP表单提交内容 {"value":20}
        //sprintf( http_content , "{\"value\":%f}" , len);
        // 确定 HTTP请求首部
        // 例如POST /v1.0/device/98d19569e0474e9abf6f075b8b5876b9/1/1/datapoints/add HTTP/1.1\r\n
        sprintf( http_request , "POST %s HTTP/1.1\r\n",str_tmp);
        //
        strcat( http_request , "Accept: application/json\r\n");
        // 增加表单编码格式 Content-Type:application/x-www-form-urlencoded\r\n
        strcat( http_request , "Content-Type: application/json\r\n");
        //strcat( http_request , "Content-Type: image/jpeg\r\n");
        // 增加密码 例如 APIKey: d8a605daa5f4c8a3ad086151686dce64
        sprintf( str_tmp , "U-ApiKey: %s\r\n" , "d8a605daa5f4c8a3ad086151686dce64");//需要替换为自己的APIKey
        strcat( http_request , str_tmp);
        // 增加属性 例如 Host: api.machtalk.net\r\n
        sprintf( str_tmp , "Host: %s\r\n" , remote_server);
        strcat( http_request , str_tmp);

        // 增加提交表单内容的长度 例如 Content-Length:12\r\n
        sprintf( str_tmp , "Content-Length: %d\r\n" ,(len + HeaderLen));
        //sprintf( str_tmp , "Content-Length:%d\r\n" ,strlen(http_content) );
        strcat( http_request , str_tmp);

        strcat( http_request , "Expect: 100-continue\r\n");
        strcat( http_request , "Connection: keep-alive\r\n");
        // HTTP首部和HTTP内容 分隔部分
        strcat( http_request , "\r\n");
        // HTTP负载内容
        //strcat( http_request , http_content);
        Report("%s",http_request);
        
        // Get external host IP address
        lRetVal = sl_NetAppDnsGetHostByName((signed char*)HOST_NAME, sizeof(HOST_NAME),
                                                &g_ulDestinationIp, SL_AF_INET);
        //ASSERT_ON_ERROR(lRetVal);
        //filling the TCP server socket address
        sAddr.sin_family = SL_AF_INET;
        sAddr.sin_port = sl_Htons((unsigned short)80);
        sAddr.sin_addr.s_addr = sl_Htonl((unsigned int)g_ulDestinationIp);
        //sAddr.sin_port = sl_Htons((unsigned short)5002);
        //sAddr.sin_addr.s_addr = sl_Htonl((unsigned int)g_ulDestinationIp);
        iAddrSize = sizeof(SlSockAddrIn_t);
        // creating a TCP socket
        iSockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
        if( iSockID < 0 )
        {
            ASSERT_ON_ERROR(TCP_CLIENT_FAILED);
        }
        // connecting to TCP server
        iStatus = sl_Connect(iSockID, ( SlSockAddr_t *)&sAddr, iAddrSize);
        if( iStatus < 0 )
        {
            // error
            ASSERT_ON_ERROR(sl_Close(iSockID));
            ASSERT_ON_ERROR(TCP_CLIENT_FAILED);
        }
        else
        {
            Report("connected to TCP server successfully\n\r");
            //Report("Wireless serial STATION configure successfully\n\r");
        }
        // setting socket option to make the socket as non blocking
        //iStatus = sl_SetSockOpt(iSockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING,
        //                        &lNonBlocking, sizeof(lNonBlocking));         
        //发送请求
        Report("strlen(http_request) = %d bytes\r\n",strlen(http_request));
        iStatus = sl_Send(iSockID,(unsigned char *)http_request,strlen(http_request),0);
        if(iStatus != strlen(http_request))
        {
                Report("%d:Socket Send Error\r\n",iStatus);
                //while(1);
        }            
        //获得响应
        iStatus = sl_Recv(iSockID, g_cBsdBuf, BUF_SIZE, 0);
        if( iStatus <= 0 )
        {
          //Report("iStatus = %d\n\r",iStatus);
        }
        else
        {
          UART_SEND_BUF((unsigned char*)g_cBsdBuf,iStatus);
          //iStatus = sl_Send(iSockID,g_cBsdBuf,iStatus,0);
        }            
        //判断是否收到HTTP OK
        //循环发送数据
        {
          int i,loopcnt;
          int remain;
          loopcnt = len/1460;
          remain = len%1460;
          Report("len=%d loop=%d remain=%d bytes\r\n",len,loopcnt,remain);
          //Report("g_image=%X\r\n",&g_image);
          //Report("buf=%X\r\n",buf);
          //header
          iStatus = sl_Send(iSockID,buf1,HeaderLen,0);
          //iStatus = sl_Send(iSockID,buf,1460,0);
          if(iStatus != HeaderLen)
          {
            Report("%d:Socket Send Error\r\n",iStatus);
            while(1);
          }
          else
          {
            Report("Send HeaderLen byte\n\r");
          }  
          osi_Sleep(500);         
          //
          for(i=0;i<loopcnt;i++)
          {
              iStatus = sl_Send(iSockID,&buf2[i*1460],1460,0);
              if(iStatus != 1460)
              {
                Report("%d:Socket Send Error\r\n",iStatus);
                while(1);
              }
              else
              {
                Report("Send 1460 byte\n\r");
              }  
              osi_Sleep(500);
              /*
              //获得响应
              iStatus = sl_Recv(iSockID, g_cBsdBuf, BUF_SIZE, 0);
              if( iStatus <= 0 )
              {
                //Report("iStatus = %d\n\r",iStatus);
              }
              else
              {
                UART_SEND_BUF((unsigned char*)g_cBsdBuf,iStatus);
              }
              */
          }
          iStatus = sl_Send(iSockID,&buf2[i*1460],remain,0);
          if(iStatus != remain)
          {
            Report("%d:Socket Send Error\r\n",iStatus);
            while(1);
          }
          else
          {
            Report("Send %u byte\n\r",remain);
          }  
          osi_Sleep(500);
          //获得响应
          iStatus = sl_Recv(iSockID, g_cBsdBuf, BUF_SIZE, 0);
          if( iStatus <= 0 )
          {
            //Report("iStatus = %d\n\r",iStatus);
          }
          else
          {
            UART_SEND_BUF((unsigned char*)g_cBsdBuf,iStatus);
          }         
        }
        sl_Close(iSockID);

        return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-5-4 09:35:21 | 显示全部楼层
正在了解这个, 需要个网关

出0入0汤圆

发表于 2015-5-6 17:37:06 | 显示全部楼层
这个厉害点

出0入0汤圆

发表于 2015-5-6 19:00:48 | 显示全部楼层
拆分包用http自动拆包

出0入4汤圆

 楼主| 发表于 2015-5-6 20:19:30 | 显示全部楼层
shaw.wang 发表于 2015-5-6 19:00
拆分包用http自动拆包

怎么个自动法?客户端为cc3200 芯片 ,非PC

出0入0汤圆

发表于 2016-5-17 09:07:50 | 显示全部楼层
本帖最后由 jeremyyin 于 2016-5-18 08:56 编辑

求QQ  674815230  联系 。 新人发不了私人消息

出0入0汤圆

发表于 2016-5-18 08:35:22 | 显示全部楼层
请问这个main函数怎么写的??

出0入0汤圆

发表于 2016-5-18 16:35:39 | 显示全部楼层
我出钱买您的程序行不,有意联系我QQ 674815230

出0入4汤圆

 楼主| 发表于 2016-5-18 17:14:33 | 显示全部楼层
jeremyyin 发表于 2016-5-18 16:35
我出钱买您的程序行不,有意联系我QQ 674815230

程序都贴这了啊

出0入0汤圆

发表于 2016-5-19 08:45:51 | 显示全部楼层
本帖最后由 jeremyyin 于 2016-5-19 17:43 编辑


出0入0汤圆

发表于 2016-5-19 09:32:19 | 显示全部楼层

毕业党特别急,学了半个多月好使一筹莫展。。。 您加我QQ 或者我加您 。价格可以谈!

出0入0汤圆

发表于 2016-5-20 20:25:55 | 显示全部楼层
本帖最后由 jeremyyin 于 2016-5-20 21:52 编辑

给个联系方式也行啊

出0入0汤圆

发表于 2016-5-23 19:35:45 | 显示全部楼层
请问摄像头部分怎么改写?

出0入0汤圆

发表于 2016-9-20 09:24:02 | 显示全部楼层

出0入0汤圆

发表于 2017-12-19 16:25:55 | 显示全部楼层
我想问问这外置 FLASH 怎么加密啊, 这个里面没有FLASH ,程序如何加密呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 09:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表