/* Queries the number of available devices and creates a list with device data. */ public static List <Device> EnumerateDevices() { /* Create a list for the device data. */ List <Device> list = new List <Device>(); /* Enumerate all camera devices. You must call * PylonEnumerateDevices() before creating a device. */ uint count = Pylon.EnumerateDevices(); /* Get device data from all devices. */ for (uint i = 0; i < count; ++i) { /* Create a new data packet. */ Device device = new Device(); /* Get the device info handle of the device. */ PYLON_DEVICE_INFO_HANDLE hDi = Pylon.GetDeviceInfoHandle(i); /* Get the name. */ device.Name = Pylon.DeviceInfoGetPropertyValueByName(hDi, Pylon.cPylonDeviceInfoFriendlyNameKey); /* Get the serial number */ device.FullName = Pylon.DeviceInfoGetPropertyValueByName(hDi, Pylon.cPylonDeviceInfoFullNameKey); /* Set the index. */ device.Index = i; /* Create tooltip */ string tooltip = ""; uint propertyCount = Pylon.DeviceInfoGetNumProperties(hDi); if (propertyCount > 0) { for (uint j = 0; j < propertyCount; j++) { tooltip += Pylon.DeviceInfoGetPropertyName(hDi, j) + ": " + Pylon.DeviceInfoGetPropertyValueByIndex(hDi, j); if (j != propertyCount - 1) { tooltip += "\n"; } } } device.Tooltip = tooltip; /* Add to the list. */ list.Add(device); } return(list); }
public void cameraInit(string cameraType) { //Initiates camera to run in 12 bit mode with continuous acquisition. int i = 0; uint NUM_BUFFERS = 10; if (cameraType == "basler") { Pylon.Initialize(); numDevices = Pylon.EnumerateDevices(); if (ConfigurationManager.AppSettings.Get("ipAddress").Length > 0) { while (ip != ConfigurationManager.AppSettings.Get("ipAddress")) { hDev = Pylon.CreateDeviceByIndex(j); prop = Pylon.DeviceGetDeviceInfoHandle(hDev); ip = Pylon.DeviceInfoGetPropertyValueByIndex(prop, 8); j++; if (j > numDevices) { break; } } } else { numDevices = Pylon.EnumerateDevices(); hDev = Pylon.CreateDeviceByIndex(0); } try { Pylon.DeviceOpen(hDev, Pylon.cPylonAccessModeControl | Pylon.cPylonAccessModeStream); } catch (System.Threading.ThreadAbortException) { } catch (Exception ex) { EmailError.emailAlert(ex); throw (ex); } isAvail = Pylon.DeviceFeatureIsAvailable(hDev, "EnumEntry_PixelFormat_Mono12"); Pylon.DeviceFeatureFromString(hDev, "PixelFormat", "Mono12"); Pylon.DeviceFeatureFromString(hDev, "AcquisitionMode", "Continuous"); Pylon.DeviceSetIntegerFeature(hDev, "Height", 1); Pylon.DeviceSetFloatFeature(hDev, "ExposureTimeAbs", exp); //Exposure time is in microseconds and rounded to the closest 100 ns. isAvail = Pylon.DeviceFeatureIsWritable(hDev, "GevSCPSPacketSize"); if (isAvail) { Pylon.DeviceSetIntegerFeature(hDev, "GevSCPSPacketSize", 1500); } payloadSize = checked ((uint)Pylon.DeviceGetIntegerFeature(hDev, "PayloadSize")); nStreams = Pylon.DeviceGetNumStreamGrabberChannels(hDev); hGrabber = Pylon.DeviceGetStreamGrabber(hDev, 0); Pylon.StreamGrabberOpen(hGrabber); hWait = Pylon.StreamGrabberGetWaitObject(hGrabber); Pylon.StreamGrabberSetMaxNumBuffer(hGrabber, NUM_BUFFERS); Pylon.StreamGrabberSetMaxBufferSize(hGrabber, payloadSize); Pylon.StreamGrabberPrepareGrab(hGrabber); buffers = new Dictionary <PYLON_STREAMBUFFER_HANDLE, PylonBuffer <Byte> >(); for (i = 0; i < NUM_BUFFERS; ++i) { PylonBuffer <Byte> buffer = new PylonBuffer <byte>(payloadSize, true); PYLON_STREAMBUFFER_HANDLE handle = Pylon.StreamGrabberRegisterBuffer(hGrabber, ref buffer); buffers.Add(handle, buffer); } i = 0; foreach (KeyValuePair <PYLON_STREAMBUFFER_HANDLE, PylonBuffer <Byte> > pair in buffers) { Pylon.StreamGrabberQueueBuffer(hGrabber, pair.Key, i++); } Pylon.DeviceExecuteCommandFeature(hDev, "AcquisitionStart"); } }