问题描述
我在网上下截了一个生成解析二维码的源码,在某些电脑上可以正常运行,但是在win8系统的平板电脑上就不能正常使用,在调用摄像头的时候,摄像头的指示灯都没亮。求大神帮忙解决……
解决方案
解决方案二:
是不是少framework
解决方案三:
不同的系统,不同的电脑,驱动也不一样。
解决方案四:
我使用的是C#的WinForm开发界面。只是调用API连接摄像头,不应该存在驱动不一样的问题,平板电脑本身是可以拍照的。而framework不是WinForm的吧,应该是xaml的。
解决方案五:
贴码
解决方案六:
你的api的问题吧,能够正常连接说明连接那块儿没有问题,就是图像获取的时候出错了
解决方案七:
button开始调用摄像头privatevoidbutton2_Click(objectsender,EventArgse){_doCount=0;_directory=Path.Combine(Application.StartupPath,"temp");if(Directory.Exists(_directory)){varfiles=Directory.GetFiles(_directory);for(inti=0;i<files.Length;i++){File.Delete(files[i]);}}else{Directory.CreateDirectory(_directory);}//_camWorker=newCamWorker(panel1.Handle,0,0,panel1.Width,panel1.Height);_camWorker=newCamWorker(panel1.Handle,10,10,this.panel1.Width,this.panel1.Height);_camWorker.Start();_labelStatus.Text="Cameramisworking...";if(_timer!=null&&_timer.Enabled){_timer.Stop();_timer.Dispose();}_timer=newSystem.Timers.Timer(1000);_timer.Start();_timer.Elapsed+=newSystem.Timers.ElapsedEventHandler(_timer_Elapsed);}调用的类usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.InteropServices;namespaceGZBC{publicclassCamWorker{privateconstintWM_USER=0x400;privateconstintWS_CHILD=0x40000000;privateconstintWS_VISIBLE=0x10000000;privateconstintWM_CAP_START=WM_USER;privateconstintWM_CAP_STOP=WM_CAP_START+68;privateconstintWM_CAP_DRIVER_CONNECT=WM_CAP_START+10;privateconstintWM_CAP_DRIVER_DISCONNECT=WM_CAP_START+11;privateconstintWM_CAP_SAVEDIB=WM_CAP_START+25;privateconstintWM_CAP_GRAB_FRAME=WM_CAP_START+60;privateconstintWM_CAP_SEQUENCE=WM_CAP_START+62;privateconstintWM_CAP_FILE_SET_CAPTURE_FILEA=WM_CAP_START+20;privateconstintWM_CAP_SEQUENCE_NOFILE=WM_CAP_START+63;privateconstintWM_CAP_SET_OVERLAY=WM_CAP_START+51;privateconstintWM_CAP_SET_PREVIEW=WM_CAP_START+50;privateconstintWM_CAP_SET_CALLBACK_VIDEOSTREAM=WM_CAP_START+6;privateconstintWM_CAP_SET_CALLBACK_ERROR=WM_CAP_START+2;privateconstintWM_CAP_SET_CALLBACK_STATUSA=WM_CAP_START+3;privateconstintWM_CAP_SET_CALLBACK_FRAME=WM_CAP_START+5;privateconstintWM_CAP_SET_SCALE=WM_CAP_START+53;privateconstintWM_CAP_SET_PREVIEWRATE=WM_CAP_START+52;privateIntPtrhWndC;privateboolbWorkStart=false;privateIntPtrmControlPtr;privateintmWidth;privateintmHeight;privateintmLeft;privateintmTop;///<summary>///初始化显示图像///</summary>///<paramname=“handle“>控件的句柄</param>///<paramname=“left“>开始显示的左边距</param>///<paramname=“top“>开始显示的上边距</param>///<paramname=“width“>要显示的宽度</param>///<paramname=“height“>要显示的长度</param>publicCamWorker(IntPtrhandle,intleft,inttop,intwidth,intheight){mControlPtr=handle;mWidth=width;mHeight=height;mLeft=left;mTop=top;}[DllImport("avicap32.dll")]privatestaticexternIntPtrcapCreateCaptureWindowA(byte[]lpszWindowName,intdwStyle,intx,inty,intnWidth,intnHeight,IntPtrhWndParent,intnID);[DllImport("avicap32.dll")]privatestaticexternintcapGetVideoFormat(IntPtrhWnd,IntPtrpsVideoFormat,intwSize);////这里特别注意,因为WinAPI中的long为32位,而C#中的long为64wei,所以需要将lParam该为int//[DllImport("User32.dll")]privatestaticexternboolSendMessage(IntPtrhWnd,intwMsg,intwParam,intlParam);///<summary>///开始显示图像///</summary>publicvoidStart(){if(bWorkStart)return;bWorkStart=true;byte[]lpszName=newbyte[100];hWndC=capCreateCaptureWindowA(lpszName,WS_CHILD|WS_VISIBLE,mLeft,mTop,mWidth,mHeight,mControlPtr,0);if(hWndC.ToInt32()!=0){SendMessage(hWndC,WM_CAP_SET_CALLBACK_VIDEOSTREAM,0,0);SendMessage(hWndC,WM_CAP_SET_CALLBACK_ERROR,0,0);SendMessage(hWndC,WM_CAP_SET_CALLBACK_STATUSA,0,0);SendMessage(hWndC,WM_CAP_DRIVER_CONNECT,0,0);SendMessage(hWndC,WM_CAP_SET_SCALE,1,0);SendMessage(hWndC,WM_CAP_SET_PREVIEWRATE,66,0);SendMessage(hWndC,WM_CAP_SET_OVERLAY,1,0);SendMessage(hWndC,WM_CAP_SET_PREVIEW,1,0);//Global.log.Write(“SendMessage“);}return;}///<summary>///停止显示///</summary>publicvoidStop(){SendMessage(hWndC,WM_CAP_DRIVER_DISCONNECT,0,0);bWorkStart=false;}///<summary>///抓图///</summary>///<paramname=“path“>要保存bmp文件的路径</param>publicvoidGrabImage(stringpath){IntPtrhBmp=Marshal.StringToHGlobalAnsi(path);SendMessage(hWndC,WM_CAP_SAVEDIB,0,hBmp.ToInt32());}}}
解决方案八:
顶上来。求大神……
解决方案九:
不想看源码了,楼主你确定没打错字,开场先说是“在网上下截了一个生成解析二维码的源码”,后面提问居然是调用摄像头。。。
解决方案十:
可它里面有调用摄像头扫描二维码的功能啊,就是扫描二维码的picturebox的地方是黑屏的,所以才解决。运行在win8的系统上。
解决方案十一:
最后有没有解决的?
解决方案十二:
VFW调用摄像头与驱动有很大关系,不是所有的驱动都行的,特别是中星微的通用驱动经常不好使
解决方案十三:
楼主可否发来源码一看419125816@qq.com。
解决方案十四:
解决方案十五:
楼主我也遇到了同样的问题,您处理好了没有