问题描述
我尝试从WIA 2.0,C#,.NET 4.0在Windows 7一个摄像头我尝试了许多不同的样品拍照,但没有任何工程。我总是得到这样的异常:收到COMException了未处理从HRESULT异常: 0x80210015
的代码是 WIA_S_NO_DEVICE_AVAILABLE
我。检查,如果WIA-Service正在运行,如果凸轮在扫描仪和照相机显示出来。我不知道什么是错在这里!任何人可以帮助?
I try to take a picture from a webcam with WIA 2.0, C#, .net 4.0 on Windows 7. I tried many different samples, but nothing works. I always get this Exception: "ComException was unhandled" Exception from HRESULT: 0x80210015
". The code is WIA_S_NO_DEVICE_AVAILABLE
. I checked, if WIA-Service is running and if the cam shows up in Scanners and Camera. I have no idea whats wrong here! Can anybody help?
抛出异常的该行:
装置D = class1.ShowSelectDevice(WiaDeviceType.CameraDeviceType,真,假);
下面的代码
string DeviceID;
const string wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
const string wiaFormatPNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}";
const string wiaFormatGIF = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}";
const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
const string wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}";
class WIA_DPS_DOCUMENT_HANDLING_SELECT
{
public const uint FEEDER = 0x00000001;
public const uint FLATBED = 0x00000002;
}
class WIA_DPS_DOCUMENT_HANDLING_STATUS
{
public const uint FEED_READY = 0x00000001;
}
class WIA_PROPERTIES
{
public const uint WIA_RESERVED_FOR_NEW_PROPS = 1024;
public const uint WIA_DIP_FIRST = 2;
public const uint WIA_DPA_FIRST = WIA_DIP_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
public const uint WIA_DPC_FIRST = WIA_DPA_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
//
// Scanner only device properties (DPS)
//
public const uint WIA_DPS_FIRST = WIA_DPC_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
public const uint WIA_DPS_DOCUMENT_HANDLING_STATUS = WIA_DPS_FIRST + 13;
public const uint WIA_DPS_DOCUMENT_HANDLING_SELECT = WIA_DPS_FIRST + 14;
}
class WIA_ERRORS
{
public const uint BASE_VAL_WIA_ERROR = 0x80210000;
public const uint WIA_ERROR_PAPER_EMPTY = BASE_VAL_WIA_ERROR + 3;
}
public void ADFScan()
{
//Choose Scanner
CommonDialogClass class1 = new CommonDialogClass();
Device d = class1.ShowSelectDevice(WiaDeviceType.CameraDeviceType, true, false);
if (d != null)
{
this.DeviceID = d.DeviceID;
}
else
{
//no scanner chosen
return;
}
WIA.CommonDialog WiaCommonDialog = new CommonDialogClass();
bool hasMorePages = true;
int x = 0;
int numPages = 0;
while (hasMorePages)
{
//Create DeviceManager
DeviceManager manager = new DeviceManagerClass();
Device WiaDev = null;
foreach (DeviceInfo info in manager.DeviceInfos)
{
if (info.DeviceID == this.DeviceID)
{
WIA.Properties infoprop = null;
infoprop = info.Properties;
//connect to scanner
WiaDev = info.Connect();
break;
}
}
//Start Scan
WIA.ImageFile img = null;
WIA.Item Item = WiaDev.Items[1] as WIA.Item;
try
{
img = (ImageFile)WiaCommonDialog.ShowTransfer(Item, wiaFormatJPEG, false);
//process image:
//one would do image processing here
//
//Save to file
string varImageFileName = "c:\\test" + x.ToString() + ".jpg";
if (File.Exists(varImageFileName))
{
//file exists, delete it
File.Delete(varImageFileName);
}
img.SaveFile(varImageFileName);
numPages++;
img = null;
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
finally
{
Item = null;
//determine if there are any more pages waiting
Property documentHandlingSelect = null;
Property documentHandlingStatus = null;
foreach (Property prop in WiaDev.Properties)
{
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
documentHandlingSelect = prop;
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
documentHandlingStatus = prop;
}
hasMorePages = false; //assume there are no more pages
if (documentHandlingSelect != null)
//may not exist on flatbed scanner but required for feeder
{
//check for document feeder
if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
{
hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
}
}
x++;
}
}
}
谢谢任何帮助!
Thanks for any help!
推荐答案
这是来自微软的非记录错误的典型例子...的错误代码只是意味着没有设备被发现了,要么不接或不WIA认可。
This is a typical example of non-documented error from Microsoft... The error code simply means that no device has been found, either not connected or not-WIA recognized.
这篇关于摄像机捕捉WIA,C#和Win 7的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!