编写WINCE5.0下摄像头应用程序

时间:2021-05-18 17:23:17
最近编写WINCE5.0下摄像头应用程序,

请问那位大哥有这样一个历程:

立宇泰电子公司的新版2440配套光盘中有:“ARMSYS2440随盘提供的“WINCE应用程序实例”加入了摄像头应用程序,cameratestV1.2。具备了预览显示和图像抓取(保存为BMP)两项功能。”

如果方便请上传或发邮件到345170803@qq.com

42 个解决方案

#1


在“SMDK2440”这个BSP包中,FILES文件下基本都有CameraTest.exe这个摄像头测试程序,但是具体不太知道怎样使用,请教!

#2


这里估计很少有人会用到你说的那个板子。不过做摄像头的驱动应该是一个比较广的应用。就是流驱动。

#3


www.pudn.com估计有。那里很多东西。

#4


自己写

#5


去买一个他们的板了,反正也不贵。

#6


现在已经把天嵌的2440开发板的摄像头驱动调通了,但是在上层软件那里的怎样控制图片输出格式和抓拍上有问题,继续努力了!

#7


顶你一下。。。

#8


抓拍的话,就是通过read,camera 中的数据,通过添加相应的数据头,保存为bmp,或jpg的图片

#9


我现在不知道怎样把摄像头采集的图像放到我制作的对话框中的Picture Control控件中?
求助!!!

引用 8 楼 sanlybeen 的回复:
抓拍的话,就是通过read,camera 中的数据,通过添加相应的数据头,保存为bmp,或jpg的图片


大哥,能说得更详细些么? 你指的read是用摄像头驱动中提供的XX_OControl()函数提供的功能么?
谢谢了!

#10


引用 9 楼 iwillbeback008 的回复:
 你指的read是用摄像头驱动中提供的XX_OControl()函数提供的功能么? 
谢谢了!

这个得看看驱动中是如何实现的,iocontrol也可以,read也可以的,下面是主要代码你看下,读取的是p-path的rgb数据,如果读c-path的yuv的话还需要转换数据格式
f=ReadFile(hCam,bufOut,pic_size,(LPDWORD)&nBytesRead,NULL);

    BITMAPINFO   RGB16BitsBITMAPINFO;   
    ZeroMemory(&RGB16BitsBITMAPINFO,   sizeof(BITMAPINFO)); 
    RGB16BitsBITMAPINFO.bmiHeader.biSize   =   sizeof(BITMAPINFOHEADER); 
    RGB16BitsBITMAPINFO.bmiHeader.biWidth   =   320; 
    RGB16BitsBITMAPINFO.bmiHeader.biHeight   =   240; 
    RGB16BitsBITMAPINFO.bmiHeader.biPlanes   =   1; 
    RGB16BitsBITMAPINFO.bmiHeader.biBitCount   =   16;
    RGB16BitsBITMAPINFO.bmiHeader.biCompression = BI_BITFIELDS;

//在填充数据 
BITMAPFILEHEADER   bmBITMAPFILEHEADER; 
ZeroMemory(&bmBITMAPFILEHEADER,   sizeof(BITMAPFILEHEADER)); 
bmBITMAPFILEHEADER.bfType   =   0x4d42;     //bmp     
    bmBITMAPFILEHEADER.bfOffBits   =   sizeof(BITMAPFILEHEADER)   +   sizeof(BITMAPINFOHEADER) +16/*调色板结构大小*/; 
    bmBITMAPFILEHEADER.bfSize   =   bmBITMAPFILEHEADER.bfOffBits   +   (pic_size);  
          
     //保存图像数据
//write   bitmap   file   header 
fwrite(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER), 1, mStream); 
//write   bitmap   info 
fwrite(&(RGB16BitsBITMAPINFO.bmiHeader), sizeof(BITMAPINFOHEADER), 1, mStream); 
//write palette    info
fwrite(&RGB565, 16, 1, mStream);
//write   bitmap   pixels   data 
fwrite(bufOut, pic_size, 1, mStream); 
//close   file 
fclose(mStream); 

#11


谢谢sanlybeen的指点,俺再仔细学习一下你说得
谢谢!

#12


我的2440只有一个三星提供的camtest.exe文件,没有源码。有个PXA270的EVC摄像头测试程序源码,要么

#13


我前些时候做了一个LCD的驱动开发,现在也还没有搞出来,在这一块还真有点难

#14


引用 12 楼 zzqccc 的回复:
我的2440只有一个三星提供的camtest.exe文件,没有源码。有个PXA270的EVC摄像头测试程序源码,要么


三星提供的camtest.exe文件,我也有,已经用来测试摄像头了。
你说的"三星提供的camtest.exe文件",我想要,什么时候方便发给我阿?

#15


我刚才说错了,

是"zzqccc"大哥说的“PXA270的EVC摄像头测试程序源码”,我想要,
请问zzqccc什么时候方便发给我,希望这两天可以么?

#16


源代码发到你邮箱去了,去收邮件吧、。

#17


引用 8 楼 sanlybeen 的回复:
抓拍的话,就是通过read,camera 中的数据,通过添加相应的数据头,保存为bmp,或jpg的图片


    现在的目标是要把抓拍的图形转换成jpg格式保存下来,不知道能否按照你说的方法(10楼),通过添加jpg图片的格式信息直接转换为jpg格式的图片?

    还是要经过bmp转jpg的过程,那有没有bmp转jpg的WinCE下的示例代码?

#18


保存jpg得用到jpeglib这个库文件,你需要找这个库的相关资料,移植这个库,转换就比较容易了。
bmp转成jpg可能也就是几句语句。

#19


在bmp图片转jpg图片的流程上,找到一个例程(带有jpgdll.dll),关键语句如下:
hInst = ::LoadLibrary(_T("jpgdll.dll"));
pFunc = (CHANGE*)::GetProcAddress(hInst,_T("BmpToJpg"));
pFunc(m_strBmp.GetBuffer(50),m_strJpg.GetBuffer(50));
m_strBmp.ReleaseBuffer();
m_strJpg.ReleaseBuffer();
::FreeLibrary(hInst);

#20


但是现在有个问题,就是利用摄像头驱动中的XX_IOControl函数提供的Copy_Cam_Image()函数把RGB格式的图像缓存值拷贝到制定地方时,会出现"Data Abort"异常。
Copy_Cam_Image()函数如下:

void Copy_Cam_Image(U8 *pBufOut, U32 size_x, U32 size_y, U8 port)
{
U8 *buffer_rgb,*pImage;
U32 y;
int temp,pic_size;

  RETAILMSG(MSG_EN_1,(_T("++Copy_Cam_Image().\n"))); //add by Rn 20090330
pic_size = size_x*size_y*2; //this is use 176*144*2
pImage = pBufOut;


{
temp = (s2440CAM->rCIPRSTATUS>>26)&3; //FrameCnt_Pr&3
temp = (temp + 2) % 4;

switch (temp)
{
case 0:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA1; //RGB 1st frame start address for preview DMA
break;
case 1:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA2; //RGB 2st frame start address for preview DMA
break;
case 2:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA3; //RGB 3st frame start address for preview DMA
break;
case 3:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA4; //RGB 4st frame start address for preview DMA
break;
default :
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA1;
break;
}

}

RETAILMSG(MSG_EN_1,(_T("Copy_Cam_Image:temp is %d.\r\n"), temp)); //add by Rn 20090330

//出现“”异常的代码锁定为以下红色字体部分
#if (DOTNET_DRIVER)    //文件开头有定义(#define DOTNET_DRIVER 1 // 0:PPC, 1:CE.NET)
     SetKMode(TRUE);
#endif
buffer_rgb += VIRTUAL_OFFSET; //VIRTUAL_OFFSET=0x7C000000~camif.h

        memcpy(pImage, buffer_rgb, pic_size); //pImage=pBufOut;pic_size = size_x*size_y*2;

#if (DOTNET_DRIVER)
     SetKMode(FALSE);
#endif

RETAILMSG(MSG_EN_1,(_T("--Copy_Cam_Image().\n"))); //add by Rn 20090330
}


串口调试得到的异常信息如下:
Data Abort: Thread=8f9f02b4 Proc=8db96160 'device.exe'
AKY=00000045 PC=03fc3ac8(coredll.dll+0x00053ac8) RA=028630e8(camera.dll+0x000030e8) BVA=06000000 FSR=00000007
RaiseException: Thread=8f9f02b4 Proc=8db96160 'device.exe'
AKY=00000045 PC=03f8dff4(coredll.dll+0x0001dff4) RA=8c22a61c(NK.EXE+0x0002a61c) BVA=00000003 FSR=00000003
Data Abort: Thread=8f9f02b4 Proc=8db96520 'OV9650Test.exe'
AKY=00000041 PC=03f929f4(coredll.dll+0x000229f4) RA=50616548(???+0x50616548) BVA=0e000051 FSR=00000003


请教各位高手!谢谢

#21


//出现“异常”的代码锁定为以下部分:

#if (DOTNET_DRIVER)    //文件开头有定义(#define DOTNET_DRIVER 1 // 0:PPC, 1:CE.NET)
     SetKMode(TRUE);
#endif
       buffer_rgb += VIRTUAL_OFFSET;    //VIRTUAL_OFFSET=0x7C000000~camif.h
    
        memcpy(pImage, buffer_rgb, pic_size);    //pImage=pBufOut;pic_size = size_x*size_y*2;

#if (DOTNET_DRIVER)
     SetKMode(FALSE);

#22


你用pb的远程调试工具检查内存,看看出现异常时,内存的状况,可能是内存不足了。

#23


我现在这个系统不能使用PB的远程调试工具,用开发板公司的系统就是郁闷,现在有没有时间去自己做系统。
我现在把 memcpy()函数换成memmove()函数:


memcpy(pImage, buffer_rgb, pic_size);    //pImage=pBufOut;pic_size = size_x*size_y*2;


换成:

memmove(pImage, buffer_rgb, pic_size);  //pImage=pBufOut;pic_size = size_x*size_y*2;


问题还是出现,奇怪了!

怎么办?

#24


我也是怀疑pImage和buffer_rgb地址上有重叠,说一改用memmove()函数。

还是想看看 :立宇泰电子公司的新版2440配套光盘中有:“ARMSYS2440随盘提供的“WINCE应用程序实例”加入了摄像头应用程序,cameratestV1.2。具备了预览显示和图像抓取(保存为BMP)两项功能。” 

#25


小弟想要270 摄像头测试的源码学习,发下好吗?
kukusamuel@sina.com
谢了。。

#26


引用 25 楼 xiaolong666 的回复:
小弟想要270 摄像头测试的源码学习,发下好吗? 
kukusamuel@sina.com 
谢了。。

好,发到你邮箱了。

#27


自己再顶一下

#28


偶也想要那个源码,谢谢发给我一份。 michael_business@126.com

#29


CameraTest.exe是微软提供的测试程序,代码在:C:\WINCE600\PRIVATE\TEST\MULTIMEDIA\DIRECTX\DSHOW\CAMERA,
如果哪位的大哥的目录下面没有这个源码,那就是你安装的时候,没有选全,要用完全安装

#30


自己做就行了,主要就是先读到CAMERA缓冲区的数据(一开始可以读P通道的,直接就是RGB565格式的数据),然后创建一副图片并填充一下图片头信息,再把从CAMERA读到的RGB565数据放进去就行了;C通道的YUV格式转换起来会稍微麻烦一些。
至于预览功能,应该驱动中实现的(摄像头驱动内部应该有个线程,开始采集后会自动把P通道数据拷贝到LCD缓冲)



*******************************************************************
飞凌嵌入式近期将推出300万像素摄像头解决方案(用于S3C2440),敬请关注!
www.witech.com.cn

#31


引用 29 楼 xseng526 的回复:
CameraTest.exe是微软提供的测试程序,代码在:C:\WINCE600\PRIVATE\TEST\MULTIMEDIA\DIRECTX\DSHOW\CAMERA, 
如果哪位的大哥的目录下面没有这个源码,那就是你安装的时候,没有选全,要用完全安装


大哥,我的是、WinCE4.2或是WinCE5.0的,好像没有找到你说的PB自带的测试源码阿

#32


现在发现一个问题啊,在两个版本的Camera驱动中,在camera.cpp文件中的CIS_IOControl()函数中,在case CAM_IOCTL_SAMSUNG_PREVIEW_START、case CAM_IOCTL_SAMSUNG_PREVIEW_STOP的分支中,都有这么一个极大的错误语句:

 RETAILMSG(MSG_EN_1,(_T("CAM_IOCTL_SAMSUNG_PREVIEW_START(%x)\r\n"), *pBufOut, DRIVER_PREVIEW_ENABLE)) 


也就是输出语句中,只有一个输出的参数,为啥输出参数表中列有两个呢?而且编译后也没有出错!郁闷的我好几天!

后来也就学会了使用Remote Process Explorer的Crack Address功能定位程序的崩溃地址[http://www.cnblogs.com/singlerace/archive/2009/02/26/1396366.html]。

#33


也就是在
RETAILMSG(MSG_EN_1,(_T("CAM_IOCTL_SAMSUNG_PREVIEW_START(%x)\r\n"),*pBufOut, DRIVER_PREVIEW_ENABLE))
中,前头的输出参数之调用一个,后头的输出参数表就有两个!
编译时有没有出错,到时应用软件一调用,就TMD的就会无情的提示“Data Abort:”,造成崩溃!

#34


你为什么不试试前后都输出两个参数呢  %x,%x    - 》 *pBufOut, DRIVER_PREVIEW_ENABLE
你想看哪个参数就输出哪个参数好了

#35


   现在这个WinCE5.0下使用摄像头抓拍保存图片为JPG格式的小项目,已经基本调通。但是有个问题是,摄像头的输出图像不是很稳定,有时清晰,有时模糊或花屏,不知道具体啥原因,还得继续努力调试!
   
    谢谢大家的热心解答,结贴咯。

#36


楼主,您好,麻烦您给我发一份测试程序吧,我正需要 gaoguilong123@163.com
谢谢了

#37


各位高手,我要找一位摄像头编程的人,哪位有兴趣的话,加我qq:100609509,请注明编程

#38


楼主,您好,麻烦您给我发一份测试程序吧,我正需要 hgg5738@163.com
谢谢了
qq:274571716 正在利用mini2440 做个网络监控摄像头。
//SetKMode(TRUE); 
memmove(DDBdata,(void *)image.rgb_address,width*height*2); 
//SetKMode(FALSE); 

ce6 跑到这了跑不动了 !!

#39


楼主你好!!麻烦您也发一份测试程序给我,我正需要 xcygdut@163.com
谢谢了

#40


http://topic.csdn.net/u/20100624/20/b8ac359f-8f67-4e0d-b4ad-f7e286b6650f.html?seed=1131794121&r=66480818#r_66480818

基于WinCE5.0 +S3C2440中摄像头预览时图像旋转90度的技术疑问

现在想实现在摄像头预览时可以旋转的功能

#41


楼主能给一份程序吗?先谢谢你了!
我的邮箱fujiewudi@163.com

#42


PXA270的EVC摄像头测试程序源码,麻烦各位大侠传一份给我啊!
谢谢啊,不胜感激涕零!!!
邮箱:wfx8421@126.com

#1


在“SMDK2440”这个BSP包中,FILES文件下基本都有CameraTest.exe这个摄像头测试程序,但是具体不太知道怎样使用,请教!

#2


这里估计很少有人会用到你说的那个板子。不过做摄像头的驱动应该是一个比较广的应用。就是流驱动。

#3


www.pudn.com估计有。那里很多东西。

#4


自己写

#5


去买一个他们的板了,反正也不贵。

#6


现在已经把天嵌的2440开发板的摄像头驱动调通了,但是在上层软件那里的怎样控制图片输出格式和抓拍上有问题,继续努力了!

#7


顶你一下。。。

#8


抓拍的话,就是通过read,camera 中的数据,通过添加相应的数据头,保存为bmp,或jpg的图片

#9


我现在不知道怎样把摄像头采集的图像放到我制作的对话框中的Picture Control控件中?
求助!!!

引用 8 楼 sanlybeen 的回复:
抓拍的话,就是通过read,camera 中的数据,通过添加相应的数据头,保存为bmp,或jpg的图片


大哥,能说得更详细些么? 你指的read是用摄像头驱动中提供的XX_OControl()函数提供的功能么?
谢谢了!

#10


引用 9 楼 iwillbeback008 的回复:
 你指的read是用摄像头驱动中提供的XX_OControl()函数提供的功能么? 
谢谢了!

这个得看看驱动中是如何实现的,iocontrol也可以,read也可以的,下面是主要代码你看下,读取的是p-path的rgb数据,如果读c-path的yuv的话还需要转换数据格式
f=ReadFile(hCam,bufOut,pic_size,(LPDWORD)&nBytesRead,NULL);

    BITMAPINFO   RGB16BitsBITMAPINFO;   
    ZeroMemory(&RGB16BitsBITMAPINFO,   sizeof(BITMAPINFO)); 
    RGB16BitsBITMAPINFO.bmiHeader.biSize   =   sizeof(BITMAPINFOHEADER); 
    RGB16BitsBITMAPINFO.bmiHeader.biWidth   =   320; 
    RGB16BitsBITMAPINFO.bmiHeader.biHeight   =   240; 
    RGB16BitsBITMAPINFO.bmiHeader.biPlanes   =   1; 
    RGB16BitsBITMAPINFO.bmiHeader.biBitCount   =   16;
    RGB16BitsBITMAPINFO.bmiHeader.biCompression = BI_BITFIELDS;

//在填充数据 
BITMAPFILEHEADER   bmBITMAPFILEHEADER; 
ZeroMemory(&bmBITMAPFILEHEADER,   sizeof(BITMAPFILEHEADER)); 
bmBITMAPFILEHEADER.bfType   =   0x4d42;     //bmp     
    bmBITMAPFILEHEADER.bfOffBits   =   sizeof(BITMAPFILEHEADER)   +   sizeof(BITMAPINFOHEADER) +16/*调色板结构大小*/; 
    bmBITMAPFILEHEADER.bfSize   =   bmBITMAPFILEHEADER.bfOffBits   +   (pic_size);  
          
     //保存图像数据
//write   bitmap   file   header 
fwrite(&bmBITMAPFILEHEADER, sizeof(BITMAPFILEHEADER), 1, mStream); 
//write   bitmap   info 
fwrite(&(RGB16BitsBITMAPINFO.bmiHeader), sizeof(BITMAPINFOHEADER), 1, mStream); 
//write palette    info
fwrite(&RGB565, 16, 1, mStream);
//write   bitmap   pixels   data 
fwrite(bufOut, pic_size, 1, mStream); 
//close   file 
fclose(mStream); 

#11


谢谢sanlybeen的指点,俺再仔细学习一下你说得
谢谢!

#12


我的2440只有一个三星提供的camtest.exe文件,没有源码。有个PXA270的EVC摄像头测试程序源码,要么

#13


我前些时候做了一个LCD的驱动开发,现在也还没有搞出来,在这一块还真有点难

#14


引用 12 楼 zzqccc 的回复:
我的2440只有一个三星提供的camtest.exe文件,没有源码。有个PXA270的EVC摄像头测试程序源码,要么


三星提供的camtest.exe文件,我也有,已经用来测试摄像头了。
你说的"三星提供的camtest.exe文件",我想要,什么时候方便发给我阿?

#15


我刚才说错了,

是"zzqccc"大哥说的“PXA270的EVC摄像头测试程序源码”,我想要,
请问zzqccc什么时候方便发给我,希望这两天可以么?

#16


源代码发到你邮箱去了,去收邮件吧、。

#17


引用 8 楼 sanlybeen 的回复:
抓拍的话,就是通过read,camera 中的数据,通过添加相应的数据头,保存为bmp,或jpg的图片


    现在的目标是要把抓拍的图形转换成jpg格式保存下来,不知道能否按照你说的方法(10楼),通过添加jpg图片的格式信息直接转换为jpg格式的图片?

    还是要经过bmp转jpg的过程,那有没有bmp转jpg的WinCE下的示例代码?

#18


保存jpg得用到jpeglib这个库文件,你需要找这个库的相关资料,移植这个库,转换就比较容易了。
bmp转成jpg可能也就是几句语句。

#19


在bmp图片转jpg图片的流程上,找到一个例程(带有jpgdll.dll),关键语句如下:
hInst = ::LoadLibrary(_T("jpgdll.dll"));
pFunc = (CHANGE*)::GetProcAddress(hInst,_T("BmpToJpg"));
pFunc(m_strBmp.GetBuffer(50),m_strJpg.GetBuffer(50));
m_strBmp.ReleaseBuffer();
m_strJpg.ReleaseBuffer();
::FreeLibrary(hInst);

#20


但是现在有个问题,就是利用摄像头驱动中的XX_IOControl函数提供的Copy_Cam_Image()函数把RGB格式的图像缓存值拷贝到制定地方时,会出现"Data Abort"异常。
Copy_Cam_Image()函数如下:

void Copy_Cam_Image(U8 *pBufOut, U32 size_x, U32 size_y, U8 port)
{
U8 *buffer_rgb,*pImage;
U32 y;
int temp,pic_size;

  RETAILMSG(MSG_EN_1,(_T("++Copy_Cam_Image().\n"))); //add by Rn 20090330
pic_size = size_x*size_y*2; //this is use 176*144*2
pImage = pBufOut;


{
temp = (s2440CAM->rCIPRSTATUS>>26)&3; //FrameCnt_Pr&3
temp = (temp + 2) % 4;

switch (temp)
{
case 0:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA1; //RGB 1st frame start address for preview DMA
break;
case 1:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA2; //RGB 2st frame start address for preview DMA
break;
case 2:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA3; //RGB 3st frame start address for preview DMA
break;
case 3:
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA4; //RGB 4st frame start address for preview DMA
break;
default :
buffer_rgb = (U8 *)s2440CAM->rCIPRCLRSA1;
break;
}

}

RETAILMSG(MSG_EN_1,(_T("Copy_Cam_Image:temp is %d.\r\n"), temp)); //add by Rn 20090330

//出现“”异常的代码锁定为以下红色字体部分
#if (DOTNET_DRIVER)    //文件开头有定义(#define DOTNET_DRIVER 1 // 0:PPC, 1:CE.NET)
     SetKMode(TRUE);
#endif
buffer_rgb += VIRTUAL_OFFSET; //VIRTUAL_OFFSET=0x7C000000~camif.h

        memcpy(pImage, buffer_rgb, pic_size); //pImage=pBufOut;pic_size = size_x*size_y*2;

#if (DOTNET_DRIVER)
     SetKMode(FALSE);
#endif

RETAILMSG(MSG_EN_1,(_T("--Copy_Cam_Image().\n"))); //add by Rn 20090330
}


串口调试得到的异常信息如下:
Data Abort: Thread=8f9f02b4 Proc=8db96160 'device.exe'
AKY=00000045 PC=03fc3ac8(coredll.dll+0x00053ac8) RA=028630e8(camera.dll+0x000030e8) BVA=06000000 FSR=00000007
RaiseException: Thread=8f9f02b4 Proc=8db96160 'device.exe'
AKY=00000045 PC=03f8dff4(coredll.dll+0x0001dff4) RA=8c22a61c(NK.EXE+0x0002a61c) BVA=00000003 FSR=00000003
Data Abort: Thread=8f9f02b4 Proc=8db96520 'OV9650Test.exe'
AKY=00000041 PC=03f929f4(coredll.dll+0x000229f4) RA=50616548(???+0x50616548) BVA=0e000051 FSR=00000003


请教各位高手!谢谢

#21


//出现“异常”的代码锁定为以下部分:

#if (DOTNET_DRIVER)    //文件开头有定义(#define DOTNET_DRIVER 1 // 0:PPC, 1:CE.NET)
     SetKMode(TRUE);
#endif
       buffer_rgb += VIRTUAL_OFFSET;    //VIRTUAL_OFFSET=0x7C000000~camif.h
    
        memcpy(pImage, buffer_rgb, pic_size);    //pImage=pBufOut;pic_size = size_x*size_y*2;

#if (DOTNET_DRIVER)
     SetKMode(FALSE);

#22


你用pb的远程调试工具检查内存,看看出现异常时,内存的状况,可能是内存不足了。

#23


我现在这个系统不能使用PB的远程调试工具,用开发板公司的系统就是郁闷,现在有没有时间去自己做系统。
我现在把 memcpy()函数换成memmove()函数:


memcpy(pImage, buffer_rgb, pic_size);    //pImage=pBufOut;pic_size = size_x*size_y*2;


换成:

memmove(pImage, buffer_rgb, pic_size);  //pImage=pBufOut;pic_size = size_x*size_y*2;


问题还是出现,奇怪了!

怎么办?

#24


我也是怀疑pImage和buffer_rgb地址上有重叠,说一改用memmove()函数。

还是想看看 :立宇泰电子公司的新版2440配套光盘中有:“ARMSYS2440随盘提供的“WINCE应用程序实例”加入了摄像头应用程序,cameratestV1.2。具备了预览显示和图像抓取(保存为BMP)两项功能。” 

#25


小弟想要270 摄像头测试的源码学习,发下好吗?
kukusamuel@sina.com
谢了。。

#26


引用 25 楼 xiaolong666 的回复:
小弟想要270 摄像头测试的源码学习,发下好吗? 
kukusamuel@sina.com 
谢了。。

好,发到你邮箱了。

#27


自己再顶一下

#28


偶也想要那个源码,谢谢发给我一份。 michael_business@126.com

#29


CameraTest.exe是微软提供的测试程序,代码在:C:\WINCE600\PRIVATE\TEST\MULTIMEDIA\DIRECTX\DSHOW\CAMERA,
如果哪位的大哥的目录下面没有这个源码,那就是你安装的时候,没有选全,要用完全安装

#30


自己做就行了,主要就是先读到CAMERA缓冲区的数据(一开始可以读P通道的,直接就是RGB565格式的数据),然后创建一副图片并填充一下图片头信息,再把从CAMERA读到的RGB565数据放进去就行了;C通道的YUV格式转换起来会稍微麻烦一些。
至于预览功能,应该驱动中实现的(摄像头驱动内部应该有个线程,开始采集后会自动把P通道数据拷贝到LCD缓冲)



*******************************************************************
飞凌嵌入式近期将推出300万像素摄像头解决方案(用于S3C2440),敬请关注!
www.witech.com.cn

#31


引用 29 楼 xseng526 的回复:
CameraTest.exe是微软提供的测试程序,代码在:C:\WINCE600\PRIVATE\TEST\MULTIMEDIA\DIRECTX\DSHOW\CAMERA, 
如果哪位的大哥的目录下面没有这个源码,那就是你安装的时候,没有选全,要用完全安装


大哥,我的是、WinCE4.2或是WinCE5.0的,好像没有找到你说的PB自带的测试源码阿

#32


现在发现一个问题啊,在两个版本的Camera驱动中,在camera.cpp文件中的CIS_IOControl()函数中,在case CAM_IOCTL_SAMSUNG_PREVIEW_START、case CAM_IOCTL_SAMSUNG_PREVIEW_STOP的分支中,都有这么一个极大的错误语句:

 RETAILMSG(MSG_EN_1,(_T("CAM_IOCTL_SAMSUNG_PREVIEW_START(%x)\r\n"), *pBufOut, DRIVER_PREVIEW_ENABLE)) 


也就是输出语句中,只有一个输出的参数,为啥输出参数表中列有两个呢?而且编译后也没有出错!郁闷的我好几天!

后来也就学会了使用Remote Process Explorer的Crack Address功能定位程序的崩溃地址[http://www.cnblogs.com/singlerace/archive/2009/02/26/1396366.html]。

#33


也就是在
RETAILMSG(MSG_EN_1,(_T("CAM_IOCTL_SAMSUNG_PREVIEW_START(%x)\r\n"),*pBufOut, DRIVER_PREVIEW_ENABLE))
中,前头的输出参数之调用一个,后头的输出参数表就有两个!
编译时有没有出错,到时应用软件一调用,就TMD的就会无情的提示“Data Abort:”,造成崩溃!

#34


你为什么不试试前后都输出两个参数呢  %x,%x    - 》 *pBufOut, DRIVER_PREVIEW_ENABLE
你想看哪个参数就输出哪个参数好了

#35


   现在这个WinCE5.0下使用摄像头抓拍保存图片为JPG格式的小项目,已经基本调通。但是有个问题是,摄像头的输出图像不是很稳定,有时清晰,有时模糊或花屏,不知道具体啥原因,还得继续努力调试!
   
    谢谢大家的热心解答,结贴咯。

#36


楼主,您好,麻烦您给我发一份测试程序吧,我正需要 gaoguilong123@163.com
谢谢了

#37


各位高手,我要找一位摄像头编程的人,哪位有兴趣的话,加我qq:100609509,请注明编程

#38


楼主,您好,麻烦您给我发一份测试程序吧,我正需要 hgg5738@163.com
谢谢了
qq:274571716 正在利用mini2440 做个网络监控摄像头。
//SetKMode(TRUE); 
memmove(DDBdata,(void *)image.rgb_address,width*height*2); 
//SetKMode(FALSE); 

ce6 跑到这了跑不动了 !!

#39


楼主你好!!麻烦您也发一份测试程序给我,我正需要 xcygdut@163.com
谢谢了

#40


http://topic.csdn.net/u/20100624/20/b8ac359f-8f67-4e0d-b4ad-f7e286b6650f.html?seed=1131794121&r=66480818#r_66480818

基于WinCE5.0 +S3C2440中摄像头预览时图像旋转90度的技术疑问

现在想实现在摄像头预览时可以旋转的功能

#41


楼主能给一份程序吗?先谢谢你了!
我的邮箱fujiewudi@163.com

#42


PXA270的EVC摄像头测试程序源码,麻烦各位大侠传一份给我啊!
谢谢啊,不胜感激涕零!!!
邮箱:wfx8421@126.com