Computers
Blog | Computers > Sequencing UI

Designing a decent UI for a sequencer control program

Another day lost in the lab because of stupid problems with the sequencer. This is driving me mad ! So I am starting to note down a few ideas I have to design proper sequencer control program. These are mostly notes to myself, but if I put them on my website/blog I wont loose them.

Events are organized in a tree not a list

Event timing can be specified relative or absolute. Using only absolute fails very quickly. Using only relative (to the last event) is OK, but is quite limiting.

I think the best way to organise events is to put them in a tree, each beeing specified relatively to there father node. The leafs of the tree could be the actual channel changes.

Maybe a Gantt chart would be a great way of representing this, but there is no common widget for a Gantt chart, where as Python has a nice tree widget through pyface.

Channels need to translate their parameters in experimental data

What if I have a shutter, and I cannot remembers whether it is NO or NC ? And it actually has a opening and a closing delay ? When I am coding a sequence I do not want to have to worry about this. I want to be able to say: "I want the shutter close at this precise instant". The code in charge of processing the sequence should be able to translate this into the actual parameters sent to the shutter. This means each channel should take have a function that has a prototype looking like this:

(experimental_value, experimental_time) =  translate(old_value, new_value, time)

The reason why this function needs to take the old_value and the new_value is that it can do some magic taking in account the value of the change (for instance compensating for a rise time larger than a fall time).

Use common computer debugging tricks

For instance allow for "stop points" to pause the sequencer at some point of the sequence. This allows to check its state, channel by channel.

Return to Top     Page last modified Sat Mar 17 18:57:28 2007.     Created by Gaël Varoquaux with rest2web
Best viewed with firefox, or any browser that respects standards.