Thanks Attila & hlipka. Sorry for the delay in replying.
Yes, hlipka, that's what I ended up doing. The signal I was monitoring has allot of noise, so I was worried about logging too much garbage, and I might have trouble locating the signal.
But I learned that the Logic Analyzer can be triggered, and configured to write a log file only when being triggered - that helped allot. So I was able to trigger, then write the file.
I created a .NET C# Console application to read the file, and used Reactive Extensions to crush the stream into a bursts of 1's & zero's, something like this:
var acquisition = Samples.ToObservable(NewThreadScheduler.Default)
.DistinctUntilChanged(s => s.Value) // Filter out any adjacent high/lows, stream will alternate now.
.SkipWhile(s => s.Value != 0) // Make sure the first item is a zero, so we can calculate low durations.
.Buffer(2) // Convert single stream into stream of pairs, each having a high then low reading.
.Where(p => p.Count > 1) // Make sure entire stream is just pairs, drop the last if it is a singleton.
.Select(p => p.Time - p.Time) // Convert the high/low pairs, into a single measurement of the low duration.
.SkipWhile(d => d >= PREAMBLE_LOW_DURATION) // Ignore any pulses before the preamble.
.TakeWhile(d => d < PREAMBLE_LOW_DURATION) // Truncate the readings after the next preable.
.Select(d => d < _onesThreashold ? SHORT_SYMBOL : LONG_SYMBOL) // Differentiate between long and short pulses, code as 0/1.
.Scan((a, b) => a + b) // Concatinate bits into string (bits are reversed, LSB first).
.TakeLast(1) // The stream will only have 1 element, take that.
.ToArray(); // Convert to simple array. Didn't find a way to just return the first/only element of a stream.
Got a nice output, and created a list of samples that I could analyze.
Still, I think it would be cool to be able to trigger a script from the Logic Analyzer, can this be done?