Giter VIP home page Giter VIP logo

areadetector / adperkinelmer Goto Github PK

View Code? Open in Web Editor NEW
6.0 18.0 8.0 29.18 MB

An EPICS areaDetector driver for the flat-panel amorphous silicon detectors from PerkinElmer (iow Varex). The driver is based upon the XISL library provided by PerkinElmer. It only runs on Microsoft Windows and supports both 32-bit and 64-bit versions of Windows.

Home Page: https://areadetector.github.io/areaDetector/ADPerkinElmer/PerkinElmerDoc.html

Makefile 3.83% C++ 50.96% C 43.39% Batchfile 1.83%
perkinelmer areadetector epics varex

adperkinelmer's Introduction

adperkinelmer's People

Contributors

markrivers avatar prjemian avatar timmmooney avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adperkinelmer's Issues

Problem with rapidly stopping, setting AcquireTime, and starting detector

Ji Li at NSLS-II has found a problem

We experienced a problem when changing exposure time for our Perkin Elmer detector in software. 
The procedure of the software is:

1.	Set Acquire=0
2.	Set AcquireTime=new_value
3.	Set Acquire=1

The program hung up at step 3 and acquisition was not enabled. 
It turned out that setting AcquireTime doesn’t finish immediately. 
After letting the program sleep for 3 seconds (the value we’re currently using, 
haven’t tried other values yet) after step 2, 
it can continue and enable the detector for acquisition. 
Is it possible for the program to be notified, 
or we can read some status to decide whether such parameter writing is completed? 

I studied the driver and found that the problem cannot be that setting AcquireTime takes a long time to complete, as Ji Li guessed above. When changing the AcquireTime in step 2 it calls the writeFloat64 method in the driver. When AcquireTime is changed writeFloat does not actually do anything except store the value in the parameter library and set a flag called acquireSettingsChanged. It does not actually change the acquire time in the camera until acquisition is started, at which point the acquireSetup() function is called which actually makes the calls to the SDK to set the AcquireTime and other parameters.

I was able to reproduce the problem with this little IDL test program to test with our PE 1621.

pro test_perkin_elmer_1621, acquire_time
  prefix = '13PEL1:cam1:'
  t = caput(prefix + 'Acquire', 0)
  wait, .1
  t = caput(prefix + 'AcquireTime', acquire_time)
  t = caput(prefix + 'Acquire', 1)
end

This does what Ji Li was doing:

  • Set ADcquire=0
  • Set AcquireTime to the value passed to this function
  • Set Acquire=1

I found that if I ran this program without the wait, .1 line (which sleeps for 0.1 second) then it behaved as Ji Li said hanging the driver. By adding the wait, .1 it seems to work reliably. Note that I am waiting after step 1, not step 2.

I also tested putting the 0.1 second wait after setting the AcquireTime (step 2) rather than after setting Acquire=0 (step 1). That also works for me.

This appears to be a bug in the driver.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.