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;
        }
Exemple #2
0
        /// <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);
        }