void AcquisitionStart() { Helpers.Log.LogThisInfo("DEVICE PARAMETER SETUP\n"); Helpers.Log.LogThisInfo("######################\n\n"); IsProcessing = true; try { //SET TRIGGER MODE OFF (FreeRun) Helpers.Log.LogThisInfo(" TriggerMode: {0}\n", (string)mDevice.RemoteNodeList["TriggerMode"].Value); if (Parameters.TriggerMode) { mDevice.RemoteNodeList["TriggerMode"].Value = "On"; mDevice.RemoteNodeList["LineSelector"].Value = "Line1"; mDevice.RemoteNodeList["TriggerSource"].Value = "All"; //Or Line0 mDevice.RemoteNodeList["LineSelector"].Value = "Line1"; mDevice.RemoteNodeList["LineSource"].Value = "Line0"; mDevice.RemoteNodeList["LineInverter"].Value = false; mDevice.RemoteNodeList["UserOutputValue"].Value = true; mDevice.RemoteNodeList["TriggerDelay"].Value = (double)Parameters.TriggerDelay; } else { mDevice.RemoteNodeList["TriggerMode"].Value = "Off"; mDevice.RemoteNodeList["LineInverter"].Value = false; } if (mDevice.GetRemoteNodeList().GetNodePresent("ExposureTime")) { sExposureNodeName = "ExposureTime"; } else if (mDevice.GetRemoteNodeList().GetNodePresent("ExposureTimeAbs")) { sExposureNodeName = "ExposureTimeAbs"; } //get current value and limits //Parameters.ExposureValue = (double)mDevice.RemoteNodeList[sExposureNodeName].Value; Parameters.ExposureMin = (double)mDevice.RemoteNodeList[sExposureNodeName].Min; Parameters.ExposureMax = (double)mDevice.RemoteNodeList[sExposureNodeName].Max; if (Parameters.ExposureValue < Parameters.ExposureMin) { Parameters.ExposureValue = Parameters.ExposureMin; } if (Parameters.ExposureValue > Parameters.ExposureMax) { Parameters.ExposureValue = Parameters.ExposureMax; } mDevice.RemoteNodeList[sExposureNodeName].Value = Parameters.ExposureValue; Helpers.Log.LogThisInfo(" ==>Line Selector: {0}\n ==>Trigger Source: {1}\n ==>Line Source: {2}\n ==>Line Inverter: {3}\n", mDevice.RemoteNodeList["LineSelector"].Value, mDevice.RemoteNodeList["TriggerSource"].Value, mDevice.RemoteNodeList["LineSource"].Value, mDevice.RemoteNodeList["Line Inverter"].Value); } catch (BGAPI2.Exceptions.IException ex) { Helpers.Log.LogThisInfo("ExceptionType: {0} \n", ex.GetType()); Helpers.Log.LogThisInfo("ErrorDescription: {0} \n", ex.GetErrorDescription()); Helpers.Log.LogThisInfo("in function: {0} \n", ex.GetFunctionName()); } Helpers.Log.LogThisInfo("DATA STREAM LIST\n"); Helpers.Log.LogThisInfo("################\n\n"); try { //COUNTING AVAILABLE DATASTREAMS datastreamList = mDevice.DataStreams; datastreamList.Refresh(); //Helpers.Log.LogThisInfo("5.1.8 Detected datastreams: {0}\n", datastreamList.Count); ////DATASTREAM INFORMATION BEFORE OPENING //foreach (KeyValuePair<string, BGAPI2.DataStream> dst_pair in datastreamList) //{ // Helpers.Log.LogThisInfo(" 5.2.4 DataStream ID: {0}\n\n", dst_pair.Key); //} } catch (BGAPI2.Exceptions.IException ex) { Helpers.Log.LogThisInfo("ExceptionType: {0} \n", ex.GetType()); Helpers.Log.LogThisInfo("ErrorDescription: {0} \n", ex.GetErrorDescription()); Helpers.Log.LogThisInfo("in function: {0} \n", ex.GetFunctionName()); } Helpers.Log.LogThisInfo("DATA STREAM\n"); Helpers.Log.LogThisInfo("###########\n\n"); //OPEN THE FIRST DATASTREAM IN THE LIST try { foreach (KeyValuePair <string, BGAPI2.DataStream> dst_pair in datastreamList) { Helpers.Log.LogThisInfo("5.1.9 Open first datastream \n"); Helpers.Log.LogThisInfo(" DataStream ID: {0}\n\n", dst_pair.Key); //if (dst_pair.Value.IsOpen || dst_pair.Value.IsGrabbing ) //{ if (mDevice.RemoteNodeList.GetNodePresent("AcquisitionAbort") == true) { mDevice.RemoteNodeList["AcquisitionAbort"].Execute(); Helpers.Log.LogThisInfo("5.1.12 {0} aborted\n", mDevice.Model); } mDevice.RemoteNodeList["AcquisitionStop"].Execute(); //dst_pair.Value.Close(); System.Threading.Thread.Sleep(50); //} dst_pair.Value.Open(); sDataStreamID = dst_pair.Key; Helpers.Log.LogThisInfo(" Opened datastream - NodeList Information \n"); Helpers.Log.LogThisInfo(" StreamAnnounceBufferMinimum: {0}\n", dst_pair.Value.NodeList["StreamAnnounceBufferMinimum"].Value); if (dst_pair.Value.TLType == "GEV") { Helpers.Log.LogThisInfo(" StreamDriverModel: {0}\n", dst_pair.Value.NodeList["StreamDriverModel"].Value); } Helpers.Log.LogThisInfo(" \n"); break; } } catch (BGAPI2.Exceptions.IException ex) { Helpers.Log.LogThisInfo("ExceptionType: {0} \n", ex.GetType()); Helpers.Log.LogThisInfo("ErrorDescription: {0} \n", ex.GetErrorDescription()); Helpers.Log.LogThisInfo("in function: {0} \n", ex.GetFunctionName()); } if (sDataStreamID == "") { Helpers.Log.LogThisInfo(" No DataStream found \n"); Helpers.Log.LogThisInfo("\nEnd\nInput any number to close the program:\n"); //Console.Read(); mDevice.Close(); mInterface.Close(); mSystem.Close(); IsProcessing = false; return; } else { mDataStream = datastreamList[sDataStreamID]; } Helpers.Log.LogThisInfo("BUFFER LIST\n"); Helpers.Log.LogThisInfo("###########\n\n"); try { //BufferList bufferList = mDataStream.BufferList; // 4 buffers using internal buffer mode for (int i = 0; i < InternalBufferCount; i++) { mBuffer = new BGAPI2.Buffer(); bufferList.Add(mBuffer); mBuffer.QueueBuffer(); } Helpers.Log.LogThisInfo("5.1.10 Announced buffers: {0} using {1} [bytes]\n", bufferList.AnnouncedCount, mBuffer.MemSize * bufferList.AnnouncedCount); } catch (BGAPI2.Exceptions.IException ex) { Helpers.Log.LogThisInfo("ExceptionType: {0} \n", ex.GetType()); Helpers.Log.LogThisInfo("ErrorDescription: {0} \n", ex.GetErrorDescription()); Helpers.Log.LogThisInfo("in function: {0} \n", ex.GetFunctionName()); } Helpers.Log.LogThisInfo("\n"); Helpers.Log.LogThisInfo("CAMERA START\n"); Helpers.Log.LogThisInfo("############\n\n"); mDataStream.RegisterNewBufferEvent(BGAPI2.Events.EventMode.EVENT_HANDLER); System.Console.Write(" Register Event Mode to: {0}\n\n", mDataStream.EventMode.ToString()); mDataStream.NewBufferEvent += new BGAPI2.Events.DataStreamEventControl.NewBufferEventHandler(mDataStream_NewBufferEvent); //START DATASTREAM ACQUISITION try { mDataStream.StartAcquisition(); Helpers.Log.LogThisInfo("5.1.12 DataStream started \n"); } catch (BGAPI2.Exceptions.IException ex) { Helpers.Log.LogThisInfo("ExceptionType: {0} \n", ex.GetType()); Helpers.Log.LogThisInfo("ErrorDescription: {0} \n", ex.GetErrorDescription()); Helpers.Log.LogThisInfo("in function: {0} \n", ex.GetFunctionName()); } //START CAMERA try { mDevice.RemoteNodeList["AcquisitionStart"].Execute(); Helpers.Log.LogThisInfo("5.1.12 {0} started \n", mDevice.Model); } catch (BGAPI2.Exceptions.IException ex) { Helpers.Log.LogThisInfo("ExceptionType: {0} \n", ex.GetType()); Helpers.Log.LogThisInfo("ErrorDescription: {0} \n", ex.GetErrorDescription()); Helpers.Log.LogThisInfo("in function: {0} \n", ex.GetFunctionName()); } Status = BaumerStatus.Ready; }
/// <summary> /// Open a specific device and allocate buffers. /// </summary> public bool Open(string systemKey, string interfaceKey, string deviceKey) { Close(); try { // Look for the device. SystemList systemList = SystemList.Instance; systemList.Refresh(); foreach (KeyValuePair <string, BGAPI2.System> systemPair in systemList) { if (systemPair.Key != systemKey) { continue; } system = systemPair.Value; if (!system.IsOpen) { system.Open(); } break; } if (system == null || !system.IsOpen) { return(false); } system.Interfaces.Refresh(100); foreach (KeyValuePair <string, BGAPI2.Interface> interfacePair in system.Interfaces) { if (interfacePair.Key != interfaceKey) { continue; } interf = interfacePair.Value; if (!interf.IsOpen) { interf.Open(); } break; } if (interf == null || !interf.IsOpen) { return(false); } interf.Devices.Refresh(100); foreach (KeyValuePair <string, BGAPI2.Device> devicePair in interf.Devices) { if (devicePair.Key != deviceKey) { continue; } device = devicePair.Value; if (!device.IsOpen) { device.Open(); } break; } if (device == null || !device.IsOpen) { return(false); } DataStreamList dataStreamList = device.DataStreams; dataStreamList.Refresh(); foreach (KeyValuePair <string, BGAPI2.DataStream> dataStreamPair in dataStreamList) { if (string.IsNullOrEmpty(dataStreamPair.Key)) { continue; } dataStream = dataStreamPair.Value; dataStream.Open(); break; } if (dataStream == null) { CloseDevice(); return(false); } // Use buffers internal to the API. bufferList = dataStream.BufferList; int countBuffers = 4; for (int i = 0; i < countBuffers; i++) { BGAPI2.Buffer buffer = new BGAPI2.Buffer(); bufferList.Add(buffer); //ulong memSize = buffer.MemSize; //log.DebugFormat("Buffer mem size: {0}", memSize); } // Make buffers available to the Baumer producer. if (bufferList != null && bufferList.Count == countBuffers) { foreach (KeyValuePair <string, BGAPI2.Buffer> bufferPair in bufferList) { bufferPair.Value.QueueBuffer(); } } opened = true; } catch (Exception e) { log.ErrorFormat("Failed to open device. {0}", e); DiscardBuffers(); CloseDataStream(); CloseDevice(); } return(opened); }