小弟最近在学习流媒体的问题,第一步想打开ov9650的预览问题,按照TQ的源码在EVC下写了一个程序,编译通过,就是显示不出来,请问大家是什么问题呢,
我认为,打开摄像头无非就是打开设备句柄---再利用DeviceIocontrol 打开摄像头,所以我觉得问题肯定出现在这里,现在粘贴程序如下:
1. 初始化函数:
// TODO: Add extra initialization here
int rc = 0;
hCam = CreateFile (TEXT("CIS1:"),GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);//打开设备句柄
if (hCam == INVALID_HANDLE_VALUE)
{
rc = GetLastError();
printf ("can't open file rc = %d\r\n", rc);
AfxMessageBox(_T("无法打开设备!请检查设备是否已被占用。"));
}
BOOL ret;
ret = DeviceIoControl(hCam,IOCTL_CAM_GETINFO,NULL,0,NULL,0,NULL,NULL); //获取摄像头信息
if(!ret)
AfxMessageBox(_T("获取信息失败!"));
ret = DeviceIoControl(hCam,IOCTL_CAM_HIDE,NULL,0,NULL,0,NULL,NULL); //隐藏信息
if(!ret)
AfxMessageBox(_T("隐藏信息失败!"));
ret = DeviceIoControl(hCam,IOCTL_CAM_SETCOLKEY,NULL,16,NULL,0,NULL,NULL); //获取颜色信息
if(!ret)
AfxMessageBox(_T("隐藏信息失败!"));
// TODO: 在此添加额外的初始化代码
m_isPlay=FALSE; //开机未播放,故设定为0
return TRUE; // return TRUE unless you set the focus to a control
2.打开预览函数:
void COv9650testDlg::Play()
{
BOOL ret;
ret = DeviceIoControl(hCam,CAM_IOCTL_SAMSUNG_PREVIEW_START,NULL,0,NULL,0,NULL,NULL); //启动预览功能
if(!ret)
AfxMessageBox(_T("启动预览失败!"));
ret = DeviceIoControl(hCam,IOCTL_CAM_CONT,NULL,0,NULL,0,NULL,NULL); //开始播放
if(!ret)
AfxMessageBox(_T("启动播放失败!"));
}
问题肯定出现在两个函数中,到底是什么问题呢,请教各位了!