PicoScope 7 Software
Available on Windows, Mac and Linux
Code: Select all
Note: _readReceived is defined as Action
public async void Start(uint numberOfReadingsPerSecond)
{
try
{
var usForBlock = (uint) 1000000 ;
short[] channels = {1, 2, 3, 4, 5, 6};
var status = _pico.SetInterval(ref usForBlock, numberOfReadingsPerSecond, channels, 6);
status = _pico.Run(numberOfReadingsPerSecond, enPL1000Method.STREAM);
IsRunning = true;
while (true)
{
if (!IsRunning)
{
break;
}
short isReady = 0;
while (isReady==0)
{
_pico.Ready(out isReady);
}
var values = new short[channels.Length * numberOfReadingsPerSecond];
var numberOfValues = (ushort) (numberOfReadingsPerSecond);
status = _pico.GetValues(values, ref numberOfValues, out var overflow, out var triggerIndex);
if (numberOfValues > 0)
{
Debug.WriteLine($"1:{values[0]},2:{values[1]},3:{values[2]},4:{values[3]},5:{values[4]},6:{values[5]}");
}
if ((uint) status == StatusCodes.PICO_OK)
{
if (numberOfValues > 0)
{
_readReceived?.Invoke(values);
}
}
else
{
var message = status.ToStatusCodeMessage();
Stop();
await _logger.Log(new PicoException(message));
Error?.Invoke(this, message);
return;
}
}
}
catch (Exception e)
{
Stop();
await _logger.Log(e);
}
}