注册 登录
查看: 444|回复: 8

[K60] 关于SD卡存储图像问题

[复制链接]
发表于 2014-7-11 11:02:04 | 显示全部楼层 |阅读模式
我想把摄像头读来的图像数组放入SD卡中,我用山外提供的程序LCD_摄像头中加入SDHC的程序在程序中修改了一下,大神们看一下我的程序哪里有问题了。图像是80*60
#define BUFF_SIZE   600

while(1)
    {
        camera_get_img();                                   //摄像头获取图像
#if     ( CAMERA_COLOR == 1 )                                       //灰度摄像头
        LCD_Img_gray_Z       (site, size, imgbuff, imgsize);
#elif   ( CAMERA_COLOR == 0 )                                       //黑白摄像头
        LCD_Img_Binary_Z(site, size, imgbuff, imgsize);
#endif
#if 0
        /******************** 发送图像到上位机 ***********************/
        img_extract(img, imgbuff, CAMERA_SIZE);          //解压为灰度图像,方便发送到上位机显
        sendimg(img, CAMERA_W * CAMERA_H);                    //发送到上位机
#endif
        ///////////////////////////////////
    FIL     fdst;   //文件
    FATFS   fs;     //文件系统
    uint32 size, sizetmp;
    int res;
    uint8 buff[BUFF_SIZE];
    memset(buff,0,BUFF_SIZE);
    f_mount(0, &fs);                                                               //挂载文件系统
    //初始化 SD卡 在 f_open 上执行,目前代码只支持打开一个文件(由 _FS_SHARE 配置),频繁打开文件会消耗CPU资源
    res = f_open(&fdst, "0:/00000000.txt", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);  //打开文件,如果没有就创建,带读写打开
    if( res == FR_DISK_ERR)
    {
        printf( "\n没插入SD卡??\n" );
        return;
    }
    else if ( res == FR_OK )
    {
        printf( "\n文件打开成功 \n" );
    }
    else
    {
        printf("\n返回值异常");
        return;
    }
    f_puts(imgbuff, &fdst);                     //往文件里写入字符串
    f_sync(&fdst);                          //刚才写入了数据,实际上数据并没真正完成写入,需要调用此函数同步或者关闭文件,才会真正写入
    size = f_size(&fdst);                   //获取文件的大小
    printf( "\n文件大小为:%d \n" , size);  //串口打印文件的大小
    if(size > BUFF_SIZE)size = BUFF_SIZE;   //防止溢出
    f_lseek(&fdst, 0);                      //把指针指向文件顶部
    f_read (&fdst, buff, size, &sizetmp);   //读取
    printf("文件内容为:\n%s", (char const *)buff);
    f_close(&fdst);                         //关闭文件
    }


以上就是我的主程序其中原先的程序中我改为
    f_puts(imgbuff, &fdst);                     //往文件里写入字符串
但是串行口读出的数据不正确。,请问,我是哪里出错了呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-7-11 11:24:04 | 显示全部楼层
先用SDHC的例程测一下吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 11:31:30 | 显示全部楼层
本帖最后由 Seven 于 2014-7-11 11:40 编辑
山外メ雲ジ 发表于 2014-7-11 11:24
先用SDHC的例程测一下吧


SD的程序是可以将字符串显示出来的,但是不知道这个二值化的数组怎么显示啊,山外哥,求助。
回复 支持 反对

使用道具 举报

发表于 2014-7-11 11:52:25 | 显示全部楼层
Seven 发表于 2014-7-11 11:31
SD的程序是可以将字符串显示出来的,但是不知道这个二值化的数组怎么显示啊,山外哥,求助。

二值化数组,本来就是随机值,不能用字符串格式写入,也不能直接上位机显示。
回复 支持 反对

使用道具 举报

发表于 2014-7-11 11:52:54 | 显示全部楼层
山外鹰眼 sd卡保存图像代码 - 智能车资料区 - 山外-vcan123论坛 http://www.vcan123.com/forum.php ... ;tid=139&ctid=6
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 13:21:10 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-11 11:52
山外鹰眼 sd卡保存图像代码 - 智能车资料区 - 山外-vcan123论坛 http://www.vcan123.com/forum.php?mod=vi ...

山外哥,我把图像保存的文件加入之后,程序调试出现了点错误,你帮我看看吧,我不知道怎么改。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-7-11 13:40:08 | 显示全部楼层
Seven 发表于 2014-7-11 13:21
山外哥,我把图像保存的文件加入之后,程序调试出现了点错误,你帮我看看吧,我不知道怎么改。

声明和定义 不一样
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 14:01:12 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-11 13:40
声明和定义 不一样

这几个问题我该怎么改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-11 15:39:28 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-11 13:40
声明和定义 不一样

山外哥,函数声明时我是void img_sd_save(uint8 *imgaddr);但是它调试时错误
Error[Pe147]: declaration is incompatible with "__interwork __softfp void img_sd_save(unsigned char *, uint32)" (declared at line 5 of "C:\Documents and  C:\Documents and Settings\Administrator\桌面\LCD_摄像头\App\main.c 34
这个我该怎么改呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

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