OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5807|回复: 21

萌新又来求助了!怎么用ESP8266把数据(文件)传输到电脑?

[复制链接]

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
发表于 2017-6-1 10:33:45 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]u8 ov5640_jpg_photo(u8 *pname)
{
        FIL* f_jpg;
        u8 res=0;
        u32 bwr;
        u32 i;
        u8* pbuf;
        f_jpg=(FIL *)mymalloc(SRAMIN,sizeof(FIL));        //开辟FIL字节的内存区域
        if(f_jpg==NULL)return 0XFF;                                //内存申请失败.
        ovx_mode=1;
        jpeg_data_ok=0;
        sw_ov5640_mode();                                                //切换为OV5640模式
        OV5640_JPEG_Mode();                                                //JPEG模式  
        OV5640_OutSize_Set(16,4,1600,1200);                //设置输出尺寸(500W)  
        dcmi_rx_callback=jpeg_dcmi_rx_callback;        //JPEG接收数据回调函数
        DCMI_DMA_Init((u32)jpeg_buf0,(u32)jpeg_buf1,jpeg_dma_bufsize,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);//DCMI DMA配置(双缓冲模式)
//        DCMI_DMA_Init((u32)dcmi_line_buf[0],(u32)dcmi_line_buf[1],jpeg_line_size,2,1);//DCMI DMA配置   
        DCMI_Start();                         //启动传输
        while(jpeg_data_ok!=1);        //等待第一帧图片采集完
        jpeg_data_ok=2;                        //忽略本帧图片,启动下一帧采集
        while(jpeg_data_ok!=1);        //等待第二帧图片采集完,第二帧,才保存到SD卡去.
        DCMI_Stop();                         //停止DMA搬运
        ovx_mode=0;
        sw_sdcard_mode();                //切换为SD卡模式
        res=f_open(f_jpg,(const TCHAR*)pname,FA_WRITE|FA_CREATE_NEW);//模式0,或者尝试打开失败,则创建新文件         
        if(res==0)
        {
//                printf("jpeg data size:%d\r\n",jpeg_data_len*4);//串口打印JPEG文件大小
                pbuf=(u8*)jpeg_data_buf;
                for(i=0;i<jpeg_data_len*4;i++)//查找0XFF,0XD8和0XFF,0XD9,获取jpg文件大小
                {
                        if((pbuf==0XFF)&&(pbuf[i+1]==0XD8))break;//找到FF D8
                }
                if(i==jpeg_data_len*4)res=0XFD;//没找到0XFF,0XD8
                else//找到了
                {
                        pbuf+=i;//偏移到0XFF,0XD8处
                        res=f_write(f_jpg,pbuf,jpeg_data_len*4-i,&bwr);
      u32 a;
                        for(a=0;a<jpeg_data_len*4-i;a++)
                        {
                                while((USART1->SR&0X40)==0);
                                USART1->DR=pbuf[a];//串口输出
                        }
                        if(bwr!=(jpeg_data_len*4-i))res=0XFE;
                }
        }
        jpeg_data_len=0;
        f_close(f_jpg);
        sw_ov5640_mode();                //切换为OV5640模式
        OV5640_RGB565_Mode();        //RGB565模式  
        DCMI_DMA_Init((u32)&LCD->LCD_RAM,0,1,DMA_MemoryDataSize_HalfWord,DMA_MemoryInc_Disable);//DCMI DMA配置  
        myfree(SRAMIN,f_jpg);
        return res;
}
[/mw_shl_code]

就是这段代码,这是拍照实验里面的源码,经过萌新的努力,已经可以再ESP8266程序里面控制单片机进行拍照了,可以看到之前是拍照并且保存在内存卡里面,并且通过这段指令传输到计算机
for(a=0;a<jpeg_data_len*4-i;a++)
{
while((USART1->SR&0X40)==0);
USART1->DR=pbuf[a];//串口输出
}
请问有什么办法可以把程序改一下 通过WIFI传输到计算机么? 现在WIFI虚拟的串口是USART3。

谢谢各位大神,萌新感激不尽!

最佳答案

查看完整内容[请看2#楼]

真的吗? 可以这么简单吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-1 10:33:46 | 显示全部楼层
Sun_Fly 发表于 2017-6-1 12:04
for(a=0;aSR&0X40)==0);
USART3>DR=pbuf[a];//串口输出
}

真的吗? 可以这么简单吗?
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-1 10:34:09 | 显示全部楼层
萌新自顶
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-1 10:35:05 | 显示全部楼层
呼叫大神@so
@tao96  
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-1 10:40:38 | 显示全部楼层
呼叫原子哥@正点原子
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-1 11:23:50 | 显示全部楼层
萌新自顶
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-6-1 11:28:01 | 显示全部楼层
用TCP?UDP?模块作为服务端?模块作为客户端?透传?非透传?
还有你这句话  已经可以再ESP8266程序里面控制单片机进行拍照了   是已经搞定我上面说的这几种方法了吗?
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-1 11:48:12 | 显示全部楼层
Sun_Fly 发表于 2017-6-1 11:28
用TCP?UDP?模块作为服务端?模块作为客户端?透传?非透传?
还有你这句话  已经可以再ESP8266程序里面控制 ...

我是按照ESP8266源码连接的 我用的是AP模式的TCP客户端 已经实现从电脑发送数据给单片机然后单片机拍照了,不知道怎么把照片传回来
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-6-1 12:04:53 | 显示全部楼层
for(a=0;a<jpeg_data_len*4-i;a++)
{
while((USART3->SR&0X40)==0);
USART3>DR=pbuf[a];//串口输出
}

串口1改成3
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-1 17:19:10 | 显示全部楼层
萌新求罩 发表于 2017-6-1 17:18
真的吗? 可以这么简单吗?

那我在电脑上怎么接收?
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-6-1 17:27:10 | 显示全部楼层
就是这段代码,这是拍照实验里面的源码,经过萌新的努力,已经可以再ESP8266程序里面控制单片机进行拍照了,可以看到之前是拍照并且保存在内存卡里面,并且通过这段指令传输到计算机
for(a=0;a<jpeg_data_len*4-i;a++)
{
while((USART1->SR&0X40)==0);
USART1->DR=pbuf[a];//串口输出
}
请问有什么办法可以把程序改一下 通过WIFI传输到计算机么? 现在WIFI虚拟的串口是USART3。


你现在不是WIFI已经调通了吗?通了之后就可以互相传数据了,在电脑服务端窗口就可以收到数据,字符类型的数据,
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-2 10:16:25 | 显示全部楼层
Sun_Fly 发表于 2017-6-1 17:27
就是这段代码,这是拍照实验里面的源码,经过萌新的努力,已经可以再ESP8266程序里面控制单片机进行拍照了 ...

我试了 并不行诶。。。不知道该怎么办
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-6-2 10:22:04 | 显示全部楼层
萌新求罩 发表于 2017-6-2 10:16
我试了 并不行诶。。。不知道该怎么办

你是透传模式吗?如果你能在电脑的服务端上位机 发送命令给单片机,那么单片机发送数据 服务端上位机也能收到
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-2 10:30:24 | 显示全部楼层
Sun_Fly 发表于 2017-6-2 10:22
你是透传模式吗?如果你能在电脑的服务端上位机 发送命令给单片机,那么单片机发送数据 服务端上位机也能 ...

我再试试 看看哪里有问题
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-2 10:30:46 | 显示全部楼层
Sun_Fly 发表于 2017-6-2 10:22
你是透传模式吗?如果你能在电脑的服务端上位机 发送命令给单片机,那么单片机发送数据 服务端上位机也能 ...

非常感谢你的热情帮助
回复

使用道具 举报

5

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-24
在线时间
7 小时
 楼主| 发表于 2017-6-2 10:45:04 | 显示全部楼层
Sun_Fly 发表于 2017-6-2 10:22
你是透传模式吗?如果你能在电脑的服务端上位机 发送命令给单片机,那么单片机发送数据 服务端上位机也能 ...

我刚才又调了一下,已经好了
但是传出来的是16进制数组,还不知道怎么转换为我的图片
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-6-2 11:17:49 | 显示全部楼层
萌新求罩 发表于 2017-6-2 10:45
我刚才又调了一下,已经好了
但是传出来的是16进制数组,还不知道怎么转换为我的图片

是啊,接下来就是图片解码了,原先在SD卡是怎么解码的,这个我没了解过
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-6-2 11:18:01 | 显示全部楼层
萌新求罩 发表于 2017-6-2 10:45
我刚才又调了一下,已经好了
但是传出来的是16进制数组,还不知道怎么转换为我的图片

是啊,接下来就是图片解码了,原先在SD卡是怎么解码的,这个我没了解过
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-6-2 11:18:12 | 显示全部楼层
萌新求罩 发表于 2017-6-2 10:45
我刚才又调了一下,已经好了
但是传出来的是16进制数组,还不知道怎么转换为我的图片

是啊,接下来就是图片解码了,原先在SD卡是怎么解码的,这个我没了解过
回复

使用道具 举报

15

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2016-9-27
在线时间
42 小时
发表于 2017-6-2 17:28:33 | 显示全部楼层
需要上位机知识了,通过串口传输吧?
回复

使用道具 举报

19

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
金钱
243
注册时间
2017-5-19
在线时间
63 小时
发表于 2017-6-20 23:27:02 | 显示全部楼层
萌新,你这部分是在哪个文件夹里面呢,我都没找到
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-9-2
在线时间
18 小时
发表于 2018-9-13 18:15:43 | 显示全部楼层
楼主,请问你是怎么修改的照相机代码?我最近也在做这个,想求教一下,感激不尽!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 03:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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