Beispiel #1
0
        public void GenerateColorMapping()
        {
            int channelNum = m_config.GetChannelNum();

            for (int i = 0; i < channelNum; i++)
            {
                CHAN_ID id             = (CHAN_ID)Enum.ToObject(typeof(CHAN_ID), i);
                Color   colorReference = m_config.GetChannelColorReference(id);
                CImage.CreateColorMapping(colorReference, ref m_colorMappingArr[i]);
            }
        }
Beispiel #2
0
        private void UpdateApdImageDataHandler()
        {
            int xSampleCountPerLine = m_config.GetScanXPoints();
            int scanRows            = m_config.GetScanStrategy() == SCAN_STRATEGY.Z_BIDIRECTION ? m_params.ScanRows * 2 : m_params.ScanRows;

            int index;

            while (m_scanning)
            {
                if (m_scanData.ApdConvertQueueSize() == 0)
                {
                    continue;
                }

                if (!m_scanData.DequeueApdConvertData(out ApdSampleData convertData))
                {
                    Logger.Info(string.Format("dequeue convert data failed."));
                    continue;
                }

                byte[] bgrData = m_scanData.ScanImage.BGRData[convertData.ChannelIndex];
                byte[,] mapping = m_params.ColorMappingArr[convertData.ChannelIndex];

                index = xSampleCountPerLine * convertData.Line;

                Array.Copy(convertData.NSamples, 0, m_scanData.ScanImage.Data[convertData.ChannelIndex], index, xSampleCountPerLine);

                index = index * 3;
                CImage.IntToBGR24(convertData.NSamples, ref bgrData, index, mapping);

                if (m_scanData.GetImageLine() < convertData.Line || m_scanData.GetImageFrame() < convertData.Frame)
                {
                    m_scanData.SetImageFrame(convertData.Frame);
                    m_scanData.SetImageLine(convertData.Line);
                }

                if (convertData.Line + 1 == scanRows)
                {
                    Logger.Info(string.Format("channel[{0}] update image data: frame[{1}], line[{2}].", convertData.ChannelIndex, m_scanData.ScanImage.Frame, m_scanData.ScanImage.Line));
                }
            }
            Logger.Info(string.Format("scan task[{0}|{1}] stop, finish update image data.", m_taskId, m_taskName));
        }