Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Benoit Rousselle
bliss
Commits
9dc5e5c7
Commit
9dc5e5c7
authored
Jul 03, 2017
by
Sebastien Petitdemange
Committed by
Emmanuel Papillon
Jul 03, 2017
Browse files
musst: fixed synchronization due to variable list initialization.
parent
a93780e6
Changes
1
Hide whitespace changes
Inline
Side-by-side
bliss/scanning/acquisition/musst.py
View file @
9dc5e5c7
...
...
@@ -8,6 +8,7 @@
from
..chain
import
AcquisitionDevice
,
AcquisitionChannel
from
bliss.common.event
import
dispatcher
import
gevent
from
gevent
import
event
import
numpy
class
MusstAcquisitionDevice
(
AcquisitionDevice
):
...
...
@@ -36,7 +37,9 @@ class MusstAcquisitionDevice(AcquisitionDevice):
self
.
next_vars
=
None
self
.
_iter_index
=
0
self
.
_ready_flag
=
True
self
.
_ready_event
=
event
.
Event
()
def
__iter__
(
self
):
if
isinstance
(
self
.
vars
,(
list
,
tuple
)):
vars_iter
=
iter
(
self
.
vars
)
...
...
@@ -58,24 +61,34 @@ class MusstAcquisitionDevice(AcquisitionDevice):
for
var_name
,
value
in
self
.
next_vars
.
iteritems
():
self
.
musst
.
putget
(
"VAR %s %s"
%
(
var_name
,
value
))
self
.
_ready_flag
=
True
def
start
(
self
):
self
.
musst
.
run
()
def
stop
(
self
):
self
.
musst
.
ABORT
def
wait_ready
(
self
):
while
not
self
.
_ready_flag
:
self
.
_ready_event
.
wait
()
self
.
_ready_event
.
clear
()
def
reading
(
self
):
last_read_event
=
0
while
self
.
musst
.
STATE
==
self
.
musst
.
RUN_STATE
:
new_read_event
=
self
.
_send_data
(
last_read_event
)
if
new_read_event
!=
last_read_event
:
last_read_event
=
new_read_event
gevent
.
sleep
(
100e-6
)
# be able to ABORT the musst card
else
:
gevent
.
sleep
(
10e-3
)
# relax a little bit.
self
.
_send_data
(
last_read_event
)
# final send
try
:
while
self
.
musst
.
STATE
==
self
.
musst
.
RUN_STATE
:
new_read_event
=
self
.
_send_data
(
last_read_event
)
if
new_read_event
!=
last_read_event
:
last_read_event
=
new_read_event
gevent
.
sleep
(
100e-6
)
# be able to ABORT the musst card
else
:
gevent
.
sleep
(
10e-3
)
# relax a little bit.
self
.
_send_data
(
last_read_event
)
# final send
finally
:
self
.
_ready_flag
=
True
self
.
_ready_event
.
set
()
def
_send_data
(
self
,
last_read_event
):
data
=
self
.
musst
.
get_data
(
len
(
self
.
channels
),
last_read_event
)
if
data
.
size
>
0
:
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment