使用侦听器时查看哪个像素已更改的最快方法

问题描述

我正在尝试使用stem获得每个扫描像素上的EDS光谱。 我正在使用EDsstartAcquisition( 2048,10,fexposure*2,1)命令, 我已将以下简单的侦听器对象附加到所示的一维光谱图像中:

string messagemap = "data_value_changed:MyImageAction"  
    Class MyListenerClass1
    {
    String event_desc;

    MyListenerClass1(Object self); //Result("\n");
    ~MyListenerClass1(Object self);// Result("\n");
    
        
        Void MyImageAction(Object self,Number e_fl,Image Img)
        {   
        ImageGetEventMap().DeconstructEventFlags( e_fl,event_desc )
        Result(GetTime(1)+": Image message : " + event_desc + " 0x" + Binary(e_fl) + "\n" ) 
        }
    }

ListenerID1 = EDSIm.ImageAddEventListener( Listener1,messagemap)

由于这里是速度的问题,所以我想尝试一下EDS采集的连续模式。但随后,我将需要收听哪些计数属于每个扫描像素。以下主题How to getting acquired frames at full speed ? - Image Event Listener does not seem to be executing after every event显示了如何收听图像的最后一个像素变化。但是,在每个事件中直接查看一维频谱的哪个部分发生变化的最快方法是什么?无需遍历每一片...

提前谢谢!

解决方法

每当a)释放图像储物柜(确保对内存的单次访问的对象),或b)在存储库中进行特定的更新调用时,就会触发图像的 data_value_changed 。代码。

这样,当获取累积EDS频谱时,整个阵列将被“锁定”,然后被修改(在一个或多个位置上),然后被“更新”。没有有关阵列修改位置的具体信息。

因此,找出频谱变化的唯一方法是将“之前”的副本与“现在”的副本进行比较-效率不高。