|
本帖最后由 darkcross007 于 2010-4-11 00:06 编辑
*******************************************************
typedef struct PINGPONG_PR
{
unsigned int rgb_address;
unsigned char flag;
} PINGPONG_PR;
struct PINGPONG_PR bTemp;
void COV9650_TestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
WORD width=GetSystemMetrics(SM_CXSCREEN);
WORD height=GetSystemMetrics(SM_CYSCREEN);
BYTE* DDBdata=new BYTE[width*height*2];
DWORD actlen;
CString filename = _T("cc1.txt");
hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
//MessageBox(_T(" done1"));
SetFilePointer(hFile, 0, NULL, FILE_END);
BYTE test_1=(BYTE)0;
DeviceIoControl(hCam,IOCTL_CAM_COPY,&test_1,1,&bTemp,sizeof(PINGPONG_PR) ,NULL,NULL);
//SetKMode(TRUE); 这里有疑问
memcpy(DDBdata,(void *)bTemp.rgb_address,width*height*2);
//这里有疑问
//SetKMode(FALSE); 这里有疑问
WriteFile(hFile, DDBdata, width*height*2, &actlen, NULL);
Sleep(1000);
MessageBox(_T(" 录像完成 !"));
delete []DDBdata;
}
*******************************************************
整个程序的框架使用的是贵公司的ov9650-test的那个,再这个基础上增加了以上代码。
借鉴了网上许多代码,最后整理的代码……
但是在vs2005平台上出现如下几个问题:
1.SetKMode(TRUE); 和SetKMode(FALSE); 这两个内核模式调用函数无法使用,不知道是不是我遗漏了什么。
2.memcpy(DDBdata,(void *)image.rgb_address,width*height*2); 这条语句根本无法实现,注销掉的话是可以正常生成一个txt的,但是内部只有00,没有其他的,大小为150KB……感觉上可能是内存空间上使用不当的说,但是完全不会下手……
3.还有copy(代号貌似是6的那个)控制字使用前是否还有什么前期约束,以及默认采出的分辨是多少之类的问题。
谢谢,大大们了,卡在这个问题上很久了…… |
|